Class PgConnection
- java.lang.Object
-
- org.postgresql.jdbc.PgConnection
-
- All Implemented Interfaces:
AutoCloseable,Connection,Wrapper,BaseConnection,PGConnection
public class PgConnection extends Object implements BaseConnection
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description classPgConnection.AbortCommand
-
Field Summary
Fields Modifier and Type Field Description protected intdefaultFetchSizeDefault fetch size for statement.protected booleanforcebinaryprotected DatabaseMetaDatametadataprotected intprepareThresholdprotected Map<String,Class<?>>typemapThe current type mappings.-
Fields inherited from interface java.sql.Connection
TRANSACTION_NONE, TRANSACTION_READ_COMMITTED, TRANSACTION_READ_UNCOMMITTED, TRANSACTION_REPEATABLE_READ, TRANSACTION_SERIALIZABLE
-
-
Constructor Summary
Constructors Constructor Description PgConnection(HostSpec[] hostSpecs, String user, String database, Properties info, String url)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected voidabort()voidabort(Executor executor)voidaddDataType(String type, Class<? extends PGobject> klass)This allows client code to add a handler for one of org.postgresql's more unique data types.voidaddDataType(String type, String name)This allows client code to add a handler for one of org.postgresql's more unique data types.voidaddTimerTask(TimerTask timerTask, long milliSeconds)Schedule a TimerTask for later execution.voidaddWarning(SQLWarning warn)This adds a warning to the warning chain.booleanbinaryTransferSend(int oid)Returns true if value for the given oid should be sent using binary transfer.voidcancelQuery()Cancel the current query executing on this connection.protected voidcheckClosed()voidclearWarnings()voidclose()Note: even thoughStatementis automatically closed when it is garbage collected, it is better to close it explicitly to lower resource consumption.voidcommit()ArraycreateArrayOf(String typeName, Object elements)Creates anArraywrapping elements.ArraycreateArrayOf(String typeName, Object[] elements)BlobcreateBlob()ClobcreateClob()NClobcreateNClob()CachedQuerycreateQuery(String sql, boolean escapeProcessing, boolean isParameterized, String... columnNames)<T> TcreateQueryObject(Class<T> ifc)SQLXMLcreateSQLXML()StatementcreateStatement()StatementcreateStatement(int resultSetType, int resultSetConcurrency)StatementcreateStatement(int resultSetType, int resultSetConcurrency, int resultSetHoldability)StructcreateStruct(String typeName, Object[] attributes)protected TypeInfocreateTypeInfo(BaseConnection conn, int unknownLength)byte[]encodeString(String str)Encode a string using the database's client_encoding (usually UTF8, but can vary on older server versions).StringescapeIdentifier(String identifier)Return the given string suitably quoted to be used as an identifier in an SQL statement string.StringescapeLiteral(String literal)Return the given string suitably quoted to be used as a string literal in an SQL statement string.StringescapeString(String str)Escapes a string for use as string-literal within an SQL command.ResultSetexecSQLQuery(String s)Execute a SQL query that returns a single resultset.ResultSetexecSQLQuery(String s, int resultSetType, int resultSetConcurrency)voidexecSQLUpdate(String s)Execute a SQL query that does not return results.protected voidfinalize()Overrides finalize().booleangetAutoCommit()AutoSavegetAutosave()Connection configuration regarding automatic per-query savepoints.intgetBackendPID()Return the process ID (PID) of the backend server process handling this connection.StringgetCatalog()PropertiesgetClientInfo()StringgetClientInfo(String name)CopyManagergetCopyAPI()This returns the COPY API for the current connection.StringgetCursorName()getCursorName gets the cursor name.StringgetDBVersionNumber()Get server version number.intgetDefaultFetchSize()Get the default fetch size for statements created from this connection.EncodinggetEncoding()FastpathgetFastpathAPI()This returns the Fastpath API for the current connection.LruCache<FieldMetadata.Key,FieldMetadata>getFieldMetadataCache()Return metadata cache for given connection.booleangetForceBinary()booleangetHideUnprivilegedObjects()intgetHoldability()protected StringgetIsolationLevelName(int level)LargeObjectManagergetLargeObjectAPI()This returns the LargeObject API for the current connection.LoggergetLogger()DatabaseMetaDatagetMetaData()intgetNetworkTimeout()PGNotification[]getNotifications()This method returns any notifications that have been received since the last call to this method.PGNotification[]getNotifications(int timeoutMillis)This method returns any notifications that have been received since the last call to this method.ObjectgetObject(String type, String value, byte[] byteValue)Construct and return an appropriate object for the given type and value.StringgetParameterStatus(String parameterName)Shorthand for getParameterStatuses().get(...) .Map<String,String>getParameterStatuses()Returns the current values of all parameters reported by the server.PreferQueryModegetPreferQueryMode()Returns the query mode for this connection.intgetPrepareThreshold()Get the default server-side prepare reuse threshold for statements created from this connection.intgetProtocolVersion()QueryExecutorgetQueryExecutor()Get the QueryExecutor implementation for this connection.PGReplicationConnectiongetReplicationAPI()ReplicationProtocolgetReplicationProtocol()Internal protocol for work with physical and logical replication.StringgetSchema()intgetServerMajorVersion()Get server major version.intgetServerMinorVersion()Get server minor version.booleangetStandardConformingStrings()Returns whether the server treats string-literals according to the SQL standard or if it uses traditional PostgreSQL escaping rules.booleangetStringVarcharFlag()TimestampUtilsgetTimestampUtils()intgetTransactionIsolation()TransactionStategetTransactionState()Get the current transaction state of this connection.TypeInfogetTypeInfo()Map<String,Class<?>>getTypeMap()StringgetURL()We are required to bring back certain information by the DatabaseMetaData class.StringgetUserName()Method getUserName() brings back the User Name (again, we saved it).SQLWarninggetWarnings()PGXmlFactoryFactorygetXmlFactoryFactory()Retrieve the factory to instantiate XML processing factories.booleanhaveMinimumServerVersion(int ver)Check if we have at least a particular server version.booleanhaveMinimumServerVersion(Version ver)Check if we have at least a particular server version.booleanhintReadOnly()Indicates if statements to backend should be hinted as read only.booleanisClosed()booleanisColumnSanitiserDisabled()Return whether to disable column name sanitation.booleanisReadOnly()booleanisValid(int timeout)booleanisWrapperFor(Class<?> iface)protected ArraymakeArray(int oid, String fieldString)protected BlobmakeBlob(long oid)protected ClobmakeClob(long oid)protected SQLXMLmakeSQLXML()StringnativeSQL(String sql)CallableStatementprepareCall(String sql)CallableStatementprepareCall(String sql, int resultSetType, int resultSetConcurrency)CallableStatementprepareCall(String sql, int resultSetType, int resultSetConcurrency, int resultSetHoldability)PreparedStatementprepareStatement(String sql)PreparedStatementprepareStatement(String sql, int autoGeneratedKeys)PreparedStatementprepareStatement(String sql, int[] columnIndexes)PreparedStatementprepareStatement(String sql, int resultSetType, int resultSetConcurrency)PreparedStatementprepareStatement(String sql, int resultSetType, int resultSetConcurrency, int resultSetHoldability)PreparedStatementprepareStatement(String sql, String[] columnNames)voidpurgeTimerTasks()Invoke purge() on the underlying shared Timer so that internal resources will be released.voidreleaseSavepoint(Savepoint savepoint)voidrollback()voidrollback(Savepoint savepoint)voidsetAutoCommit(boolean autoCommit)voidsetAutosave(AutoSave autoSave)Configures if connection should use automatic savepoints.voidsetCatalog(String catalog)voidsetClientInfo(String name, String value)voidsetClientInfo(Properties properties)voidsetCursorName(String cursor)In SQL, a result table can be retrieved through a cursor that is named.voidsetDefaultFetchSize(int fetchSize)Set the default fetch size for statements created from this connection.voidsetDisableColumnSanitiser(boolean disableColumnSanitiser)voidsetFlushCacheOnDeallocate(boolean flushCacheOnDeallocate)By default, the connection resets statement cache in case deallocate all/discard all message is observed.voidsetForceBinary(boolean newValue)voidsetHoldability(int holdability)voidsetNetworkTimeout(Executor executor, int milliseconds)voidsetPrepareThreshold(int newThreshold)Set the default statement reuse threshold before enabling server-side prepare.voidsetReadOnly(boolean readOnly)SavepointsetSavepoint()SavepointsetSavepoint(String name)voidsetSchema(String schema)voidsetTransactionIsolation(int level)voidsetTypeMap(Map<String,Class<?>> map)voidsetTypeMapImpl(Map<String,Class<?>> map)<T> Tunwrap(Class<T> iface)-
Methods inherited from class java.lang.Object
clone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface java.sql.Connection
beginRequest, endRequest, setShardingKey, setShardingKey, setShardingKeyIfValid, setShardingKeyIfValid
-
-
-
-
Field Detail
-
prepareThreshold
protected int prepareThreshold
-
defaultFetchSize
protected int defaultFetchSize
Default fetch size for statement.- See Also:
PGProperty.DEFAULT_ROW_FETCH_SIZE
-
forcebinary
protected boolean forcebinary
-
metadata
protected DatabaseMetaData metadata
-
-
Constructor Detail
-
PgConnection
public PgConnection(HostSpec[] hostSpecs, String user, String database, Properties info, String url) throws SQLException
- Throws:
SQLException
-
-
Method Detail
-
createQuery
public CachedQuery createQuery(String sql, boolean escapeProcessing, boolean isParameterized, String... columnNames) throws SQLException
- Specified by:
createQueryin interfaceBaseConnection- Throws:
SQLException
-
setFlushCacheOnDeallocate
public void setFlushCacheOnDeallocate(boolean flushCacheOnDeallocate)
Description copied from interface:BaseConnectionBy default, the connection resets statement cache in case deallocate all/discard all message is observed. This API allows to disable that feature for testing purposes.- Specified by:
setFlushCacheOnDeallocatein interfaceBaseConnection- Parameters:
flushCacheOnDeallocate- true if statement cache should be reset when "deallocate/discard" message observed
-
getTimestampUtils
public TimestampUtils getTimestampUtils()
- Specified by:
getTimestampUtilsin interfaceBaseConnection
-
createStatement
public Statement createStatement() throws SQLException
- Specified by:
createStatementin interfaceConnection- Throws:
SQLException
-
prepareStatement
public PreparedStatement prepareStatement(String sql) throws SQLException
- Specified by:
prepareStatementin interfaceConnection- Throws:
SQLException
-
prepareCall
public CallableStatement prepareCall(String sql) throws SQLException
- Specified by:
prepareCallin interfaceConnection- Throws:
SQLException
-
getTypeMap
public Map<String,Class<?>> getTypeMap() throws SQLException
- Specified by:
getTypeMapin interfaceConnection- Throws:
SQLException
-
getQueryExecutor
public QueryExecutor getQueryExecutor()
Description copied from interface:BaseConnectionGet the QueryExecutor implementation for this connection.- Specified by:
getQueryExecutorin interfaceBaseConnection- Returns:
- the (non-null) executor
-
getReplicationProtocol
public ReplicationProtocol getReplicationProtocol()
Description copied from interface:BaseConnectionInternal protocol for work with physical and logical replication. Physical replication available only since PostgreSQL version 9.1. Logical replication available only since PostgreSQL version 9.4.- Specified by:
getReplicationProtocolin interfaceBaseConnection- Returns:
- not null replication protocol
-
addWarning
public void addWarning(SQLWarning warn)
This adds a warning to the warning chain.- Parameters:
warn- warning to add
-
execSQLQuery
public ResultSet execSQLQuery(String s) throws SQLException
Description copied from interface:BaseConnectionExecute a SQL query that returns a single resultset. Never causes a new transaction to be started regardless of the autocommit setting.- Specified by:
execSQLQueryin interfaceBaseConnection- Parameters:
s- the query to execute- Returns:
- the (non-null) returned resultset
- Throws:
SQLException- if something goes wrong.
-
execSQLQuery
public ResultSet execSQLQuery(String s, int resultSetType, int resultSetConcurrency) throws SQLException
- Specified by:
execSQLQueryin interfaceBaseConnection- Throws:
SQLException
-
execSQLUpdate
public void execSQLUpdate(String s) throws SQLException
Description copied from interface:BaseConnectionExecute a SQL query that does not return results. Never causes a new transaction to be started regardless of the autocommit setting.- Specified by:
execSQLUpdatein interfaceBaseConnection- Parameters:
s- the query to execute- Throws:
SQLException- if something goes wrong.
-
setCursorName
public void setCursorName(String cursor) throws SQLException
In SQL, a result table can be retrieved through a cursor that is named. The current row of a result can be updated or deleted using a positioned update/delete statement that references the cursor name.
We do not support positioned update/delete, so this is a no-op.
- Parameters:
cursor- the cursor name- Throws:
SQLException- if a database access error occurs
-
getCursorName
public String getCursorName() throws SQLException
getCursorName gets the cursor name.- Returns:
- the current cursor name
- Throws:
SQLException- if a database access error occurs
-
getURL
public String getURL() throws SQLException
We are required to bring back certain information by the DatabaseMetaData class. These functions do that.
Method getURL() brings back the URL (good job we saved it)
- Returns:
- the url
- Throws:
SQLException- just in case...
-
getUserName
public String getUserName() throws SQLException
Method getUserName() brings back the User Name (again, we saved it).- Returns:
- the user name
- Throws:
SQLException- just in case...
-
getFastpathAPI
public Fastpath getFastpathAPI() throws SQLException
Description copied from interface:PGConnectionThis returns the Fastpath API for the current connection.- Specified by:
getFastpathAPIin interfacePGConnection- Returns:
- Fastpath API for the current connection
- Throws:
SQLException- if something wrong happens
-
getLargeObjectAPI
public LargeObjectManager getLargeObjectAPI() throws SQLException
Description copied from interface:PGConnectionThis returns the LargeObject API for the current connection.- Specified by:
getLargeObjectAPIin interfacePGConnection- Returns:
- LargeObject API for the current connection
- Throws:
SQLException- if something wrong happens
-
getObject
public Object getObject(String type, String value, byte[] byteValue) throws SQLException
Description copied from interface:BaseConnectionConstruct and return an appropriate object for the given type and value. This only considers the types registered via
PGConnection.addDataType(String, Class)andPGConnection.addDataType(String, String).If no class is registered as handling the given type, then a generic
PGobjectinstance is returned.value or byteValue must be non-null
- Specified by:
getObjectin interfaceBaseConnection- Parameters:
type- the backend typenamevalue- the type-specific string representation of the valuebyteValue- the type-specific binary representation of the value- Returns:
- an appropriate object; never null.
- Throws:
SQLException- if something goes wrong
-
createTypeInfo
protected TypeInfo createTypeInfo(BaseConnection conn, int unknownLength)
-
getTypeInfo
public TypeInfo getTypeInfo()
- Specified by:
getTypeInfoin interfaceBaseConnection
-
addDataType
public void addDataType(String type, String name)
Description copied from interface:PGConnectionThis allows client code to add a handler for one of org.postgresql's more unique data types. It is approximately equivalent toaddDataType(type, Class.forName(name)).- Specified by:
addDataTypein interfacePGConnection- Parameters:
type- JDBC type namename- class name
-
addDataType
public void addDataType(String type, Class<? extends PGobject> klass) throws SQLException
Description copied from interface:PGConnectionThis allows client code to add a handler for one of org.postgresql's more unique data types.
NOTE: This is not part of JDBC, but an extension.
The best way to use this is as follows:
... ((org.postgresql.PGConnection)myconn).addDataType("mytype", my.class.name.class); ...where myconn is an open Connection to org.postgresql.
The handling class must extend org.postgresql.util.PGobject
- Specified by:
addDataTypein interfacePGConnection- Parameters:
type- the PostgreSQL type to registerklass- the class implementing the Java representation of the type; this class must implementPGobject).- Throws:
SQLException- ifklassdoes not implementPGobject).- See Also:
PGobject
-
close
public void close() throws SQLExceptionNote: even thoughStatementis automatically closed when it is garbage collected, it is better to close it explicitly to lower resource consumption.- Specified by:
closein interfaceAutoCloseable- Specified by:
closein interfaceConnection- Throws:
SQLException
-
nativeSQL
public String nativeSQL(String sql) throws SQLException
- Specified by:
nativeSQLin interfaceConnection- Throws:
SQLException
-
getWarnings
public SQLWarning getWarnings() throws SQLException
- Specified by:
getWarningsin interfaceConnection- Throws:
SQLException
-
clearWarnings
public void clearWarnings() throws SQLException- Specified by:
clearWarningsin interfaceConnection- Throws:
SQLException
-
setReadOnly
public void setReadOnly(boolean readOnly) throws SQLException- Specified by:
setReadOnlyin interfaceConnection- Throws:
SQLException
-
isReadOnly
public boolean isReadOnly() throws SQLException- Specified by:
isReadOnlyin interfaceConnection- Throws:
SQLException
-
hintReadOnly
public boolean hintReadOnly()
Description copied from interface:BaseConnectionIndicates if statements to backend should be hinted as read only.- Specified by:
hintReadOnlyin interfaceBaseConnection- Returns:
- Indication if hints to backend (such as when transaction begins) should be read only.
- See Also:
PGProperty.READ_ONLY_MODE
-
setAutoCommit
public void setAutoCommit(boolean autoCommit) throws SQLException- Specified by:
setAutoCommitin interfaceConnection- Throws:
SQLException
-
getAutoCommit
public boolean getAutoCommit() throws SQLException- Specified by:
getAutoCommitin interfaceConnection- Throws:
SQLException
-
commit
public void commit() throws SQLException- Specified by:
commitin interfaceConnection- Throws:
SQLException
-
checkClosed
protected void checkClosed() throws SQLException- Throws:
SQLException
-
rollback
public void rollback() throws SQLException- Specified by:
rollbackin interfaceConnection- Throws:
SQLException
-
getTransactionState
public TransactionState getTransactionState()
Description copied from interface:BaseConnectionGet the current transaction state of this connection.- Specified by:
getTransactionStatein interfaceBaseConnection- Returns:
- current transaction state of this connection
-
getTransactionIsolation
public int getTransactionIsolation() throws SQLException- Specified by:
getTransactionIsolationin interfaceConnection- Throws:
SQLException
-
setTransactionIsolation
public void setTransactionIsolation(int level) throws SQLException- Specified by:
setTransactionIsolationin interfaceConnection- Throws:
SQLException
-
getIsolationLevelName
protected String getIsolationLevelName(int level)
-
setCatalog
public void setCatalog(String catalog) throws SQLException
- Specified by:
setCatalogin interfaceConnection- Throws:
SQLException
-
getCatalog
public String getCatalog() throws SQLException
- Specified by:
getCatalogin interfaceConnection- Throws:
SQLException
-
getHideUnprivilegedObjects
public boolean getHideUnprivilegedObjects()
-
finalize
protected void finalize() throws ThrowableOverrides finalize(). If called, it closes the connection.
This was done at the request of Rachel Greenham who hit a problem where multiple clients didn't close the connection, and once a fortnight enough clients were open to kill the postgres server.
-
getDBVersionNumber
public String getDBVersionNumber()
Get server version number.- Returns:
- server version number
-
getServerMajorVersion
public int getServerMajorVersion()
Get server major version.- Returns:
- server major version
-
getServerMinorVersion
public int getServerMinorVersion()
Get server minor version.- Returns:
- server minor version
-
haveMinimumServerVersion
public boolean haveMinimumServerVersion(int ver)
Description copied from interface:BaseConnectionCheck if we have at least a particular server version.
The input version is of the form xxyyzz, matching a PostgreSQL version like xx.yy.zz. So 9.0.12 is 90012.
- Specified by:
haveMinimumServerVersionin interfaceBaseConnection- Parameters:
ver- the server version to check, of the form xxyyzz eg 90401- Returns:
- true if the server version is at least "ver".
-
haveMinimumServerVersion
public boolean haveMinimumServerVersion(Version ver)
Description copied from interface:BaseConnectionCheck if we have at least a particular server version.
The input version is of the form xxyyzz, matching a PostgreSQL version like xx.yy.zz. So 9.0.12 is 90012.
- Specified by:
haveMinimumServerVersionin interfaceBaseConnection- Parameters:
ver- the server version to check- Returns:
- true if the server version is at least "ver".
-
getEncoding
public Encoding getEncoding()
- Specified by:
getEncodingin interfaceBaseConnection
-
encodeString
public byte[] encodeString(String str) throws SQLException
Description copied from interface:BaseConnectionEncode a string using the database's client_encoding (usually UTF8, but can vary on older server versions). This is used when constructing synthetic resultsets (for example, in metadata methods).- Specified by:
encodeStringin interfaceBaseConnection- Parameters:
str- the string to encode- Returns:
- an encoded representation of the string
- Throws:
SQLException- if something goes wrong.
-
escapeString
public String escapeString(String str) throws SQLException
Description copied from interface:BaseConnectionEscapes a string for use as string-literal within an SQL command. The method chooses the applicable escaping rules based on the value ofBaseConnection.getStandardConformingStrings().- Specified by:
escapeStringin interfaceBaseConnection- Parameters:
str- a string value- Returns:
- the escaped representation of the string
- Throws:
SQLException- if the string contains a\0character
-
getStandardConformingStrings
public boolean getStandardConformingStrings()
Description copied from interface:BaseConnectionReturns whether the server treats string-literals according to the SQL standard or if it uses traditional PostgreSQL escaping rules. Versions up to 8.1 always treated backslashes as escape characters in string-literals. Since 8.2, this depends on the value of thestandard_conforming_stringsserver variable.- Specified by:
getStandardConformingStringsin interfaceBaseConnection- Returns:
- true if the server treats string literals according to the SQL standard
- See Also:
QueryExecutor.getStandardConformingStrings()
-
isClosed
public boolean isClosed() throws SQLException- Specified by:
isClosedin interfaceConnection- Throws:
SQLException
-
cancelQuery
public void cancelQuery() throws SQLExceptionDescription copied from interface:BaseConnectionCancel the current query executing on this connection.- Specified by:
cancelQueryin interfaceBaseConnection- Specified by:
cancelQueryin interfacePGConnection- Throws:
SQLException- if something goes wrong.
-
getNotifications
public PGNotification[] getNotifications() throws SQLException
Description copied from interface:PGConnectionThis method returns any notifications that have been received since the last call to this method. Returns null if there have been no notifications.- Specified by:
getNotificationsin interfacePGConnection- Returns:
- notifications that have been received
- Throws:
SQLException- if something wrong happens
-
getNotifications
public PGNotification[] getNotifications(int timeoutMillis) throws SQLException
Description copied from interface:PGConnectionThis method returns any notifications that have been received since the last call to this method. Returns null if there have been no notifications. A timeout can be specified so the driver waits for notifications.- Specified by:
getNotificationsin interfacePGConnection- Parameters:
timeoutMillis- when 0, blocks forever. when > 0, blocks up to the specified number of millies or until at least one notification has been received. If more than one notification is about to be received, these will be returned in one batch.- Returns:
- notifications that have been received
- Throws:
SQLException- if something wrong happens
-
getPrepareThreshold
public int getPrepareThreshold()
Description copied from interface:PGConnectionGet the default server-side prepare reuse threshold for statements created from this connection.- Specified by:
getPrepareThresholdin interfacePGConnection- Returns:
- the current threshold
-
setDefaultFetchSize
public void setDefaultFetchSize(int fetchSize) throws SQLExceptionDescription copied from interface:PGConnectionSet the default fetch size for statements created from this connection.- Specified by:
setDefaultFetchSizein interfacePGConnection- Parameters:
fetchSize- new default fetch size- Throws:
SQLException- if specified negativefetchSizeparameter- See Also:
Statement.setFetchSize(int)
-
getDefaultFetchSize
public int getDefaultFetchSize()
Description copied from interface:PGConnectionGet the default fetch size for statements created from this connection.- Specified by:
getDefaultFetchSizein interfacePGConnection- Returns:
- current state for default fetch size
- See Also:
PGProperty.DEFAULT_ROW_FETCH_SIZE,Statement.getFetchSize()
-
setPrepareThreshold
public void setPrepareThreshold(int newThreshold)
Description copied from interface:PGConnectionSet the default statement reuse threshold before enabling server-side prepare. SeePGStatement.setPrepareThreshold(int)for details.- Specified by:
setPrepareThresholdin interfacePGConnection- Parameters:
newThreshold- the new threshold
-
getForceBinary
public boolean getForceBinary()
-
setForceBinary
public void setForceBinary(boolean newValue)
-
setTypeMapImpl
public void setTypeMapImpl(Map<String,Class<?>> map) throws SQLException
- Throws:
SQLException
-
getLogger
public Logger getLogger()
- Specified by:
getLoggerin interfaceBaseConnection
-
getProtocolVersion
public int getProtocolVersion()
-
getStringVarcharFlag
public boolean getStringVarcharFlag()
- Specified by:
getStringVarcharFlagin interfaceBaseConnection
-
getCopyAPI
public CopyManager getCopyAPI() throws SQLException
Description copied from interface:PGConnectionThis returns the COPY API for the current connection.- Specified by:
getCopyAPIin interfacePGConnection- Returns:
- COPY API for the current connection
- Throws:
SQLException- if something wrong happens
-
binaryTransferSend
public boolean binaryTransferSend(int oid)
Description copied from interface:BaseConnectionReturns true if value for the given oid should be sent using binary transfer. False if value should be sent using text transfer.- Specified by:
binaryTransferSendin interfaceBaseConnection- Parameters:
oid- The oid to check.- Returns:
- True for binary transfer, false for text transfer.
-
getBackendPID
public int getBackendPID()
Description copied from interface:PGConnectionReturn the process ID (PID) of the backend server process handling this connection.- Specified by:
getBackendPIDin interfacePGConnection- Returns:
- PID of backend server process.
-
isColumnSanitiserDisabled
public boolean isColumnSanitiserDisabled()
Description copied from interface:BaseConnectionReturn whether to disable column name sanitation.- Specified by:
isColumnSanitiserDisabledin interfaceBaseConnection- Returns:
- true column sanitizer is disabled
-
setDisableColumnSanitiser
public void setDisableColumnSanitiser(boolean disableColumnSanitiser)
-
getPreferQueryMode
public PreferQueryMode getPreferQueryMode()
Description copied from interface:PGConnectionReturns the query mode for this connection.
When running in simple query mode, certain features are not available: callable statements, partial result set fetch, bytea type, etc.
The list of supported features is subject to change.
- Specified by:
getPreferQueryModein interfacePGConnection- Returns:
- the preferred query mode
- See Also:
PreferQueryMode
-
getAutosave
public AutoSave getAutosave()
Description copied from interface:PGConnectionConnection configuration regarding automatic per-query savepoints.- Specified by:
getAutosavein interfacePGConnection- Returns:
- connection configuration regarding automatic per-query savepoints
- See Also:
PGProperty.AUTOSAVE
-
setAutosave
public void setAutosave(AutoSave autoSave)
Description copied from interface:PGConnectionConfigures if connection should use automatic savepoints.- Specified by:
setAutosavein interfacePGConnection- Parameters:
autoSave- connection configuration regarding automatic per-query savepoints- See Also:
PGProperty.AUTOSAVE
-
abort
protected void abort()
-
addTimerTask
public void addTimerTask(TimerTask timerTask, long milliSeconds)
Description copied from interface:BaseConnectionSchedule a TimerTask for later execution. The task will be scheduled with the shared Timer for this connection.- Specified by:
addTimerTaskin interfaceBaseConnection- Parameters:
timerTask- timer task to schedulemilliSeconds- delay in milliseconds
-
purgeTimerTasks
public void purgeTimerTasks()
Description copied from interface:BaseConnectionInvoke purge() on the underlying shared Timer so that internal resources will be released.- Specified by:
purgeTimerTasksin interfaceBaseConnection
-
escapeIdentifier
public String escapeIdentifier(String identifier) throws SQLException
Description copied from interface:PGConnectionReturn the given string suitably quoted to be used as an identifier in an SQL statement string. Quotes are added only if necessary (i.e., if the string contains non-identifier characters or would be case-folded). Embedded quotes are properly doubled.- Specified by:
escapeIdentifierin interfacePGConnection- Parameters:
identifier- input identifier- Returns:
- the escaped identifier
- Throws:
SQLException- if something goes wrong
-
escapeLiteral
public String escapeLiteral(String literal) throws SQLException
Description copied from interface:PGConnectionReturn the given string suitably quoted to be used as a string literal in an SQL statement string. Embedded single-quotes and backslashes are properly doubled. Note that quote_literal returns null on null input.- Specified by:
escapeLiteralin interfacePGConnection- Parameters:
literal- input literal- Returns:
- the quoted literal
- Throws:
SQLException- if something goes wrong
-
getFieldMetadataCache
public LruCache<FieldMetadata.Key,FieldMetadata> getFieldMetadataCache()
Description copied from interface:BaseConnectionReturn metadata cache for given connection.- Specified by:
getFieldMetadataCachein interfaceBaseConnection- Returns:
- metadata cache
-
getReplicationAPI
public PGReplicationConnection getReplicationAPI()
- Specified by:
getReplicationAPIin interfacePGConnection- Returns:
- replication API for the current connection
-
createStatement
public Statement createStatement(int resultSetType, int resultSetConcurrency, int resultSetHoldability) throws SQLException
- Specified by:
createStatementin interfaceConnection- Throws:
SQLException
-
prepareStatement
public PreparedStatement prepareStatement(String sql, int resultSetType, int resultSetConcurrency, int resultSetHoldability) throws SQLException
- Specified by:
prepareStatementin interfaceConnection- Throws:
SQLException
-
prepareCall
public CallableStatement prepareCall(String sql, int resultSetType, int resultSetConcurrency, int resultSetHoldability) throws SQLException
- Specified by:
prepareCallin interfaceConnection- Throws:
SQLException
-
getMetaData
public DatabaseMetaData getMetaData() throws SQLException
- Specified by:
getMetaDatain interfaceConnection- Throws:
SQLException
-
setTypeMap
public void setTypeMap(Map<String,Class<?>> map) throws SQLException
- Specified by:
setTypeMapin interfaceConnection- Throws:
SQLException
-
makeArray
protected Array makeArray(int oid, String fieldString) throws SQLException
- Throws:
SQLException
-
makeBlob
protected Blob makeBlob(long oid) throws SQLException
- Throws:
SQLException
-
makeClob
protected Clob makeClob(long oid) throws SQLException
- Throws:
SQLException
-
makeSQLXML
protected SQLXML makeSQLXML() throws SQLException
- Throws:
SQLException
-
createClob
public Clob createClob() throws SQLException
- Specified by:
createClobin interfaceConnection- Throws:
SQLException
-
createBlob
public Blob createBlob() throws SQLException
- Specified by:
createBlobin interfaceConnection- Throws:
SQLException
-
createNClob
public NClob createNClob() throws SQLException
- Specified by:
createNClobin interfaceConnection- Throws:
SQLException
-
createSQLXML
public SQLXML createSQLXML() throws SQLException
- Specified by:
createSQLXMLin interfaceConnection- Throws:
SQLException
-
createStruct
public Struct createStruct(String typeName, Object[] attributes) throws SQLException
- Specified by:
createStructin interfaceConnection- Throws:
SQLException
-
createArrayOf
public Array createArrayOf(String typeName, Object elements) throws SQLException
Description copied from interface:PGConnectionCreates anArraywrapping elements. This is similar toConnection.createArrayOf(String, Object[]), but also provides support for primitive arrays.- Specified by:
createArrayOfin interfacePGConnection- Parameters:
typeName- The SQL name of the type to map the elements to. Must not benull.elements- The array of objects to map. Anullvalue will result in anArrayrepresentingnull.- Returns:
- An
Arraywrapping elements. - Throws:
SQLException- If for some reason the array cannot be created.- See Also:
Connection.createArrayOf(String, Object[])
-
createArrayOf
public Array createArrayOf(String typeName, Object[] elements) throws SQLException
- Specified by:
createArrayOfin interfaceConnection- Throws:
SQLException
-
isValid
public boolean isValid(int timeout) throws SQLException- Specified by:
isValidin interfaceConnection- Throws:
SQLException
-
setClientInfo
public void setClientInfo(String name, String value) throws SQLClientInfoException
- Specified by:
setClientInfoin interfaceConnection- Throws:
SQLClientInfoException
-
setClientInfo
public void setClientInfo(Properties properties) throws SQLClientInfoException
- Specified by:
setClientInfoin interfaceConnection- Throws:
SQLClientInfoException
-
getClientInfo
public String getClientInfo(String name) throws SQLException
- Specified by:
getClientInfoin interfaceConnection- Throws:
SQLException
-
getClientInfo
public Properties getClientInfo() throws SQLException
- Specified by:
getClientInfoin interfaceConnection- Throws:
SQLException
-
createQueryObject
public <T> T createQueryObject(Class<T> ifc) throws SQLException
- Throws:
SQLException
-
isWrapperFor
public boolean isWrapperFor(Class<?> iface) throws SQLException
- Specified by:
isWrapperForin interfaceWrapper- Throws:
SQLException
-
unwrap
public <T> T unwrap(Class<T> iface) throws SQLException
- Specified by:
unwrapin interfaceWrapper- Throws:
SQLException
-
getSchema
public String getSchema() throws SQLException
- Specified by:
getSchemain interfaceConnection- Throws:
SQLException
-
setSchema
public void setSchema(String schema) throws SQLException
- Specified by:
setSchemain interfaceConnection- Throws:
SQLException
-
abort
public void abort(Executor executor) throws SQLException
- Specified by:
abortin interfaceConnection- Throws:
SQLException
-
setNetworkTimeout
public void setNetworkTimeout(Executor executor, int milliseconds) throws SQLException
- Specified by:
setNetworkTimeoutin interfaceConnection- Throws:
SQLException
-
getNetworkTimeout
public int getNetworkTimeout() throws SQLException- Specified by:
getNetworkTimeoutin interfaceConnection- Throws:
SQLException
-
setHoldability
public void setHoldability(int holdability) throws SQLException- Specified by:
setHoldabilityin interfaceConnection- Throws:
SQLException
-
getHoldability
public int getHoldability() throws SQLException- Specified by:
getHoldabilityin interfaceConnection- Throws:
SQLException
-
setSavepoint
public Savepoint setSavepoint() throws SQLException
- Specified by:
setSavepointin interfaceConnection- Throws:
SQLException
-
setSavepoint
public Savepoint setSavepoint(String name) throws SQLException
- Specified by:
setSavepointin interfaceConnection- Throws:
SQLException
-
rollback
public void rollback(Savepoint savepoint) throws SQLException
- Specified by:
rollbackin interfaceConnection- Throws:
SQLException
-
releaseSavepoint
public void releaseSavepoint(Savepoint savepoint) throws SQLException
- Specified by:
releaseSavepointin interfaceConnection- Throws:
SQLException
-
createStatement
public Statement createStatement(int resultSetType, int resultSetConcurrency) throws SQLException
- Specified by:
createStatementin interfaceConnection- Throws:
SQLException
-
prepareStatement
public PreparedStatement prepareStatement(String sql, int resultSetType, int resultSetConcurrency) throws SQLException
- Specified by:
prepareStatementin interfaceConnection- Throws:
SQLException
-
prepareCall
public CallableStatement prepareCall(String sql, int resultSetType, int resultSetConcurrency) throws SQLException
- Specified by:
prepareCallin interfaceConnection- Throws:
SQLException
-
prepareStatement
public PreparedStatement prepareStatement(String sql, int autoGeneratedKeys) throws SQLException
- Specified by:
prepareStatementin interfaceConnection- Throws:
SQLException
-
prepareStatement
public PreparedStatement prepareStatement(String sql, int[] columnIndexes) throws SQLException
- Specified by:
prepareStatementin interfaceConnection- Throws:
SQLException
-
prepareStatement
public PreparedStatement prepareStatement(String sql, String[] columnNames) throws SQLException
- Specified by:
prepareStatementin interfaceConnection- Throws:
SQLException
-
getParameterStatuses
public final Map<String,String> getParameterStatuses()
Description copied from interface:PGConnectionReturns the current values of all parameters reported by the server.
PostgreSQL reports values for a subset of parameters (GUCs) to the client at connect-time, then sends update messages whenever the values change during a session. PgJDBC records the latest values and exposes it to client applications via
getParameterStatuses().PgJDBC exposes individual accessors for some of these parameters as listed below. They are more backwarrds-compatible and should be preferred where possible.
Not all parameters are reported, only those marked
GUC_REPORTin the source code. Thepg_settingsview does not expose information about which parameters are reportable. PgJDBC's map will only contain the parameters the server reports values for, so you cannot use this method as a substitute for running aSHOW paramname;orSELECT current_setting('paramname');query for arbitrary parameters.Parameter names are case-insensitive and case-preserving in this map, like in PostgreSQL itself. So
DateStyleanddatestyleare the same key.As of PostgreSQL 11 the reportable parameter list, and related PgJDBC interfaces or accesors, are:
-
application_name-Connection.getClientInfo(),Connection.setClientInfo(java.util.Properties)andApplicationNameconnection property. -
client_encoding- PgJDBC always sets this toUTF8. SeeallowEncodingChangesconnection property. DateStyle- PgJDBC requires this to always be set toISOstandard_conforming_strings- indirectly viaPGConnection.escapeLiteral(String)-
TimeZone- set from JDK timezone seeTimeZone.getDefault()andTimeZone.setDefault(TimeZone) integer_datetimesIntervalStyleserver_encodingserver_versionis_superusersession_authorization
Note that some PgJDBC operations will change server parameters automatically.
- Specified by:
getParameterStatusesin interfacePGConnection- Returns:
- unmodifiable map of case-insensitive parameter names to parameter values
-
-
getParameterStatus
public final String getParameterStatus(String parameterName)
Description copied from interface:PGConnectionShorthand for getParameterStatuses().get(...) .- Specified by:
getParameterStatusin interfacePGConnection- Parameters:
parameterName- case-insensitive parameter name- Returns:
- parameter value if defined, or null if no parameter known
- See Also:
PGConnection.getParameterStatuses()
-
getXmlFactoryFactory
public PGXmlFactoryFactory getXmlFactoryFactory() throws SQLException
Description copied from interface:BaseConnectionRetrieve the factory to instantiate XML processing factories.- Specified by:
getXmlFactoryFactoryin interfaceBaseConnection- Returns:
- The factory to use to instantiate XML processing factories
- Throws:
SQLException- if the class cannot be found or instantiated.
-
-