/*
 * Copyright (c) 2004, PostgreSQL Global Development Group
 * See the LICENSE file in the project root for more information.
 */

package org.postgresql;

import org.postgresql.util.DriverInfo;
import org.postgresql.util.GT;
import org.postgresql.util.PSQLException;
import org.postgresql.util.PSQLState;

import java.sql.DriverPropertyInfo;
import java.util.Properties;

All connection parameters that can be either set in JDBC URL, in Driver properties or in datasource setters.
/** * All connection parameters that can be either set in JDBC URL, in Driver properties or in * datasource setters. */
public enum PGProperty {
Database name to connect to (may be specified directly in the JDBC URL).
/** * Database name to connect to (may be specified directly in the JDBC URL). */
PG_DBNAME("PGDBNAME", null, "Database name to connect to (may be specified directly in the JDBC URL)", true),
Hostname of the PostgreSQL server (may be specified directly in the JDBC URL).
/** * Hostname of the PostgreSQL server (may be specified directly in the JDBC URL). */
PG_HOST("PGHOST", null, "Hostname of the PostgreSQL server (may be specified directly in the JDBC URL)", false),
Port of the PostgreSQL server (may be specified directly in the JDBC URL).
/** * Port of the PostgreSQL server (may be specified directly in the JDBC URL). */
PG_PORT("PGPORT", null, "Port of the PostgreSQL server (may be specified directly in the JDBC URL)"),
Username to connect to the database as.
/** * Username to connect to the database as. */
USER("user", null, "Username to connect to the database as.", true),
Password to use when authenticating.
/** * Password to use when authenticating. */
PASSWORD("password", null, "Password to use when authenticating.", false),
Force use of a particular protocol version when connecting, if set, disables protocol version fallback.
/** * Force use of a particular protocol version when connecting, if set, disables protocol version * fallback. */
PROTOCOL_VERSION("protocolVersion", null, "Force use of a particular protocol version when connecting, currently only version 3 is supported.", false, "3"),
Specify 'options' connection initialization parameter. The value of this parameter may contain spaces and other special characters or their URL representation.
/** * Specify 'options' connection initialization parameter. * The value of this parameter may contain spaces and other special characters or their URL representation. */
OPTIONS("options", null, "Specify 'options' connection initialization parameter."),

Logger level of the driver. Allowed values: OFF, DEBUG or TRACE.

This enable the Logger of the driver based on the following mapping of levels:

