Class PgConnection
- java.lang.Object
-
- org.postgresql.jdbc.PgConnection
-
- All Implemented Interfaces:
java.lang.AutoCloseable
,java.sql.Connection
,java.sql.Wrapper
,BaseConnection
,PGConnection
public class PgConnection extends java.lang.Object implements BaseConnection
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description class
PgConnection.AbortCommand
-
Field Summary
Fields Modifier and Type Field Description protected int
defaultFetchSize
Default fetch size for statement.protected boolean
forcebinary
protected java.sql.DatabaseMetaData
metadata
protected int
prepareThreshold
protected java.util.Map<java.lang.String,java.lang.Class<?>>
typemap
The current type mappings.
-
Constructor Summary
Constructors Constructor Description PgConnection(HostSpec[] hostSpecs, java.lang.String user, java.lang.String database, java.util.Properties info, java.lang.String url)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected void
abort()
void
abort(java.util.concurrent.Executor executor)
void
addDataType(java.lang.String type, java.lang.Class<? extends PGobject> klass)
This allows client code to add a handler for one of org.postgresql's more unique data types.void
addDataType(java.lang.String type, java.lang.String name)
This allows client code to add a handler for one of org.postgresql's more unique data types.void
addTimerTask(java.util.TimerTask timerTask, long milliSeconds)
Schedule a TimerTask for later execution.void
addWarning(java.sql.SQLWarning warn)
This adds a warning to the warning chain.boolean
binaryTransferSend(int oid)
Returns true if value for the given oid should be sent using binary transfer.void
cancelQuery()
Cancel the current query executing on this connection.protected void
checkClosed()
void
clearWarnings()
void
close()
Note: even thoughStatement
is automatically closed when it is garbage collected, it is better to close it explicitly to lower resource consumption.void
commit()
java.sql.Array
createArrayOf(java.lang.String typeName, java.lang.Object elements)
Creates anArray
wrapping elements.java.sql.Array
createArrayOf(java.lang.String typeName, java.lang.Object[] elements)
java.sql.Blob
createBlob()
java.sql.Clob
createClob()
java.sql.NClob
createNClob()
CachedQuery
createQuery(java.lang.String sql, boolean escapeProcessing, boolean isParameterized, java.lang.String... columnNames)
<T> T
createQueryObject(java.lang.Class<T> ifc)
java.sql.SQLXML
createSQLXML()
java.sql.Statement
createStatement()
java.sql.Statement
createStatement(int resultSetType, int resultSetConcurrency)
java.sql.Statement
createStatement(int resultSetType, int resultSetConcurrency, int resultSetHoldability)
java.sql.Struct
createStruct(java.lang.String typeName, java.lang.Object[] attributes)
protected TypeInfo
createTypeInfo(BaseConnection conn, int unknownLength)
byte[]
encodeString(java.lang.String str)
Encode a string using the database's client_encoding (usually UTF8, but can vary on older server versions).java.lang.String
escapeIdentifier(java.lang.String identifier)
Return the given string suitably quoted to be used as an identifier in an SQL statement string.java.lang.String
escapeLiteral(java.lang.String literal)
Return the given string suitably quoted to be used as a string literal in an SQL statement string.java.lang.String
escapeString(java.lang.String str)
Escapes a string for use as string-literal within an SQL command.java.sql.ResultSet
execSQLQuery(java.lang.String s)
Execute a SQL query that returns a single resultset.java.sql.ResultSet
execSQLQuery(java.lang.String s, int resultSetType, int resultSetConcurrency)
void
execSQLUpdate(java.lang.String s)
Execute a SQL query that does not return results.protected void
finalize()
Overrides finalize().boolean
getAutoCommit()
AutoSave
getAutosave()
Connection configuration regarding automatic per-query savepoints.int
getBackendPID()
Return the process ID (PID) of the backend server process handling this connection.java.lang.String
getCatalog()
java.util.Properties
getClientInfo()
java.lang.String
getClientInfo(java.lang.String name)
CopyManager
getCopyAPI()
This returns the COPY API for the current connection.java.lang.String
getCursorName()
getCursorName gets the cursor name.java.lang.String
getDBVersionNumber()
Get server version number.int
getDefaultFetchSize()
Get the default fetch size for statements created from this connection.Encoding
getEncoding()
Fastpath
getFastpathAPI()
This returns the Fastpath API for the current connection.LruCache<FieldMetadata.Key,FieldMetadata>
getFieldMetadataCache()
Return metadata cache for given connection.boolean
getForceBinary()
boolean
getHideUnprivilegedObjects()
int
getHoldability()
protected java.lang.String
getIsolationLevelName(int level)
LargeObjectManager
getLargeObjectAPI()
This returns the LargeObject API for the current connection.java.util.logging.Logger
getLogger()
java.sql.DatabaseMetaData
getMetaData()
int
getNetworkTimeout()
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.java.lang.Object
getObject(java.lang.String type, java.lang.String value, byte[] byteValue)
Construct and return an appropriate object for the given type and value.java.lang.String
getParameterStatus(java.lang.String parameterName)
Shorthand for getParameterStatuses().get(...) .java.util.Map<java.lang.String,java.lang.String>
getParameterStatuses()
Returns the current values of all parameters reported by the server.PreferQueryMode
getPreferQueryMode()
Returns the query mode for this connection.int
getPrepareThreshold()
Get the default server-side prepare reuse threshold for statements created from this connection.int
getProtocolVersion()
QueryExecutor
getQueryExecutor()
Get the QueryExecutor implementation for this connection.PGReplicationConnection
getReplicationAPI()
ReplicationProtocol
getReplicationProtocol()
Internal protocol for work with physical and logical replication.java.lang.String
getSchema()
int
getServerMajorVersion()
Get server major version.int
getServerMinorVersion()
Get server minor version.boolean
getStandardConformingStrings()
Returns whether the server treats string-literals according to the SQL standard or if it uses traditional PostgreSQL escaping rules.boolean
getStringVarcharFlag()
TimestampUtils
getTimestampUtils()
int
getTransactionIsolation()
TransactionState
getTransactionState()
Get the current transaction state of this connection.TypeInfo
getTypeInfo()
java.util.Map<java.lang.String,java.lang.Class<?>>
getTypeMap()
java.lang.String
getURL()
We are required to bring back certain information by the DatabaseMetaData class.java.lang.String
getUserName()
Method getUserName() brings back the User Name (again, we saved it).java.sql.SQLWarning
getWarnings()
boolean
haveMinimumServerVersion(int ver)
Check if we have at least a particular server version.boolean
haveMinimumServerVersion(Version ver)
Check if we have at least a particular server version.boolean
hintReadOnly()
Indicates if statements to backend should be hinted as read only.boolean
isClosed()
boolean
isColumnSanitiserDisabled()
Return whether to disable column name sanitation.boolean
isReadOnly()
boolean
isValid(int timeout)
boolean
isWrapperFor(java.lang.Class<?> iface)
protected java.sql.Array
makeArray(int oid, java.lang.String fieldString)
protected java.sql.Blob
makeBlob(long oid)
protected java.sql.Clob
makeClob(long oid)
protected java.sql.SQLXML
makeSQLXML()
java.lang.String
nativeSQL(java.lang.String sql)
java.sql.CallableStatement
prepareCall(java.lang.String sql)
java.sql.CallableStatement
prepareCall(java.lang.String sql, int resultSetType, int resultSetConcurrency)
java.sql.CallableStatement
prepareCall(java.lang.String sql, int resultSetType, int resultSetConcurrency, int resultSetHoldability)
java.sql.PreparedStatement
prepareStatement(java.lang.String sql)
java.sql.PreparedStatement
prepareStatement(java.lang.String sql, int autoGeneratedKeys)
java.sql.PreparedStatement
prepareStatement(java.lang.String sql, int[] columnIndexes)
java.sql.PreparedStatement
prepareStatement(java.lang.String sql, int resultSetType, int resultSetConcurrency)
java.sql.PreparedStatement
prepareStatement(java.lang.String sql, int resultSetType, int resultSetConcurrency, int resultSetHoldability)
java.sql.PreparedStatement
prepareStatement(java.lang.String sql, java.lang.String[] columnNames)
void
purgeTimerTasks()
Invoke purge() on the underlying shared Timer so that internal resources will be released.void
releaseSavepoint(java.sql.Savepoint savepoint)
void
rollback()
void
rollback(java.sql.Savepoint savepoint)
void
setAutoCommit(boolean autoCommit)
void
setAutosave(AutoSave autoSave)
Configures if connection should use automatic savepoints.void
setCatalog(java.lang.String catalog)
void
setClientInfo(java.lang.String name, java.lang.String value)
void
setClientInfo(java.util.Properties properties)
void
setCursorName(java.lang.String cursor)
In SQL, a result table can be retrieved through a cursor that is named.void
setDefaultFetchSize(int fetchSize)
Set the default fetch size for statements created from this connection.void
setDisableColumnSanitiser(boolean disableColumnSanitiser)
void
setFlushCacheOnDeallocate(boolean flushCacheOnDeallocate)
By default, the connection resets statement cache in case deallocate all/discard all message is observed.void
setForceBinary(boolean newValue)
void
setHoldability(int holdability)
void
setNetworkTimeout(java.util.concurrent.Executor executor, int milliseconds)
void
setPrepareThreshold(int newThreshold)
Set the default statement reuse threshold before enabling server-side prepare.void
setReadOnly(boolean readOnly)
java.sql.Savepoint
setSavepoint()
java.sql.Savepoint
setSavepoint(java.lang.String name)
void
setSchema(java.lang.String schema)
void
setTransactionIsolation(int level)
void
setTypeMap(java.util.Map<java.lang.String,java.lang.Class<?>> map)
void
setTypeMapImpl(java.util.Map<java.lang.String,java.lang.Class<?>> map)
<T> T
unwrap(java.lang.Class<T> iface)
-
-
-
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
-
typemap
protected java.util.Map<java.lang.String,java.lang.Class<?>> typemap
The current type mappings.
-
metadata
protected java.sql.DatabaseMetaData metadata
-
-
Constructor Detail
-
PgConnection
public PgConnection(HostSpec[] hostSpecs, java.lang.String user, java.lang.String database, java.util.Properties info, java.lang.String url) throws java.sql.SQLException
- Throws:
java.sql.SQLException
-
-
Method Detail
-
createQuery
public CachedQuery createQuery(java.lang.String sql, boolean escapeProcessing, boolean isParameterized, java.lang.String... columnNames) throws java.sql.SQLException
- Specified by:
createQuery
in interfaceBaseConnection
- Throws:
java.sql.SQLException
-
setFlushCacheOnDeallocate
public void setFlushCacheOnDeallocate(boolean flushCacheOnDeallocate)
Description copied from interface:BaseConnection
By 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:
setFlushCacheOnDeallocate
in interfaceBaseConnection
- Parameters:
flushCacheOnDeallocate
- true if statement cache should be reset when "deallocate/discard" message observed
-
getTimestampUtils
public TimestampUtils getTimestampUtils()
- Specified by:
getTimestampUtils
in interfaceBaseConnection
-
createStatement
public java.sql.Statement createStatement() throws java.sql.SQLException
- Specified by:
createStatement
in interfacejava.sql.Connection
- Throws:
java.sql.SQLException
-
prepareStatement
public java.sql.PreparedStatement prepareStatement(java.lang.String sql) throws java.sql.SQLException
- Specified by:
prepareStatement
in interfacejava.sql.Connection
- Throws:
java.sql.SQLException
-
prepareCall
public java.sql.CallableStatement prepareCall(java.lang.String sql) throws java.sql.SQLException
- Specified by:
prepareCall
in interfacejava.sql.Connection
- Throws:
java.sql.SQLException
-
getTypeMap
public java.util.Map<java.lang.String,java.lang.Class<?>> getTypeMap() throws java.sql.SQLException
- Specified by:
getTypeMap
in interfacejava.sql.Connection
- Throws:
java.sql.SQLException
-
getQueryExecutor
public QueryExecutor getQueryExecutor()
Description copied from interface:BaseConnection
Get the QueryExecutor implementation for this connection.- Specified by:
getQueryExecutor
in interfaceBaseConnection
- Returns:
- the (non-null) executor
-
getReplicationProtocol
public ReplicationProtocol getReplicationProtocol()
Description copied from interface:BaseConnection
Internal 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:
getReplicationProtocol
in interfaceBaseConnection
- Returns:
- not null replication protocol
-
addWarning
public void addWarning(java.sql.SQLWarning warn)
This adds a warning to the warning chain.- Parameters:
warn
- warning to add
-
execSQLQuery
public java.sql.ResultSet execSQLQuery(java.lang.String s) throws java.sql.SQLException
Description copied from interface:BaseConnection
Execute a SQL query that returns a single resultset. Never causes a new transaction to be started regardless of the autocommit setting.- Specified by:
execSQLQuery
in interfaceBaseConnection
- Parameters:
s
- the query to execute- Returns:
- the (non-null) returned resultset
- Throws:
java.sql.SQLException
- if something goes wrong.
-
execSQLQuery
public java.sql.ResultSet execSQLQuery(java.lang.String s, int resultSetType, int resultSetConcurrency) throws java.sql.SQLException
- Specified by:
execSQLQuery
in interfaceBaseConnection
- Throws:
java.sql.SQLException
-
execSQLUpdate
public void execSQLUpdate(java.lang.String s) throws java.sql.SQLException
Description copied from interface:BaseConnection
Execute a SQL query that does not return results. Never causes a new transaction to be started regardless of the autocommit setting.- Specified by:
execSQLUpdate
in interfaceBaseConnection
- Parameters:
s
- the query to execute- Throws:
java.sql.SQLException
- if something goes wrong.
-
setCursorName
public void setCursorName(java.lang.String cursor) throws java.sql.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:
java.sql.SQLException
- if a database access error occurs
-
getCursorName
public java.lang.String getCursorName() throws java.sql.SQLException
getCursorName gets the cursor name.- Returns:
- the current cursor name
- Throws:
java.sql.SQLException
- if a database access error occurs
-
getURL
public java.lang.String getURL() throws java.sql.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:
java.sql.SQLException
- just in case...
-
getUserName
public java.lang.String getUserName() throws java.sql.SQLException
Method getUserName() brings back the User Name (again, we saved it).- Returns:
- the user name
- Throws:
java.sql.SQLException
- just in case...
-
getFastpathAPI
public Fastpath getFastpathAPI() throws java.sql.SQLException
Description copied from interface:PGConnection
This returns the Fastpath API for the current connection.- Specified by:
getFastpathAPI
in interfacePGConnection
- Returns:
- Fastpath API for the current connection
- Throws:
java.sql.SQLException
- if something wrong happens
-
getLargeObjectAPI
public LargeObjectManager getLargeObjectAPI() throws java.sql.SQLException
Description copied from interface:PGConnection
This returns the LargeObject API for the current connection.- Specified by:
getLargeObjectAPI
in interfacePGConnection
- Returns:
- LargeObject API for the current connection
- Throws:
java.sql.SQLException
- if something wrong happens
-
getObject
public java.lang.Object getObject(java.lang.String type, java.lang.String value, byte[] byteValue) throws java.sql.SQLException
Description copied from interface:BaseConnection
Construct 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
PGobject
instance is returned.- Specified by:
getObject
in 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:
java.sql.SQLException
- if something goes wrong
-
createTypeInfo
protected TypeInfo createTypeInfo(BaseConnection conn, int unknownLength)
-
getTypeInfo
public TypeInfo getTypeInfo()
- Specified by:
getTypeInfo
in interfaceBaseConnection
-
addDataType
public void addDataType(java.lang.String type, java.lang.String name)
Description copied from interface:PGConnection
This 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:
addDataType
in interfacePGConnection
- Parameters:
type
- JDBC type namename
- class name
-
addDataType
public void addDataType(java.lang.String type, java.lang.Class<? extends PGobject> klass) throws java.sql.SQLException
Description copied from interface:PGConnection
This 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:
addDataType
in interfacePGConnection
- Parameters:
type
- the PostgreSQL type to registerklass
- the class implementing the Java representation of the type; this class must implementPGobject
).- Throws:
java.sql.SQLException
- ifklass
does not implementPGobject
).- See Also:
PGobject
-
close
public void close() throws java.sql.SQLException
Note: even thoughStatement
is automatically closed when it is garbage collected, it is better to close it explicitly to lower resource consumption.- Specified by:
close
in interfacejava.lang.AutoCloseable
- Specified by:
close
in interfacejava.sql.Connection
- Throws:
java.sql.SQLException
-
nativeSQL
public java.lang.String nativeSQL(java.lang.String sql) throws java.sql.SQLException
- Specified by:
nativeSQL
in interfacejava.sql.Connection
- Throws:
java.sql.SQLException
-
getWarnings
public java.sql.SQLWarning getWarnings() throws java.sql.SQLException
- Specified by:
getWarnings
in interfacejava.sql.Connection
- Throws:
java.sql.SQLException
-
clearWarnings
public void clearWarnings() throws java.sql.SQLException
- Specified by:
clearWarnings
in interfacejava.sql.Connection
- Throws:
java.sql.SQLException
-
setReadOnly
public void setReadOnly(boolean readOnly) throws java.sql.SQLException
- Specified by:
setReadOnly
in interfacejava.sql.Connection
- Throws:
java.sql.SQLException
-
isReadOnly
public boolean isReadOnly() throws java.sql.SQLException
- Specified by:
isReadOnly
in interfacejava.sql.Connection
- Throws:
java.sql.SQLException
-
hintReadOnly
public boolean hintReadOnly()
Description copied from interface:BaseConnection
Indicates if statements to backend should be hinted as read only.- Specified by:
hintReadOnly
in 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 java.sql.SQLException
- Specified by:
setAutoCommit
in interfacejava.sql.Connection
- Throws:
java.sql.SQLException
-
getAutoCommit
public boolean getAutoCommit() throws java.sql.SQLException
- Specified by:
getAutoCommit
in interfacejava.sql.Connection
- Throws:
java.sql.SQLException
-
commit
public void commit() throws java.sql.SQLException
- Specified by:
commit
in interfacejava.sql.Connection
- Throws:
java.sql.SQLException
-
checkClosed
protected void checkClosed() throws java.sql.SQLException
- Throws:
java.sql.SQLException
-
rollback
public void rollback() throws java.sql.SQLException
- Specified by:
rollback
in interfacejava.sql.Connection
- Throws:
java.sql.SQLException
-
getTransactionState
public TransactionState getTransactionState()
Description copied from interface:BaseConnection
Get the current transaction state of this connection.- Specified by:
getTransactionState
in interfaceBaseConnection
- Returns:
- current transaction state of this connection
-
getTransactionIsolation
public int getTransactionIsolation() throws java.sql.SQLException
- Specified by:
getTransactionIsolation
in interfacejava.sql.Connection
- Throws:
java.sql.SQLException
-
setTransactionIsolation
public void setTransactionIsolation(int level) throws java.sql.SQLException
- Specified by:
setTransactionIsolation
in interfacejava.sql.Connection
- Throws:
java.sql.SQLException
-
getIsolationLevelName
protected java.lang.String getIsolationLevelName(int level)
-
setCatalog
public void setCatalog(java.lang.String catalog) throws java.sql.SQLException
- Specified by:
setCatalog
in interfacejava.sql.Connection
- Throws:
java.sql.SQLException
-
getCatalog
public java.lang.String getCatalog() throws java.sql.SQLException
- Specified by:
getCatalog
in interfacejava.sql.Connection
- Throws:
java.sql.SQLException
-
getHideUnprivilegedObjects
public boolean getHideUnprivilegedObjects()
-
finalize
protected void finalize() throws java.lang.Throwable
Overrides 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.
- Overrides:
finalize
in classjava.lang.Object
- Throws:
java.lang.Throwable
-
getDBVersionNumber
public java.lang.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:BaseConnection
Check 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:
haveMinimumServerVersion
in 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:BaseConnection
Check 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:
haveMinimumServerVersion
in interfaceBaseConnection
- Parameters:
ver
- the server version to check- Returns:
- true if the server version is at least "ver".
-
getEncoding
public Encoding getEncoding()
- Specified by:
getEncoding
in interfaceBaseConnection
-
encodeString
public byte[] encodeString(java.lang.String str) throws java.sql.SQLException
Description copied from interface:BaseConnection
Encode 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:
encodeString
in interfaceBaseConnection
- Parameters:
str
- the string to encode- Returns:
- an encoded representation of the string
- Throws:
java.sql.SQLException
- if something goes wrong.
-
escapeString
public java.lang.String escapeString(java.lang.String str) throws java.sql.SQLException
Description copied from interface:BaseConnection
Escapes 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:
escapeString
in interfaceBaseConnection
- Parameters:
str
- a string value- Returns:
- the escaped representation of the string
- Throws:
java.sql.SQLException
- if the string contains a\0
character
-
getStandardConformingStrings
public boolean getStandardConformingStrings()
Description copied from interface:BaseConnection
Returns 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_strings
server variable.- Specified by:
getStandardConformingStrings
in interfaceBaseConnection
- Returns:
- true if the server treats string literals according to the SQL standard
- See Also:
QueryExecutor.getStandardConformingStrings()
-
isClosed
public boolean isClosed() throws java.sql.SQLException
- Specified by:
isClosed
in interfacejava.sql.Connection
- Throws:
java.sql.SQLException
-
cancelQuery
public void cancelQuery() throws java.sql.SQLException
Description copied from interface:BaseConnection
Cancel the current query executing on this connection.- Specified by:
cancelQuery
in interfaceBaseConnection
- Specified by:
cancelQuery
in interfacePGConnection
- Throws:
java.sql.SQLException
- if something goes wrong.
-
getNotifications
public PGNotification[] getNotifications() throws java.sql.SQLException
Description copied from interface:PGConnection
This 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:
getNotifications
in interfacePGConnection
- Returns:
- notifications that have been received
- Throws:
java.sql.SQLException
- if something wrong happens
-
getNotifications
public PGNotification[] getNotifications(int timeoutMillis) throws java.sql.SQLException
Description copied from interface:PGConnection
This 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:
getNotifications
in 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:
java.sql.SQLException
- if something wrong happens
-
getPrepareThreshold
public int getPrepareThreshold()
Description copied from interface:PGConnection
Get the default server-side prepare reuse threshold for statements created from this connection.- Specified by:
getPrepareThreshold
in interfacePGConnection
- Returns:
- the current threshold
-
setDefaultFetchSize
public void setDefaultFetchSize(int fetchSize) throws java.sql.SQLException
Description copied from interface:PGConnection
Set the default fetch size for statements created from this connection.- Specified by:
setDefaultFetchSize
in interfacePGConnection
- Parameters:
fetchSize
- new default fetch size- Throws:
java.sql.SQLException
- if specified negativefetchSize
parameter- See Also:
Statement.setFetchSize(int)
-
getDefaultFetchSize
public int getDefaultFetchSize()
Description copied from interface:PGConnection
Get the default fetch size for statements created from this connection.- Specified by:
getDefaultFetchSize
in 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:PGConnection
Set the default statement reuse threshold before enabling server-side prepare. SeePGStatement.setPrepareThreshold(int)
for details.- Specified by:
setPrepareThreshold
in interfacePGConnection
- Parameters:
newThreshold
- the new threshold
-
getForceBinary
public boolean getForceBinary()
-
setForceBinary
public void setForceBinary(boolean newValue)
-
setTypeMapImpl
public void setTypeMapImpl(java.util.Map<java.lang.String,java.lang.Class<?>> map) throws java.sql.SQLException
- Throws:
java.sql.SQLException
-
getLogger
public java.util.logging.Logger getLogger()
- Specified by:
getLogger
in interfaceBaseConnection
-
getProtocolVersion
public int getProtocolVersion()
-
getStringVarcharFlag
public boolean getStringVarcharFlag()
- Specified by:
getStringVarcharFlag
in interfaceBaseConnection
-
getCopyAPI
public CopyManager getCopyAPI() throws java.sql.SQLException
Description copied from interface:PGConnection
This returns the COPY API for the current connection.- Specified by:
getCopyAPI
in interfacePGConnection
- Returns:
- COPY API for the current connection
- Throws:
java.sql.SQLException
- if something wrong happens
-
binaryTransferSend
public boolean binaryTransferSend(int oid)
Description copied from interface:BaseConnection
Returns true if value for the given oid should be sent using binary transfer. False if value should be sent using text transfer.- Specified by:
binaryTransferSend
in interfaceBaseConnection
- Parameters:
oid
- The oid to check.- Returns:
- True for binary transfer, false for text transfer.
-
getBackendPID
public int getBackendPID()
Description copied from interface:PGConnection
Return the process ID (PID) of the backend server process handling this connection.- Specified by:
getBackendPID
in interfacePGConnection
- Returns:
- PID of backend server process.
-
isColumnSanitiserDisabled
public boolean isColumnSanitiserDisabled()
Description copied from interface:BaseConnection
Return whether to disable column name sanitation.- Specified by:
isColumnSanitiserDisabled
in interfaceBaseConnection
- Returns:
- true column sanitizer is disabled
-
setDisableColumnSanitiser
public void setDisableColumnSanitiser(boolean disableColumnSanitiser)
-
getPreferQueryMode
public PreferQueryMode getPreferQueryMode()
Description copied from interface:PGConnection
Returns 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:
getPreferQueryMode
in interfacePGConnection
- Returns:
- the preferred query mode
- See Also:
PreferQueryMode
-
getAutosave
public AutoSave getAutosave()
Description copied from interface:PGConnection
Connection configuration regarding automatic per-query savepoints.- Specified by:
getAutosave
in interfacePGConnection
- Returns:
- connection configuration regarding automatic per-query savepoints
- See Also:
PGProperty.AUTOSAVE
-
setAutosave
public void setAutosave(AutoSave autoSave)
Description copied from interface:PGConnection
Configures if connection should use automatic savepoints.- Specified by:
setAutosave
in interfacePGConnection
- Parameters:
autoSave
- connection configuration regarding automatic per-query savepoints- See Also:
PGProperty.AUTOSAVE
-
abort
protected void abort()
-
addTimerTask
public void addTimerTask(java.util.TimerTask timerTask, long milliSeconds)
Description copied from interface:BaseConnection
Schedule a TimerTask for later execution. The task will be scheduled with the shared Timer for this connection.- Specified by:
addTimerTask
in interfaceBaseConnection
- Parameters:
timerTask
- timer task to schedulemilliSeconds
- delay in milliseconds
-
purgeTimerTasks
public void purgeTimerTasks()
Description copied from interface:BaseConnection
Invoke purge() on the underlying shared Timer so that internal resources will be released.- Specified by:
purgeTimerTasks
in interfaceBaseConnection
-
escapeIdentifier
public java.lang.String escapeIdentifier(java.lang.String identifier) throws java.sql.SQLException
Description copied from interface:PGConnection
Return 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:
escapeIdentifier
in interfacePGConnection
- Parameters:
identifier
- input identifier- Returns:
- the escaped identifier
- Throws:
java.sql.SQLException
- if something goes wrong
-
escapeLiteral
public java.lang.String escapeLiteral(java.lang.String literal) throws java.sql.SQLException
Description copied from interface:PGConnection
Return 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:
escapeLiteral
in interfacePGConnection
- Parameters:
literal
- input literal- Returns:
- the quoted literal
- Throws:
java.sql.SQLException
- if something goes wrong
-
getFieldMetadataCache
public LruCache<FieldMetadata.Key,FieldMetadata> getFieldMetadataCache()
Description copied from interface:BaseConnection
Return metadata cache for given connection.- Specified by:
getFieldMetadataCache
in interfaceBaseConnection
- Returns:
- metadata cache
-
getReplicationAPI
public PGReplicationConnection getReplicationAPI()
- Specified by:
getReplicationAPI
in interfacePGConnection
- Returns:
- replication API for the current connection
-
createStatement
public java.sql.Statement createStatement(int resultSetType, int resultSetConcurrency, int resultSetHoldability) throws java.sql.SQLException
- Specified by:
createStatement
in interfacejava.sql.Connection
- Throws:
java.sql.SQLException
-
prepareStatement
public java.sql.PreparedStatement prepareStatement(java.lang.String sql, int resultSetType, int resultSetConcurrency, int resultSetHoldability) throws java.sql.SQLException
- Specified by:
prepareStatement
in interfacejava.sql.Connection
- Throws:
java.sql.SQLException
-
prepareCall
public java.sql.CallableStatement prepareCall(java.lang.String sql, int resultSetType, int resultSetConcurrency, int resultSetHoldability) throws java.sql.SQLException
- Specified by:
prepareCall
in interfacejava.sql.Connection
- Throws:
java.sql.SQLException
-
getMetaData
public java.sql.DatabaseMetaData getMetaData() throws java.sql.SQLException
- Specified by:
getMetaData
in interfacejava.sql.Connection
- Throws:
java.sql.SQLException
-
setTypeMap
public void setTypeMap(java.util.Map<java.lang.String,java.lang.Class<?>> map) throws java.sql.SQLException
- Specified by:
setTypeMap
in interfacejava.sql.Connection
- Throws:
java.sql.SQLException
-
makeArray
protected java.sql.Array makeArray(int oid, java.lang.String fieldString) throws java.sql.SQLException
- Throws:
java.sql.SQLException
-
makeBlob
protected java.sql.Blob makeBlob(long oid) throws java.sql.SQLException
- Throws:
java.sql.SQLException
-
makeClob
protected java.sql.Clob makeClob(long oid) throws java.sql.SQLException
- Throws:
java.sql.SQLException
-
makeSQLXML
protected java.sql.SQLXML makeSQLXML() throws java.sql.SQLException
- Throws:
java.sql.SQLException
-
createClob
public java.sql.Clob createClob() throws java.sql.SQLException
- Specified by:
createClob
in interfacejava.sql.Connection
- Throws:
java.sql.SQLException
-
createBlob
public java.sql.Blob createBlob() throws java.sql.SQLException
- Specified by:
createBlob
in interfacejava.sql.Connection
- Throws:
java.sql.SQLException
-
createNClob
public java.sql.NClob createNClob() throws java.sql.SQLException
- Specified by:
createNClob
in interfacejava.sql.Connection
- Throws:
java.sql.SQLException
-
createSQLXML
public java.sql.SQLXML createSQLXML() throws java.sql.SQLException
- Specified by:
createSQLXML
in interfacejava.sql.Connection
- Throws:
java.sql.SQLException
-
createStruct
public java.sql.Struct createStruct(java.lang.String typeName, java.lang.Object[] attributes) throws java.sql.SQLException
- Specified by:
createStruct
in interfacejava.sql.Connection
- Throws:
java.sql.SQLException
-
createArrayOf
public java.sql.Array createArrayOf(java.lang.String typeName, java.lang.Object elements) throws java.sql.SQLException
Description copied from interface:PGConnection
Creates anArray
wrapping elements. This is similar toConnection.createArrayOf(String, Object[])
, but also provides support for primitive arrays.- Specified by:
createArrayOf
in interfacePGConnection
- Parameters:
typeName
- The SQL name of the type to map the elements to. Must not benull
.elements
- The array of objects to map. Anull
value will result in anArray
representingnull
.- Returns:
- An
Array
wrapping elements. - Throws:
java.sql.SQLException
- If for some reason the array cannot be created.- See Also:
Connection.createArrayOf(String, Object[])
-
createArrayOf
public java.sql.Array createArrayOf(java.lang.String typeName, java.lang.Object[] elements) throws java.sql.SQLException
- Specified by:
createArrayOf
in interfacejava.sql.Connection
- Throws:
java.sql.SQLException
-
isValid
public boolean isValid(int timeout) throws java.sql.SQLException
- Specified by:
isValid
in interfacejava.sql.Connection
- Throws:
java.sql.SQLException
-
setClientInfo
public void setClientInfo(java.lang.String name, java.lang.String value) throws java.sql.SQLClientInfoException
- Specified by:
setClientInfo
in interfacejava.sql.Connection
- Throws:
java.sql.SQLClientInfoException
-
setClientInfo
public void setClientInfo(java.util.Properties properties) throws java.sql.SQLClientInfoException
- Specified by:
setClientInfo
in interfacejava.sql.Connection
- Throws:
java.sql.SQLClientInfoException
-
getClientInfo
public java.lang.String getClientInfo(java.lang.String name) throws java.sql.SQLException
- Specified by:
getClientInfo
in interfacejava.sql.Connection
- Throws:
java.sql.SQLException
-
getClientInfo
public java.util.Properties getClientInfo() throws java.sql.SQLException
- Specified by:
getClientInfo
in interfacejava.sql.Connection
- Throws:
java.sql.SQLException
-
createQueryObject
public <T> T createQueryObject(java.lang.Class<T> ifc) throws java.sql.SQLException
- Throws:
java.sql.SQLException
-
isWrapperFor
public boolean isWrapperFor(java.lang.Class<?> iface) throws java.sql.SQLException
- Specified by:
isWrapperFor
in interfacejava.sql.Wrapper
- Throws:
java.sql.SQLException
-
unwrap
public <T> T unwrap(java.lang.Class<T> iface) throws java.sql.SQLException
- Specified by:
unwrap
in interfacejava.sql.Wrapper
- Throws:
java.sql.SQLException
-
getSchema
public java.lang.String getSchema() throws java.sql.SQLException
- Specified by:
getSchema
in interfacejava.sql.Connection
- Throws:
java.sql.SQLException
-
setSchema
public void setSchema(java.lang.String schema) throws java.sql.SQLException
- Specified by:
setSchema
in interfacejava.sql.Connection
- Throws:
java.sql.SQLException
-
abort
public void abort(java.util.concurrent.Executor executor) throws java.sql.SQLException
- Specified by:
abort
in interfacejava.sql.Connection
- Throws:
java.sql.SQLException
-
setNetworkTimeout
public void setNetworkTimeout(java.util.concurrent.Executor executor, int milliseconds) throws java.sql.SQLException
- Specified by:
setNetworkTimeout
in interfacejava.sql.Connection
- Throws:
java.sql.SQLException
-
getNetworkTimeout
public int getNetworkTimeout() throws java.sql.SQLException
- Specified by:
getNetworkTimeout
in interfacejava.sql.Connection
- Throws:
java.sql.SQLException
-
setHoldability
public void setHoldability(int holdability) throws java.sql.SQLException
- Specified by:
setHoldability
in interfacejava.sql.Connection
- Throws:
java.sql.SQLException
-
getHoldability
public int getHoldability() throws java.sql.SQLException
- Specified by:
getHoldability
in interfacejava.sql.Connection
- Throws:
java.sql.SQLException
-
setSavepoint
public java.sql.Savepoint setSavepoint() throws java.sql.SQLException
- Specified by:
setSavepoint
in interfacejava.sql.Connection
- Throws:
java.sql.SQLException
-
setSavepoint
public java.sql.Savepoint setSavepoint(java.lang.String name) throws java.sql.SQLException
- Specified by:
setSavepoint
in interfacejava.sql.Connection
- Throws:
java.sql.SQLException
-
rollback
public void rollback(java.sql.Savepoint savepoint) throws java.sql.SQLException
- Specified by:
rollback
in interfacejava.sql.Connection
- Throws:
java.sql.SQLException
-
releaseSavepoint
public void releaseSavepoint(java.sql.Savepoint savepoint) throws java.sql.SQLException
- Specified by:
releaseSavepoint
in interfacejava.sql.Connection
- Throws:
java.sql.SQLException
-
createStatement
public java.sql.Statement createStatement(int resultSetType, int resultSetConcurrency) throws java.sql.SQLException
- Specified by:
createStatement
in interfacejava.sql.Connection
- Throws:
java.sql.SQLException
-
prepareStatement
public java.sql.PreparedStatement prepareStatement(java.lang.String sql, int resultSetType, int resultSetConcurrency) throws java.sql.SQLException
- Specified by:
prepareStatement
in interfacejava.sql.Connection
- Throws:
java.sql.SQLException
-
prepareCall
public java.sql.CallableStatement prepareCall(java.lang.String sql, int resultSetType, int resultSetConcurrency) throws java.sql.SQLException
- Specified by:
prepareCall
in interfacejava.sql.Connection
- Throws:
java.sql.SQLException
-
prepareStatement
public java.sql.PreparedStatement prepareStatement(java.lang.String sql, int autoGeneratedKeys) throws java.sql.SQLException
- Specified by:
prepareStatement
in interfacejava.sql.Connection
- Throws:
java.sql.SQLException
-
prepareStatement
public java.sql.PreparedStatement prepareStatement(java.lang.String sql, int[] columnIndexes) throws java.sql.SQLException
- Specified by:
prepareStatement
in interfacejava.sql.Connection
- Throws:
java.sql.SQLException
-
prepareStatement
public java.sql.PreparedStatement prepareStatement(java.lang.String sql, java.lang.String[] columnNames) throws java.sql.SQLException
- Specified by:
prepareStatement
in interfacejava.sql.Connection
- Throws:
java.sql.SQLException
-
getParameterStatuses
public final java.util.Map<java.lang.String,java.lang.String> getParameterStatuses()
Description copied from interface:PGConnection
Returns 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_REPORT
in the source code. Thepg_settings
view 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
DateStyle
anddatestyle
are 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)
andApplicationName
connection property. -
client_encoding
- PgJDBC always sets this toUTF8
. SeeallowEncodingChanges
connection property. DateStyle
- PgJDBC requires this to always be set toISO
standard_conforming_strings
- indirectly viaPGConnection.escapeLiteral(String)
-
TimeZone
- set from JDK timezone seeTimeZone.getDefault()
andTimeZone.setDefault(TimeZone)
integer_datetimes
IntervalStyle
server_encoding
server_version
is_superuser
session_authorization
Note that some PgJDBC operations will change server parameters automatically.
- Specified by:
getParameterStatuses
in interfacePGConnection
- Returns:
- unmodifiable map of case-insensitive parameter names to parameter values
-
-
getParameterStatus
public final java.lang.String getParameterStatus(java.lang.String parameterName)
Description copied from interface:PGConnection
Shorthand for getParameterStatuses().get(...) .- Specified by:
getParameterStatus
in interfacePGConnection
- Parameters:
parameterName
- case-insensitive parameter name- Returns:
- parameter value if defined, or null if no parameter known
- See Also:
PGConnection.getParameterStatuses()
-
-