  • FINE -> DEBUG
  • FINEST -> TRACE

NOTE: The recommended approach to enable java.util.logging is using a logging.properties configuration file with the property -Djava.util.logging.config.file=myfile or if your are using an application server you should use the appropriate logging subsystem.

/** * <p>Logger level of the driver. Allowed values: {@code OFF}, {@code DEBUG} or {@code TRACE}.</p> * * <p>This enable the {@link java.util.logging.Logger} of the driver based on the following mapping * of levels:</p> * <ul> * <li>FINE -&gt; DEBUG</li> * <li>FINEST -&gt; TRACE</li> * </ul> * * <p><b>NOTE:</b> The recommended approach to enable java.util.logging is using a * {@code logging.properties} configuration file with the property * {@code -Djava.util.logging.config.file=myfile} or if your are using an application server * you should use the appropriate logging subsystem.</p> */
LOGGER_LEVEL("loggerLevel", null, "Logger level of the driver", false, "OFF", "DEBUG", "TRACE"),

File name output of the Logger, if set, the Logger will use a FileHandler to write to a specified file. If the parameter is not set or the file can't be created the ConsoleHandler will be used instead.

Parameter should be use together with LOGGER_LEVEL

/** * <p>File name output of the Logger, if set, the Logger will use a * {@link java.util.logging.FileHandler} to write to a specified file. If the parameter is not set * or the file can't be created the {@link java.util.logging.ConsoleHandler} will be used instead.</p> * * <p>Parameter should be use together with {@link PGProperty#LOGGER_LEVEL}</p> */
LOGGER_FILE("loggerFile", null, "File name output of the Logger"),
Sets the default threshold for enabling server-side prepare. A value of -1 stands for forceBinary
/** * Sets the default threshold for enabling server-side prepare. A value of {@code -1} stands for * forceBinary */
PREPARE_THRESHOLD("prepareThreshold", "5", "Statement prepare threshold. A value of {@code -1} stands for forceBinary"),
Specifies the maximum number of entries in cache of prepared statements. A value of 0 disables the cache.
/** * Specifies the maximum number of entries in cache of prepared statements. A value of {@code 0} * disables the cache. */
PREPARED_STATEMENT_CACHE_QUERIES("preparedStatementCacheQueries", "256", "Specifies the maximum number of entries in per-connection cache of prepared statements. A value of {@code 0} disables the cache."),
Specifies the maximum size (in megabytes) of the prepared statement cache. A value of 0 disables the cache.
/** * Specifies the maximum size (in megabytes) of the prepared statement cache. A value of {@code 0} * disables the cache. */
PREPARED_STATEMENT_CACHE_SIZE_MIB("preparedStatementCacheSizeMiB", "5", "Specifies the maximum size (in megabytes) of a per-connection prepared statement cache. A value of {@code 0} disables the cache."),
Specifies the maximum number of fields to be cached per connection. A value of 0 disables the cache.
/** * Specifies the maximum number of fields to be cached per connection. A value of {@code 0} disables the cache. */
DATABASE_METADATA_CACHE_FIELDS("databaseMetadataCacheFields", "65536", "Specifies the maximum number of fields to be cached per connection. A value of {@code 0} disables the cache."),
Specifies the maximum size (in megabytes) of fields to be cached per connection. A value of 0 disables the cache.
/** * Specifies the maximum size (in megabytes) of fields to be cached per connection. A value of {@code 0} disables the cache. */
DATABASE_METADATA_CACHE_FIELDS_MIB("databaseMetadataCacheFieldsMiB", "5", "Specifies the maximum size (in megabytes) of fields to be cached per connection. A value of {@code 0} disables the cache."),
Default parameter for Statement.getFetchSize(). A value of 0 means that need fetch all rows at once
/** * Default parameter for {@link java.sql.Statement#getFetchSize()}. A value of {@code 0} means * that need fetch all rows at once */
DEFAULT_ROW_FETCH_SIZE("defaultRowFetchSize", "0", "Positive number of rows that should be fetched from the database when more rows are needed for ResultSet by each fetch iteration"),
Use binary format for sending and receiving data if possible.
/** * Use binary format for sending and receiving data if possible. */
BINARY_TRANSFER("binaryTransfer", "true", "Use binary format for sending and receiving data if possible"),
Puts this connection in read-only mode.
/** * Puts this connection in read-only mode. */
READ_ONLY("readOnly", "false", "Puts this connection in read-only mode"),
Comma separated list of types to enable binary transfer. Either OID numbers or names
/** * Comma separated list of types to enable binary transfer. Either OID numbers or names */
BINARY_TRANSFER_ENABLE("binaryTransferEnable", "", "Comma separated list of types to enable binary transfer. Either OID numbers or names"),
Comma separated list of types to disable binary transfer. Either OID numbers or names. Overrides values in the driver default set and values set with binaryTransferEnable.
/** * Comma separated list of types to disable binary transfer. Either OID numbers or names. * Overrides values in the driver default set and values set with binaryTransferEnable. */
BINARY_TRANSFER_DISABLE("binaryTransferDisable", "", "Comma separated list of types to disable binary transfer. Either OID numbers or names. Overrides values in the driver default set and values set with binaryTransferEnable."),
Bind String to either unspecified or varchar. Default is varchar for 8.0+ backends.
/** * Bind String to either {@code unspecified} or {@code varchar}. Default is {@code varchar} for * 8.0+ backends. */
STRING_TYPE("stringtype", null, "The type to bind String parameters as (usually 'varchar', 'unspecified' allows implicit casting to other types)", false, "unspecified", "varchar"),
Specifies the length to return for types of unknown length.
/** * Specifies the length to return for types of unknown length. */
UNKNOWN_LENGTH("unknownLength", Integer.toString(Integer.MAX_VALUE), "Specifies the length to return for types of unknown length"),
When connections that are not explicitly closed are garbage collected, log the stacktrace from the opening of the connection to trace the leak source.
/** * When connections that are not explicitly closed are garbage collected, log the stacktrace from * the opening of the connection to trace the leak source. */
LOG_UNCLOSED_CONNECTIONS("logUnclosedConnections", "false", "When connections that are not explicitly closed are garbage collected, log the stacktrace from the opening of the connection to trace the leak source"),
Enable optimization that disables column name sanitiser.
/** * Enable optimization that disables column name sanitiser. */
DISABLE_COLUMN_SANITISER("disableColumnSanitiser", "false", "Enable optimization that disables column name sanitiser"),
Control use of SSL: empty or true values imply sslmode==verify-full
/** * Control use of SSL: empty or {@code true} values imply {@code sslmode==verify-full} */
SSL("ssl", null, "Control use of SSL (any non-null value causes SSL to be required)"),
Parameter governing the use of SSL. The allowed values are disable, allow, prefer, require, verify-ca, verify-full. If ssl property is empty or set to true it implies verify-full. Default mode is "require"
/** * Parameter governing the use of SSL. The allowed values are {@code disable}, {@code allow}, * {@code prefer}, {@code require}, {@code verify-ca}, {@code verify-full}. * If {@code ssl} property is empty or set to {@code true} it implies {@code verify-full}. * Default mode is "require" */
SSL_MODE("sslmode", null, "Parameter governing the use of SSL", false, "disable", "allow", "prefer", "require", "verify-ca", "verify-full"),
Classname of the SSL Factory to use (instance of javax.net.ssl.SSLSocketFactory).
/** * Classname of the SSL Factory to use (instance of {@code javax.net.ssl.SSLSocketFactory}). */
SSL_FACTORY("sslfactory", null, "Provide a SSLSocketFactory class when using SSL."),
The String argument to give to the constructor of the SSL Factory.
Deprecated:use ..Factory(Properties) constructor.
/** * The String argument to give to the constructor of the SSL Factory. * @deprecated use {@code ..Factory(Properties)} constructor. */
@Deprecated SSL_FACTORY_ARG("sslfactoryarg", null, "Argument forwarded to constructor of SSLSocketFactory class."),
Classname of the SSL HostnameVerifier to use (instance of javax.net.ssl.HostnameVerifier).
/** * Classname of the SSL HostnameVerifier to use (instance of {@code * javax.net.ssl.HostnameVerifier}). */
SSL_HOSTNAME_VERIFIER("sslhostnameverifier", null, "A class, implementing javax.net.ssl.HostnameVerifier that can verify the server"),
File containing the SSL Certificate. Default will be the file postgresql.crt in $HOME/.postgresql (*nix) or %APPDATA%\postgresql (windows).
/** * File containing the SSL Certificate. Default will be the file {@code postgresql.crt} in {@code * $HOME/.postgresql} (*nix) or {@code %APPDATA%\postgresql} (windows). */
SSL_CERT("sslcert", null, "The location of the client's SSL certificate"),
File containing the SSL Key. Default will be the file postgresql.pk8 in $HOME/.postgresql (*nix) or %APPDATA%\postgresql (windows).
/** * File containing the SSL Key. Default will be the file {@code postgresql.pk8} in {@code * $HOME/.postgresql} (*nix) or {@code %APPDATA%\postgresql} (windows). */
SSL_KEY("sslkey", null, "The location of the client's PKCS#8 SSL key"),
File containing the root certificate when validating server (sslmode = verify-ca or verify-full). Default will be the file root.crt in $HOME/.postgresql (*nix) or %APPDATA%\postgresql (windows).
/** * File containing the root certificate when validating server ({@code sslmode} = {@code * verify-ca} or {@code verify-full}). Default will be the file {@code root.crt} in {@code * $HOME/.postgresql} (*nix) or {@code %APPDATA%\postgresql} (windows). */
SSL_ROOT_CERT("sslrootcert", null, "The location of the root certificate for authenticating the server."),
The SSL password to use in the default CallbackHandler.
/** * The SSL password to use in the default CallbackHandler. */
SSL_PASSWORD("sslpassword", null, "The password for the client's ssl key (ignored if sslpasswordcallback is set)"),
The classname instantiating javax.security.auth.callback.CallbackHandler to use.
/** * The classname instantiating {@code javax.security.auth.callback.CallbackHandler} to use. */
SSL_PASSWORD_CALLBACK("sslpasswordcallback", null, "A class, implementing javax.security.auth.callback.CallbackHandler that can handle PassworCallback for the ssl password."),
Enable or disable TCP keep-alive. The default is false.
/** * Enable or disable TCP keep-alive. The default is {@code false}. */
TCP_KEEP_ALIVE("tcpKeepAlive", "false", "Enable or disable TCP keep-alive. The default is {@code false}."),
Specify how long to wait for establishment of a database connection. The timeout is specified in seconds.
/** * Specify how long to wait for establishment of a database connection. The timeout is specified * in seconds. */
LOGIN_TIMEOUT("loginTimeout", "0", "Specify how long to wait for establishment of a database connection."),

The timeout value used for socket connect operations. If connecting to the server takes longer than this value, the connection is broken.

The timeout is specified in seconds and a value of zero means that it is disabled.

/** * <p>The timeout value used for socket connect operations. If connecting to the server takes longer * than this value, the connection is broken.</p> * * <p>The timeout is specified in seconds and a value of zero means that it is disabled.</p> */
CONNECT_TIMEOUT("connectTimeout", "10", "The timeout value used for socket connect operations."),
The timeout value used for socket read operations. If reading from the server takes longer than this value, the connection is closed. This can be used as both a brute force global query timeout and a method of detecting network problems. The timeout is specified in seconds and a value of zero means that it is disabled.
/** * The timeout value used for socket read operations. If reading from the server takes longer than * this value, the connection is closed. This can be used as both a brute force global query * timeout and a method of detecting network problems. The timeout is specified in seconds and a * value of zero means that it is disabled. */
SOCKET_TIMEOUT("socketTimeout", "0", "The timeout value used for socket read operations."),
Cancel command is sent out of band over its own connection, so cancel message can itself get stuck. This property controls "connect timeout" and "socket timeout" used for cancel commands. The timeout is specified in seconds. Default value is 10 seconds.
/** * Cancel command is sent out of band over its own connection, so cancel message can itself get * stuck. * This property controls "connect timeout" and "socket timeout" used for cancel commands. * The timeout is specified in seconds. Default value is 10 seconds. */
CANCEL_SIGNAL_TIMEOUT("cancelSignalTimeout", "10", "The timeout that is used for sending cancel command."),
Socket factory used to create socket. A null value, which is the default, means system default.
/** * Socket factory used to create socket. A null value, which is the default, means system default. */
SOCKET_FACTORY("socketFactory", null, "Specify a socket factory for socket creation"),
The String argument to give to the constructor of the Socket Factory.
Deprecated:use ..Factory(Properties) constructor.
/** * The String argument to give to the constructor of the Socket Factory. * @deprecated use {@code ..Factory(Properties)} constructor. */
@Deprecated SOCKET_FACTORY_ARG("socketFactoryArg", null, "Argument forwarded to constructor of SocketFactory class."),
Socket read buffer size (SO_RECVBUF). A value of -1, which is the default, means system default.
/** * Socket read buffer size (SO_RECVBUF). A value of {@code -1}, which is the default, means system * default. */
RECEIVE_BUFFER_SIZE("receiveBufferSize", "-1", "Socket read buffer size"),
Socket write buffer size (SO_SNDBUF). A value of -1, which is the default, means system default.
/** * Socket write buffer size (SO_SNDBUF). A value of {@code -1}, which is the default, means system * default. */
SEND_BUFFER_SIZE("sendBufferSize", "-1", "Socket write buffer size"),
Assume the server is at least that version.
/** * Assume the server is at least that version. */
ASSUME_MIN_SERVER_VERSION("assumeMinServerVersion", null, "Assume the server is at least that version"),
The application name (require server version >= 9.0).
/** * The application name (require server version &gt;= 9.0). */
APPLICATION_NAME("ApplicationName", DriverInfo.DRIVER_NAME, "Name of the Application (backend >= 9.0)"),
Flag to enable/disable obtaining a GSS credential via JAAS login before authenticating. Useful if setting system property javax.security.auth.useSubjectCredsOnly=false or using native GSS with system property sun.security.jgss.native=true
/** * Flag to enable/disable obtaining a GSS credential via JAAS login before authenticating. * Useful if setting system property javax.security.auth.useSubjectCredsOnly=false * or using native GSS with system property sun.security.jgss.native=true */
JAAS_LOGIN("jaasLogin", "true", "Login with JAAS before doing GSSAPI authentication"),
Specifies the name of the JAAS system or application login configuration.
/** * Specifies the name of the JAAS system or application login configuration. */
JAAS_APPLICATION_NAME("jaasApplicationName", null, "Specifies the name of the JAAS system or application login configuration."),
The Kerberos service name to use when authenticating with GSSAPI. This is equivalent to libpq's PGKRBSRVNAME environment variable.
/** * The Kerberos service name to use when authenticating with GSSAPI. This is equivalent to libpq's * PGKRBSRVNAME environment variable. */
KERBEROS_SERVER_NAME("kerberosServerName", null, "The Kerberos service name to use when authenticating with GSSAPI."),
Use SPNEGO in SSPI authentication requests.
/** * Use SPNEGO in SSPI authentication requests. */
USE_SPNEGO("useSpnego", "false", "Use SPNEGO in SSPI authentication requests"),
Force one of
  • SSPI (Windows transparent single-sign-on)
  • GSSAPI (Kerberos, via JSSE)
to be used when the server requests Kerberos or SSPI authentication.
/** * Force one of * <ul> * <li>SSPI (Windows transparent single-sign-on)</li> * <li>GSSAPI (Kerberos, via JSSE)</li> * </ul> * to be used when the server requests Kerberos or SSPI authentication. */
GSS_LIB("gsslib", "auto", "Force SSSPI or GSSAPI", false, "auto", "sspi", "gssapi"),
Specifies the name of the SSPI service class that forms the service class part of the SPN. The default, POSTGRES, is almost always correct.
/** * Specifies the name of the SSPI service class that forms the service class part of the SPN. The * default, {@code POSTGRES}, is almost always correct. */
SSPI_SERVICE_CLASS("sspiServiceClass", "POSTGRES", "The Windows SSPI service class for SPN"),
When using the V3 protocol the driver monitors changes in certain server configuration parameters that should not be touched by end users. The client_encoding setting is set by the driver and should not be altered. If the driver detects a change it will abort the connection.
/** * When using the V3 protocol the driver monitors changes in certain server configuration * parameters that should not be touched by end users. The {@code client_encoding} setting is set * by the driver and should not be altered. If the driver detects a change it will abort the * connection. */
ALLOW_ENCODING_CHANGES("allowEncodingChanges", "false", "Allow for changes in client_encoding"),
Specify the schema to be set in the search-path. This schema will be used to resolve unqualified object names used in statements over this connection.
/** * Specify the schema to be set in the search-path. This schema will be used to resolve * unqualified object names used in statements over this connection. */
CURRENT_SCHEMA("currentSchema", null, "Specify the schema to be set in the search-path"), TARGET_SERVER_TYPE("targetServerType", "any", "Specifies what kind of server to connect", false, "any", "master", "slave", "secondary", "preferSlave", "preferSecondary"), LOAD_BALANCE_HOSTS("loadBalanceHosts", "false", "If disabled hosts are connected in the given order. If enabled hosts are chosen randomly from the set of suitable candidates"), HOST_RECHECK_SECONDS("hostRecheckSeconds", "10", "Specifies period (seconds) after which the host status is checked again in case it has changed"),

Specifies which mode is used to execute queries to database: simple means ('Q' execute, no parse, no bind, text mode only), extended means always use bind/execute messages, extendedForPrepared means extended for prepared statements only, extendedCacheEverything means use extended protocol and try cache every statement (including Statement.execute(String sql)) in a query cache.

This mode is meant for debugging purposes and/or for cases when extended protocol cannot be used (e.g. logical replication protocol)

/** * <p>Specifies which mode is used to execute queries to database: simple means ('Q' execute, no parse, no bind, text mode only), * extended means always use bind/execute messages, extendedForPrepared means extended for prepared statements only, * extendedCacheEverything means use extended protocol and try cache every statement (including Statement.execute(String sql)) in a query cache.</p> * * <p>This mode is meant for debugging purposes and/or for cases when extended protocol cannot be used (e.g. logical replication protocol)</p> */
PREFER_QUERY_MODE("preferQueryMode", "extended", "Specifies which mode is used to execute queries to database: simple means ('Q' execute, no parse, no bind, text mode only), " + "extended means always use bind/execute messages, extendedForPrepared means extended for prepared statements only, " + "extendedCacheEverything means use extended protocol and try cache every statement (including Statement.execute(String sql)) in a query cache.", false, "extended", "extendedForPrepared", "extendedCacheEverything", "simple"),
Specifies what the driver should do if a query fails. In autosave=always mode, JDBC driver sets a savepoint before each query, and rolls back to that savepoint in case of failure. In autosave=never mode (default), no savepoint dance is made ever. In autosave=conservative mode, savepoint is set for each query, however the rollback is done only for rare cases like 'cached statement cannot change return type' or 'statement XXX is not valid' so JDBC driver rollsback and retries
/** * Specifies what the driver should do if a query fails. In {@code autosave=always} mode, JDBC driver sets a savepoint before each query, * and rolls back to that savepoint in case of failure. In {@code autosave=never} mode (default), no savepoint dance is made ever. * In {@code autosave=conservative} mode, savepoint is set for each query, however the rollback is done only for rare cases * like 'cached statement cannot change return type' or 'statement XXX is not valid' so JDBC driver rollsback and retries */
AUTOSAVE("autosave", "never", "Specifies what the driver should do if a query fails. In autosave=always mode, JDBC driver sets a savepoint before each query, " + "and rolls back to that savepoint in case of failure. In autosave=never mode (default), no savepoint dance is made ever. " + "In autosave=conservative mode, safepoint is set for each query, however the rollback is done only for rare cases" + " like 'cached statement cannot change return type' or 'statement XXX is not valid' so JDBC driver rollsback and retries", false, "always", "never", "conservative"), /** * */ CLEANUP_SAVEPOINTS("cleanupSavepoints", "false","Determine whether SAVEPOINTS used in AUTOSAVE will be released per query or not", false, "true", "false"),
Configure optimization to enable batch insert re-writing.
/** * Configure optimization to enable batch insert re-writing. */
REWRITE_BATCHED_INSERTS("reWriteBatchedInserts", "false", "Enable optimization to rewrite and collapse compatible INSERT statements that are batched."),

Connection parameter passed in the startup message. This parameter accepts two values; "true" and "database". Passing "true" tells the backend to go into walsender mode, wherein a small set of replication commands can be issued instead of SQL statements. Only the simple query protocol can be used in walsender mode. Passing "database" as the value instructs walsender to connect to the database specified in the dbname parameter, which will allow the connection to be used for logical replication from that database.

Parameter should be use together with ASSUME_MIN_SERVER_VERSION with parameter >= 9.4 (backend >= 9.4)

/** * <p>Connection parameter passed in the startup message. This parameter accepts two values; "true" * and "database". Passing "true" tells the backend to go into walsender mode, wherein a small set * of replication commands can be issued instead of SQL statements. Only the simple query protocol * can be used in walsender mode. Passing "database" as the value instructs walsender to connect * to the database specified in the dbname parameter, which will allow the connection to be used * for logical replication from that database.</p> * <p>Parameter should be use together with {@link PGProperty#ASSUME_MIN_SERVER_VERSION} with * parameter &gt;= 9.4 (backend &gt;= 9.4)</p> */
REPLICATION("replication", null, "Connection parameter passed in startup message, one of 'true' or 'database' " + "Passing 'true' tells the backend to go into walsender mode, " + "wherein a small set of replication commands can be issued instead of SQL statements. " + "Only the simple query protocol can be used in walsender mode. " + "Passing 'database' as the value instructs walsender to connect " + "to the database specified in the dbname parameter, " + "which will allow the connection to be used for logical replication " + "from that database. " + "(backend >= 9.4)"); private final String name; private final String defaultValue; private final boolean required; private final String description; private final String[] choices; PGProperty(String name, String defaultValue, String description) { this(name, defaultValue, description, false); } PGProperty(String name, String defaultValue, String description, boolean required) { this(name, defaultValue, description, required, (String[]) null); } PGProperty(String name, String defaultValue, String description, boolean required, String... choices) { this.name = name; this.defaultValue = defaultValue; this.required = required; this.description = description; this.choices = choices; }
Returns the name of the connection parameter. The name is the key that must be used in JDBC URL or in Driver properties
Returns:the name of the connection parameter
/** * Returns the name of the connection parameter. The name is the key that must be used in JDBC URL * or in Driver properties * * @return the name of the connection parameter */
public String getName() { return name; }
Returns the default value for this connection parameter.
Returns:the default value for this connection parameter or null
/** * Returns the default value for this connection parameter. * * @return the default value for this connection parameter or null */
public String getDefaultValue() { return defaultValue; }
Returns the available values for this connection parameter.
Returns:the available values for this connection parameter or null
/** * Returns the available values for this connection parameter. * * @return the available values for this connection parameter or null */
public String[] getChoices() { return choices; }
Returns the value of the connection parameters according to the given Properties or the default value.
Params:
  • properties – properties to take actual value from
Returns:evaluated value for this connection parameter
/** * Returns the value of the connection parameters according to the given {@code Properties} or the * default value. * * @param properties properties to take actual value from * @return evaluated value for this connection parameter */
public String get(Properties properties) { return properties.getProperty(name, defaultValue); }
Set the value for this connection parameter in the given Properties.
Params:
  • properties – properties in which the value should be set
  • value – value for this connection parameter
/** * Set the value for this connection parameter in the given {@code Properties}. * * @param properties properties in which the value should be set * @param value value for this connection parameter */
public void set(Properties properties, String value) { if (value == null) { properties.remove(name); } else { properties.setProperty(name, value); } }
Return the boolean value for this connection parameter in the given Properties.
Params:
  • properties – properties to take actual value from
Returns:evaluated value for this connection parameter converted to boolean
/** * Return the boolean value for this connection parameter in the given {@code Properties}. * * @param properties properties to take actual value from * @return evaluated value for this connection parameter converted to boolean */
public boolean getBoolean(Properties properties) { return Boolean.valueOf(get(properties)); }
Return the int value for this connection parameter in the given Properties. Prefer the use of getInt(Properties) anywhere you can throw an SQLException.
Params:
  • properties – properties to take actual value from
Throws:
Returns:evaluated value for this connection parameter converted to int
/** * Return the int value for this connection parameter in the given {@code Properties}. Prefer the * use of {@link #getInt(Properties)} anywhere you can throw an {@link java.sql.SQLException}. * * @param properties properties to take actual value from * @return evaluated value for this connection parameter converted to int * @throws NumberFormatException if it cannot be converted to int. */
public int getIntNoCheck(Properties properties) { String value = get(properties); return Integer.parseInt(value); }
Return the int value for this connection parameter in the given Properties.
Params:
  • properties – properties to take actual value from
Throws:
Returns:evaluated value for this connection parameter converted to int
/** * Return the int value for this connection parameter in the given {@code Properties}. * * @param properties properties to take actual value from * @return evaluated value for this connection parameter converted to int * @throws PSQLException if it cannot be converted to int. */
public int getInt(Properties properties) throws PSQLException { String value = get(properties); try { return Integer.parseInt(value); } catch (NumberFormatException nfe) { throw new PSQLException(GT.tr("{0} parameter value must be an integer but was: {1}", getName(), value), PSQLState.INVALID_PARAMETER_VALUE, nfe); } }
Return the Integer value for this connection parameter in the given Properties.
Params:
  • properties – properties to take actual value from
Throws:
Returns:evaluated value for this connection parameter converted to Integer or null
/** * Return the {@code Integer} value for this connection parameter in the given {@code Properties}. * * @param properties properties to take actual value from * @return evaluated value for this connection parameter converted to Integer or null * @throws PSQLException if unable to parse property as integer */
public Integer getInteger(Properties properties) throws PSQLException { String value = get(properties); if (value == null) { return null; } try { return Integer.parseInt(value); } catch (NumberFormatException nfe) { throw new PSQLException(GT.tr("{0} parameter value must be an integer but was: {1}", getName(), value), PSQLState.INVALID_PARAMETER_VALUE, nfe); } }
Set the boolean value for this connection parameter in the given Properties.
Params:
  • properties – properties in which the value should be set
  • value – boolean value for this connection parameter
/** * Set the boolean value for this connection parameter in the given {@code Properties}. * * @param properties properties in which the value should be set * @param value boolean value for this connection parameter */
public void set(Properties properties, boolean value) { properties.setProperty(name, Boolean.toString(value)); }
Set the int value for this connection parameter in the given Properties.
Params:
  • properties – properties in which the value should be set
  • value – int value for this connection parameter
/** * Set the int value for this connection parameter in the given {@code Properties}. * * @param properties properties in which the value should be set * @param value int value for this connection parameter */
public void set(Properties properties, int value) { properties.setProperty(name, Integer.toString(value)); }
Test whether this property is present in the given Properties.
Params:
  • properties – set of properties to check current in
Returns:true if the parameter is specified in the given properties
/** * Test whether this property is present in the given {@code Properties}. * * @param properties set of properties to check current in * @return true if the parameter is specified in the given properties */
public boolean isPresent(Properties properties) { return getSetString(properties) != null; }
Convert this connection parameter and the value read from the given Properties into a DriverPropertyInfo.
Params:
  • properties – properties to take actual value from
Returns:a DriverPropertyInfo representing this connection parameter
/** * Convert this connection parameter and the value read from the given {@code Properties} into a * {@code DriverPropertyInfo}. * * @param properties properties to take actual value from * @return a DriverPropertyInfo representing this connection parameter */
public DriverPropertyInfo toDriverPropertyInfo(Properties properties) { DriverPropertyInfo propertyInfo = new DriverPropertyInfo(name, get(properties)); propertyInfo.required = required; propertyInfo.description = description; propertyInfo.choices = choices; return propertyInfo; } public static PGProperty forName(String name) { for (PGProperty property : PGProperty.values()) { if (property.getName().equals(name)) { return property; } } return null; }
Return the property if exists but avoiding the default. Allowing the caller to detect the lack of a property.
Params:
  • properties – properties bundle
Returns:the value of a set property
/** * Return the property if exists but avoiding the default. Allowing the caller to detect the lack * of a property. * * @param properties properties bundle * @return the value of a set property */
public String getSetString(Properties properties) { Object o = properties.get(name); if (o instanceof String) { return (String) o; } return null; } }