diff --git a/CHANGES b/CHANGES index a5197dfdd..a999ec2d7 100644 --- a/CHANGES +++ b/CHANGES @@ -3,6 +3,8 @@ Version 8.0.30 + - Fix for Bug#106880 (34022110), Outdated description in connection property 'rewriteBatchedStatements'. + - Fix for Bug#34082503, CONTRIBUTING.md contains broken links. - Fix for Bug#106779 (33976245), Contribution: Fix typo in PropertyDefinitions. diff --git a/src/build/java/instrumentation/TranslateExceptions.java b/src/build/java/instrumentation/TranslateExceptions.java index 5492a6d38..608b4cb03 100644 --- a/src/build/java/instrumentation/TranslateExceptions.java +++ b/src/build/java/instrumentation/TranslateExceptions.java @@ -300,7 +300,8 @@ public static void main(String[] args) throws Exception { catchRuntimeException(clazz, clazz.getDeclaredMethod("toString", new CtClass[] {}), EXCEPTION_INTERCEPTOR_GETTER); catchRuntimeException(clazz, clazz.getDeclaredMethod("checkBounds", new CtClass[] { CtClass.intType, CtClass.intType }), EXCEPTION_INTERCEPTOR_GETTER); catchRuntimeException(clazz, clazz.getDeclaredMethod("checkReadOnlySafeStatement", new CtClass[] {}), EXCEPTION_INTERCEPTOR_GETTER); - catchRuntimeException(clazz, clazz.getDeclaredMethod("executeBatchedInserts", new CtClass[] { CtClass.intType }), EXCEPTION_INTERCEPTOR_GETTER); + catchRuntimeException(clazz, clazz.getDeclaredMethod("executeBatchWithMultiValuesClause", new CtClass[] { CtClass.intType }), + EXCEPTION_INTERCEPTOR_GETTER); catchRuntimeException(clazz, clazz.getDeclaredMethod("executeBatchSerially", new CtClass[] { CtClass.intType }), EXCEPTION_INTERCEPTOR_GETTER); catchRuntimeException(clazz, clazz.getDeclaredMethod("executeInternal", diff --git a/src/main/resources/com/mysql/cj/LocalizedErrorMessages.properties b/src/main/resources/com/mysql/cj/LocalizedErrorMessages.properties index d7e629f49..acd203033 100644 --- a/src/main/resources/com/mysql/cj/LocalizedErrorMessages.properties +++ b/src/main/resources/com/mysql/cj/LocalizedErrorMessages.properties @@ -796,209 +796,208 @@ ConnectionProperties.categoryUserDefined=User-defined properties # ConnectionProperty Descriptions # -ConnectionProperties.allowMultiQueries=Allow the use of '';'' to delimit multiple queries during one statement (true/false). Default is ''false'', and it does not affect the addBatch() and executeBatch() methods, which rely on rewriteBatchStatements instead. -ConnectionProperties.allowNANandINF=Should the driver allow NaN or +/- INF values in PreparedStatement.setDouble()? +ConnectionProperties.allowMultiQueries=Allow the use of ";" to delimit multiple queries during one statement. This option does not affect the ''addBatch()'' and ''executeBatch()'' methods, which rely on ''rewriteBatchStatements'' instead. +ConnectionProperties.allowNANandINF=Should the driver allow NaN or +/- INF values in ''PreparedStatement.setDouble()''? ConnectionProperties.allowPublicKeyRetrieval=Allows special handshake round-trip to get an RSA public key directly from server. -ConnectionProperties.allowReplicaDownConnections=By default, a replication-aware connection will fail to connect when configured replica hosts are all unavailable at initial connection. Setting this property to ''true'' allows to establish the initial connection. It won''t prevent failures when switching to replicas i.e. by setting the replication connection to read-only state. The property ''readFromSourceWhenNoReplicas'' should be used for this purpose. -ConnectionProperties.allowSourceDownConnections=By default, a replication-aware connection will fail to connect when configured source hosts are all unavailable at initial connection. Setting this property to ''true'' allows to establish the initial connection, by failing over to the replica servers, in read-only state. It won''t prevent subsequent failures when switching back to the source hosts i.e. by setting the replication connection to read/write state. +ConnectionProperties.allowReplicaDownConnections=By default, a replication-aware connection will fail to connect when configured replica hosts are all unavailable at initial connection. Setting this property to "true" allows to establish the initial connection. It won''t prevent failures when switching to replicas i.e. by setting the replication connection to read-only state. The property ''readFromSourceWhenNoReplicas'' should be used for this purpose. +ConnectionProperties.allowSourceDownConnections=By default, a replication-aware connection will fail to connect when configured source hosts are all unavailable at initial connection. Setting this property to "true" allows to establish the initial connection, by failing over to the replica servers, in read-only state. It won''t prevent subsequent failures when switching back to the source hosts i.e. by setting the replication connection to read/write state. ConnectionProperties.allowUrlInLoadLocal=Should the driver allow URLs in "LOAD DATA LOCAL INFILE ..." statements? -ConnectionProperties.allVersions=all versions -ConnectionProperties.alwaysSendSetIsolation=Should the driver always communicate with the database when Connection.setTransactionIsolation() is called? If set to false, the driver will only communicate with the database when the requested transaction isolation is different than the whichever is newer, the last value that was set via Connection.setTransactionIsolation(), or the value that was read from the server when the connection was established. Note that useLocalSessionState=true will force the same behavior as alwaysSendSetIsolation=false, regardless of how alwaysSendSetIsolation is set. -ConnectionProperties.authenticationPlugins=Comma-delimited list of classes that implement the interface com.mysql.cj.protocol.AuthenticationPlugin. These plugins will be loaded at connection initialization and can be used together with their sever-side counterparts for authenticating users, unless they are also disabled in the connection property ''disabledAuthenticationPlugins''. -ConnectionProperties.authenticationFidoCallbackHandler=Fully-qualified class name of a class implementing the interface com.mysql.cj.callback.MysqlCallbackHandler. This class will be used by the FIDO authentication plugin to obtain the authenticator data and signature required for the FIDO authentication process. See the documentation of com.mysql.cj.callback.FidoAuthenticationCallback for more details. -ConnectionProperties.autoClosePstmtStreams=Should the driver automatically call .close() on streams/readers passed as arguments via set*() methods? +ConnectionProperties.alwaysSendSetIsolation=Should the driver always communicate with the database when ''Connection.setTransactionIsolation()'' is called? If set to "false", the driver will only communicate with the database when the requested transaction isolation is different than the whichever is newer, the last value that was set via ''Connection.setTransactionIsolation()'', or the value that was read from the server when the connection was established. Note that "useLocalSessionState=true" will force the same behavior as "alwaysSendSetIsolation=false", regardless of how ''alwaysSendSetIsolation'' is set. +ConnectionProperties.authenticationPlugins=Comma-delimited list of classes that implement the interface ''com.mysql.cj.protocol.AuthenticationPlugin''. These plugins will be loaded at connection initialization and can be used together with their sever-side counterparts for authenticating users, unless they are also disabled in the connection property ''disabledAuthenticationPlugins''. +ConnectionProperties.authenticationFidoCallbackHandler=Fully-qualified class name of a class implementing the interface ''com.mysql.cj.callback.MysqlCallbackHandler''. This class will be used by the FIDO authentication plugin to obtain the authenticator data and signature required for the FIDO authentication process. See the documentation of ''com.mysql.cj.callback.FidoAuthenticationCallback'' for more details. +ConnectionProperties.autoClosePstmtStreams=Should the driver automatically call the method ''close()'' on streams/readers passed as arguments via ''set*()'' methods? ConnectionProperties.autoDeserialize=Should the driver automatically detect and de-serialize objects stored in BLOB fields? ConnectionProperties.autoGenerateTestcaseScript=Should the driver dump the SQL it is executing, including server-side prepared statements to STDERR? -ConnectionProperties.autoReconnect=Should the driver try to re-establish stale and/or dead connections? If enabled the driver will throw an exception for a queries issued on a stale or dead connection, which belong to the current transaction, but will attempt reconnect before the next query issued on the connection in a new transaction. The use of this feature is not recommended, because it has side effects related to session state and data consistency when applications don''t handle SQLExceptions properly, and is only designed to be used when you are unable to configure your application to handle SQLExceptions resulting from dead and stale connections properly. Alternatively, as a last option, investigate setting the MySQL server variable "wait_timeout" to a high value, rather than the default of 8 hours. -ConnectionProperties.autoReconnectForPools=Use a reconnection strategy appropriate for connection pools (defaults to ''false'') -ConnectionProperties.autoSlowLog=Instead of using slowQueryThreshold* to determine if a query is slow enough to be logged, maintain statistics that allow the driver to determine queries that are outside the 99th percentile? +ConnectionProperties.autoReconnect=Should the driver try to re-establish stale and/or dead connections? If enabled the driver will throw an exception for queries issued on a stale or dead connection, which belong to the current transaction, but will attempt reconnect before the next query issued on the connection in a new transaction. The use of this feature is not recommended, because it has side effects related to session state and data consistency when applications don''t handle SQLExceptions properly, and is only designed to be used when you are unable to configure your application to handle SQLExceptions resulting from dead and stale connections properly. Alternatively, as a last option, investigate setting the MySQL server variable ''wait_timeout'' to a high value, rather than the default of 8 hours. +ConnectionProperties.autoReconnectForPools=Use a reconnection strategy appropriate for connection pools? +ConnectionProperties.autoSlowLog=Instead of using ''slowQueryThreshold*'' to determine if a query is slow enough to be logged, maintain statistics that allow the driver to determine queries that are outside the 99th percentile? ConnectionProperties.blobsAreStrings=Should the driver always treat BLOBs as Strings - specifically to work around dubious metadata returned by the server for GROUP BY clauses? -ConnectionProperties.blobSendChunkSize=Chunk size to use when sending BLOB/CLOBs via ServerPreparedStatements. Note that this value cannot exceed the value of "maxAllowedPacket" and, if that is the case, then this value will be corrected automatically. -ConnectionProperties.cacheCallableStatements=Should the driver cache the parsing stage of CallableStatements -ConnectionProperties.cacheDefaultTimeZone=Caches client's default time zone. This results in better performance when dealing with time zone conversions in Date and Time data types, however it won't be aware of time zone changes if they happen at runtime. +ConnectionProperties.blobSendChunkSize=Chunk size to use when sending BLOB/CLOBs via server-prepared statements. Note that this value cannot exceed the value of ''maxAllowedPacket'' and, if that is the case, then this value will be corrected automatically. +ConnectionProperties.cacheCallableStatements=Should the driver cache the parsing stage of CallableStatements? +ConnectionProperties.cacheDefaultTimeZone=Caches client''s default time zone. This results in better performance when dealing with time zone conversions in Date and Time data types, however it won''t be aware of time zone changes if they happen at runtime. ConnectionProperties.cachePrepStmts=Should the driver cache the parsing stage of PreparedStatements of client-side prepared statements, the "check" for suitability of server-side prepared and server-side prepared statements themselves? -ConnectionProperties.cacheRSMetadata=Should the driver cache ResultSetMetaData for Statements and PreparedStatements? (Req. JDK-1.4+, true/false, default ''false'') -ConnectionProperties.cacheServerConfiguration=Should the driver cache the results of ''SHOW VARIABLES'' and ''SHOW COLLATION'' on a per-URL basis? +ConnectionProperties.cacheRSMetadata=Should the driver cache ''ResultSetMetaData'' for statements and prepared statements? +ConnectionProperties.cacheServerConfiguration=Should the driver cache the results of "SHOW VARIABLES" and "SHOW COLLATION" on a per-URL basis? ConnectionProperties.callableStmtCacheSize=If ''cacheCallableStmts'' is enabled, how many callable statements should be cached? ConnectionProperties.characterEncoding=Instructs the server to set session system variables ''character_set_client'' and ''character_set_connection'' to the default character set for the specified Java encoding and set ''collation_connection'' to the default collation for this character set. If neither this property nor the property ''connectionCollation'' is set:[CR]For Connector/J 8.0.25 and earlier, the driver will try to use the server default character set;[CR]For Connector/J 8.0.26 and later, the driver will use "utf8mb4". ConnectionProperties.characterSetResults=Instructs the server to return the data encoded with the default character set for the specified Java encoding. If not set or set to "null", the server will send data in its original character set and the driver will decode it according to the result metadata. ConnectionProperties.clientCertificateKeyStorePassword=Password for the client certificates key store. -ConnectionProperties.clientCertificateKeyStoreType=Key store type for client certificates.[CR]NULL or empty means use the default, which is "JKS". Standard key store types supported by the JVM are "JKS" and "PKCS12", your environment may have more available depending on what security products are installed and available to the JVM. -ConnectionProperties.clientCertificateKeyStoreUrl=URL for the client certificate KeyStore[CR]If not specified, the property ''fallbackToSystemKeyStore'' determines if system-wide key store is used. -ConnectionProperties.clientInfoProvider=The name of a class that implements the com.mysql.cj.jdbc.ClientInfoProvider interface in order to support JDBC-4.0''s Connection.get/setClientInfo() methods -ConnectionProperties.clobberStreamingResults=This will cause a ''streaming'' ResultSet to be automatically closed, and any outstanding data still streaming from the server to be discarded if another query is executed before all the data has been read from the server. -ConnectionProperties.clobCharacterEncoding=The character encoding to use for sending and retrieving TEXT, MEDIUMTEXT and LONGTEXT values instead of the configured connection characterEncoding -ConnectionProperties.compensateOnDuplicateKeyUpdateCounts=Should the driver compensate for the update counts of "ON DUPLICATE KEY" INSERT statements (2 = 1, 0 = 1) when using prepared statements? -ConnectionProperties.connectionAttributes=A comma-delimited list of user-defined key:value pairs (in addition to standard MySQL-defined key:value pairs) to be passed to MySQL Server for display as connection attributes in the PERFORMANCE_SCHEMA.SESSION_CONNECT_ATTRS table. Example usage: connectionAttributes=key1:value1,key2:value2 This functionality is available for use with MySQL Server version 5.6 or later only. Earlier versions of MySQL Server do not support connection attributes, causing this configuration option to be ignored. Setting connectionAttributes=none will cause connection attribute processing to be bypassed, for situations where Connection creation/initialization speed is critical. -ConnectionProperties.connectionCollation=Instructs the server to set session system variable ''collation_connection'' to the specified collation name and set ''character_set_client'' and ''character_set_connection'' to the corresponding character set. This property overrides the value of ''characterEncoding'' with the character set this collation belongs to. If neither this property nor the property ''characterEncoding'' is set:[CR]For Connector/J 8.0.25 and earlier, the driver will try to use the server default character set;[CR]For Connector/J 8.0.26 and later, the driver will use "utf8mb4" default collation. -ConnectionProperties.connectionLifecycleInterceptors=A comma-delimited list of classes that implement "com.mysql.cj.jdbc.interceptors.ConnectionLifecycleInterceptor" that should notified of connection lifecycle events (creation, destruction, commit, rollback, setting the current database and changing the autocommit mode) and potentially alter the execution of these commands. ConnectionLifecycleInterceptors are "stackable", more than one interceptor may be specified via the configuration property as a comma-delimited list, with the interceptors executed in order from left to right. -ConnectionProperties.connectionPropertiesTransform=An implementation of com.mysql.cj.conf.ConnectionPropertiesTransform that the driver will use to modify URL properties passed to the driver before attempting a connection -ConnectionProperties.connectionTimeZone=Configures the connection time zone which is used by Connector/J if conversion between the JVM default and a target time zone is needed when preserving instant temporal values.[CR]Accepts a geographic time zone name or a time zone offset from Greenwich/UTC, using a syntax ''java.time.ZoneId'' is able to parse, or one of the two logical values "LOCAL" and "SERVER". Default is "LOCAL". If set to an explicit time zone then it must be one that either the JVM or both the JVM and MySQL support. If set to "LOCAL" then the driver assumes that the connection time zone is the same as the JVM default time zone. If set to "SERVER" then the driver attempts to detect the session time zone from the values configured on the MySQL server session variables ''time_zone'' or ''system_time_zone''. The time zone detection and subsequent mapping to a Java time zone may fail due to several reasons, mostly because of time zone abbreviations being used, in which case an explicit time zone must be set or a different time zone must be configured on the server.[CR]This option itself does not set MySQL server session variable ''time_zone'' to the given value. To do that the ''forceConnectionTimeZoneToSession'' connection option must be set to "true".[CR]Please note that setting a value to ''connectionTimeZone'' in conjunction with ''forceConnectionTimeZoneToSession=false'' and ''preserveInstants=false'' has no effect since, in this case, neither this option is used to change the session time zone nor used for time zone conversions of time-based data.[CR]Former connection option ''serverTimezone'' is still valid as an alias of this one but may be deprecated in the future.[CR]See also ''forceConnectionTimeZoneToSession'' and ''preserveInstants'' for more details. -ConnectionProperties.connectTimeout=Timeout for socket connect (in milliseconds), with 0 being no timeout. Only works on JDK-1.4 or newer. Defaults to ''0''. -ConnectionProperties.continueBatchOnError=Should the driver continue processing batch commands if one statement fails. The JDBC spec allows either way (defaults to ''true''). +ConnectionProperties.clientCertificateKeyStoreType=Key store type for client certificates.[CR]Null or empty means use the default, which is "JKS". Standard key store types supported by the JVM are "JKS" and "PKCS12", your environment may have more available depending on what security providers are installed and available to the JVM. +ConnectionProperties.clientCertificateKeyStoreUrl=URL for the client certificate KeyStore.[CR]If not specified, the property ''fallbackToSystemKeyStore'' determines if system-wide key store is used. +ConnectionProperties.clientInfoProvider=The name of a class that implements the ''com.mysql.cj.jdbc.ClientInfoProvider'' interface in order to support JDBC-4.0''s ''Connection.get/setClientInfo()'' methods. +ConnectionProperties.clobberStreamingResults=This will cause a streaming result set to be automatically closed, and any outstanding data still streaming from the server to be discarded if another query is executed before all the data has been read from the server. +ConnectionProperties.clobCharacterEncoding=The character encoding to use for sending and retrieving TEXT, MEDIUMTEXT and LONGTEXT values instead of the configured connection ''characterEncoding''. +ConnectionProperties.compensateOnDuplicateKeyUpdateCounts=Should the driver compensate for the update counts of "INSERT ... ON DUPLICATE KEY UPDATE" statements (2 = 1, 0 = 1) when using prepared statements? +ConnectionProperties.connectionAttributes=A comma-delimited list of user-defined "key:value" pairs, in addition to standard MySQL-defined "key:value" pairs, to be passed to MySQL Server for display as connection attributes in the ''PERFORMANCE_SCHEMA'' tables ''session_account_connect_attrs'' and ''session_connect_attrs''. Example usage: "connectionAttributes=key1:value1,key2:value2" This functionality is available for use with MySQL Server version 5.6 or later only. Earlier versions of MySQL Server do not support connection attributes, causing this configuration option to be ignored. Setting "connectionAttributes=none" will cause connection attribute processing to be bypassed for situations where Connection creation/initialization speed is critical. +ConnectionProperties.connectionCollation=Instructs the server to set session system variable ''collation_connection'' to the specified collation name and set ''character_set_client'' and ''character_set_connection'' to the corresponding character set. This property overrides the value of ''characterEncoding'' with the character set this collation belongs to. If neither this property nor the property ''characterEncoding'' is set:[CR]For Connector/J 8.0.25 and earlier, the driver will try to use the server default character set;[CR]For Connector/J 8.0.26 and later, the driver will use utf8mb4''s default collation. +ConnectionProperties.connectionLifecycleInterceptors=A comma-delimited list of classes that implement ''com.mysql.cj.jdbc.interceptors.ConnectionLifecycleInterceptor'' that should be notified of connection lifecycle events (creation, destruction, commit, rollback, setting the current database and changing the autocommit mode) and potentially alter the execution of these commands. ''ConnectionLifecycleInterceptors'' are stackable, more than one interceptor may be specified via the configuration property as a comma-delimited list, with the interceptors executed in order from left to right. +ConnectionProperties.connectionPropertiesTransform=An implementation of ''com.mysql.cj.conf.ConnectionPropertiesTransform'' that the driver will use to modify connection string properties passed to the driver before attempting a connection. +ConnectionProperties.connectionTimeZone=Configures the connection time zone which is used by Connector/J if conversion between the JVM default and a target time zone is needed when preserving instant temporal values.[CR]Accepts a geographic time zone name or a time zone offset from Greenwich/UTC, using a syntax ''java.time.ZoneId'' is able to parse, or one of the two logical values "LOCAL" and "SERVER". Default is "LOCAL". If set to an explicit time zone then it must be one that either the JVM or both the JVM and MySQL support. If set to "LOCAL" then the driver assumes that the connection time zone is the same as the JVM default time zone. If set to "SERVER" then the driver attempts to detect the session time zone from the values configured on the MySQL server session variables ''time_zone'' or ''system_time_zone''. The time zone detection and subsequent mapping to a Java time zone may fail due to several reasons, mostly because of time zone abbreviations being used, in which case an explicit time zone must be set or a different time zone must be configured on the server.[CR]This option itself does not set MySQL server session variable ''time_zone'' to the given value. To do that the ''forceConnectionTimeZoneToSession'' connection option must be set to "true".[CR]Please note that setting a value to ''connectionTimeZone'' in conjunction with "forceConnectionTimeZoneToSession=false" and "preserveInstants=false" has no effect since, in this case, neither this option is used to change the session time zone nor used for time zone conversions of time-based data.[CR]Former connection option ''serverTimezone'' is still valid as an alias of this one but may be deprecated in the future.[CR]See also ''forceConnectionTimeZoneToSession'' and ''preserveInstants'' for more details. +ConnectionProperties.connectTimeout=Timeout for socket connect (in milliseconds), with 0 being no timeout. +ConnectionProperties.continueBatchOnError=Should the driver continue processing batch commands if one statement fails. The JDBC spec allows either way. ConnectionProperties.createDatabaseIfNotExist=Creates the database given in the URL if it doesn''t yet exist. Assumes the configured user has permissions to create databases. -ConnectionProperties.customCharsetMapping=A comma-delimited list of custom "charset:java encoding" pairs.[CR]In case the MySQL server is configured with custom character sets and ''detectCustomCollations=true'', Connector/J needs to know which Java character encoding to use for the data represented by these character sets. Example usage: ''customCharsetMapping=charset1:UTF-8,charset2:Cp1252''. -ConnectionProperties.databaseTerm=MySQL uses the term "schema" as a synonym of the term "database," while Connector/J historically takes the JDBC term "catalog" as synonymous to "database". This property sets for Connector/J which of the JDBC terms "catalog" and "schema" is used in an application to refer to a database. The property takes one of the two values CATALOG or SCHEMA and uses it to determine (1) which Connection methods can be used to set/get the current database (e.g. setCatalog() or setSchema()?), (2) which arguments can be used within the various DatabaseMetaData methods to filter results (e.g. the catalog or schemaPattern argument of getColumns()?), and (3) which fields in the ResultSet returned by DatabaseMetaData methods contain the database identification information (i.e., the TABLE_CAT or TABLE_SCHEM field in the ResultSet returned by getTables()?).[CR]If databaseTerm=CATALOG, schemaPattern for searches are ignored and calls of schema methods (like setSchema() or get Schema()) become no-ops, and vice versa. -ConnectionProperties.defaultAuthenticationPlugin=The default authentication plugin client-side protocol name or a fully qualified name of a class that implements the interface com.mysql.cj.protocol.AuthenticationPlugin. The specified authentication plugin must be either one of the built-in authentication plugins or one of the plugins listed in the property ''authenticationPlugins''. Additionally, the default authentication plugin cannot be disabled with the property ''disabledAuthenticationPlugins''. Neither an empty nor unknown plugin name or class can be set for this property.[CR]By default, Connector/J honors the server-side default authentication plugin, which is known after receiving the initial handshake packet, and falls back to this property's default value if that plugin cannot be used. However, when a value is explicitly provided to this property, Connector/J then overrides the server-side default authentication plugin and always tries first the plugin specified with this property. -ConnectionProperties.defaultFetchSize=The driver will call setFetchSize(n) with this value on all newly-created Statements -ConnectionProperties.detectCustomCollations=Should the driver detect custom charsets/collations installed on server (true/false, defaults to ''false''). If this option set to ''true'' driver gets actual charsets/collations from server each time connection establishes. This could slow down connection initialization significantly. -ConnectionProperties.disabledAuthenticationPlugins=Comma-delimited list of authentication plugins client-side protocol names or classes implementing the interface com.mysql.cj.protocol.AuthenticationPlugin. The authentication plugins listed will not be used for authenticating users and, if anyone of them is required during the authentication exchange, the connection fails. The default authentication plugin specified in the property ''defaultAuthenticationPlugin'' cannot be disabled. -ConnectionProperties.disconnectOnExpiredPasswords=If "disconnectOnExpiredPasswords" is set to "false" and password is expired then server enters "sandbox" mode and sends ERR(08001, ER_MUST_CHANGE_PASSWORD) for all commands that are not needed to set a new password until a new password is set. +ConnectionProperties.customCharsetMapping=A comma-delimited list of custom "charset:java encoding" pairs.[CR]In case the MySQL server is configured with custom character sets and "detectCustomCollations=true", Connector/J needs to know which Java character encoding to use for the data represented by these character sets. Example usage: "customCharsetMapping=charset1:UTF-8,charset2:Cp1252". +ConnectionProperties.databaseTerm=MySQL uses the term "schema" as a synonym of the term "database," while Connector/J historically takes the JDBC term "catalog" as synonymous to "database". This property sets for Connector/J which of the JDBC terms "catalog" and "schema" is used in an application to refer to a database. The property takes one of the two values "CATALOG" or "SCHEMA" and uses it to determine (1) which Connection methods can be used to set/get the current database (e.g. ''setCatalog()'' or ''setSchema()''?), (2) which arguments can be used within the various ''DatabaseMetaData'' methods to filter results (e.g. the catalog or ''schemaPattern'' argument of ''getColumns()''?), and (3) which fields in the result sets returned by ''DatabaseMetaData'' methods contain the database identification information (i.e., the ''TABLE_CAT'' or ''TABLE_SCHEM'' field in the result set returned by ''getTables()''?).[CR]If "databaseTerm=CATALOG", ''schemaPattern'' for searches are ignored and calls of schema methods (like ''setSchema()'' or get ''Schema()'') become no-ops, and vice versa. +ConnectionProperties.defaultAuthenticationPlugin=The default authentication plugin client-side protocol name or a fully qualified name of a class that implements the interface ''com.mysql.cj.protocol.AuthenticationPlugin''. The specified authentication plugin must be either one of the built-in authentication plugins or one of the plugins listed in the property ''authenticationPlugins''. Additionally, the default authentication plugin cannot be disabled with the property ''disabledAuthenticationPlugins''. Neither an empty nor unknown plugin name or class can be set for this property.[CR]By default, Connector/J honors the server-side default authentication plugin, which is known after receiving the initial handshake packet, and falls back to this property''s default value if that plugin cannot be used. However, when a value is explicitly provided to this property, Connector/J then overrides the server-side default authentication plugin and always tries first the plugin specified with this property. +ConnectionProperties.defaultFetchSize=The driver will call ''setFetchSize(n)'' with this value on all newly-created statements. +ConnectionProperties.detectCustomCollations=Should the driver detect custom charsets/collations installed on server? If this option set to "true" the driver gets actual charsets/collations from the server each time a connection establishes. This could slow down connection initialization significantly. +ConnectionProperties.disabledAuthenticationPlugins=Comma-delimited list of authentication plugins client-side protocol names or classes implementing the interface ''com.mysql.cj.protocol.AuthenticationPlugin''. The authentication plugins listed will not be used for authenticating users and, if anyone of them is required during the authentication exchange, the connection fails. The default authentication plugin specified in the property ''defaultAuthenticationPlugin'' cannot be disabled. +ConnectionProperties.disconnectOnExpiredPasswords=If ''disconnectOnExpiredPasswords'' is set to "false" and password is expired then server enters sandbox mode and sends ''ERR(08001, ER_MUST_CHANGE_PASSWORD)'' for all commands that are not needed to set a new password until a new password is set. ConnectionProperties.dnsSrv=Should the driver use the given host name to lookup for DNS SRV records and use the resulting list of hosts in a multi-host failover connection? Note that a single host name and no port must be provided when this option is enabled. -ConnectionProperties.dontCheckOnDuplicateKeyUpdateInSQL=Stops checking if every INSERT statement contains the "ON DUPLICATE KEY UPDATE" clause. As a side effect, obtaining the statement''s generated keys information will return a list where normally it wouldn''t. Also be aware that, in this case, the list of generated keys returned may not be accurate. The effect of this property is canceled if set simultaneously with ''rewriteBatchedStatements=true''. -ConnectionProperties.dontTrackOpenResources=The JDBC specification requires the driver to automatically track and close resources, however if your application doesn''t do a good job of explicitly calling close() on statements or result sets, this can cause memory leakage. Setting this property to true relaxes this constraint, and can be more memory efficient for some applications. Also the automatic closing of the Statement and current ResultSet in Statement.closeOnCompletion() and Statement.getMoreResults ([Statement.CLOSE_CURRENT_RESULT | Statement.CLOSE_ALL_RESULTS]), respectively, ceases to happen. This property automatically sets holdResultsOpenOverStatementClose=true. +ConnectionProperties.dontCheckOnDuplicateKeyUpdateInSQL=Stops checking if every INSERT statement contains the "ON DUPLICATE KEY UPDATE" clause. As a side effect, obtaining the statement''s generated keys information will return a list where normally it would not. Also be aware that, in this case, the list of generated keys returned may not be accurate. The effect of this property is canceled if set simultaneously with "rewriteBatchedStatements=true". +ConnectionProperties.dontTrackOpenResources=The JDBC specification requires the driver to automatically track and close resources, however if your application doesn''t do a good job of explicitly calling ''close()'' on statements or result sets this can cause memory leakage. Setting this property to "true" relaxes this constraint, and can be more memory efficient for some applications. Also the automatic closing of the statement and current result set in ''Statement.closeOnCompletion()'' and ''Statement.getMoreResults([Statement.CLOSE_CURRENT_RESULT | Statement.CLOSE_ALL_RESULTS])'', respectively, ceases to happen. This property automatically sets "holdResultsOpenOverStatementClose=true". ConnectionProperties.dumpQueriesOnException=Should the driver dump the contents of the query sent to the server in the message for SQLExceptions? -ConnectionProperties.elideSetAutoCommit=If using MySQL-4.1 or newer, should the driver only issue ''set autocommit=n'' queries when the server''s state doesn''t match the requested state by Connection.setAutoCommit(boolean)? -ConnectionProperties.emptyStringsConvertToZero=Should the driver allow conversions from empty string fields to numeric values of '''0''? -ConnectionProperties.emulateLocators=Should the driver emulate java.sql.Blobs with locators? With this feature enabled, the driver will delay loading the actual Blob data until the one of the retrieval methods (getInputStream(), getBytes(), and so forth) on the blob data stream has been accessed. For this to work, you must use a column alias with the value of the column to the actual name of the Blob. The feature also has the following restrictions: The SELECT that created the result set must reference only one table, the table must have a primary key; the SELECT must alias the original blob column name, specified as a string, to an alternate name; the SELECT must cover all columns that make up the primary key. +ConnectionProperties.elideSetAutoCommit=Should the driver only issue ''set autocommit=n'' queries when the server''s state doesn''t match the requested state by ''Connection.setAutoCommit(boolean)''? +ConnectionProperties.emptyStringsConvertToZero=Should the driver allow conversions from empty string fields to numeric values of "0"? +ConnectionProperties.emulateLocators=Should the driver emulate ''java.sql.Blob'' with locators? With this feature enabled, the driver will delay loading the actual Blob data until the one of the retrieval methods (''getInputStream()'', ''getBytes()'', and so forth) on the blob data stream has been accessed. For this to work, you must use a column alias with the value of the column to the actual name of the Blob. The feature also has the following restrictions: The SELECT that created the result set must reference only one table, the table must have a primary key; the SELECT must alias the original blob column name, specified as a string, to an alternate name; the SELECT must cover all columns that make up the primary key. ConnectionProperties.emulateUnsupportedPstmts=Should the driver detect prepared statements that are not supported by the server, and replace them with client-side emulated versions? -ConnectionProperties.enableEscapeProcessing=Sets the default escape processing behavior for Statement objects. The method Statement.setEscapeProcessing() can be used to specify the escape processing behavior for an individual Statement object. Default escape processing behavior in prepared statements must be defined with the property ''processEscapeCodesForPrepStmts''. -ConnectionProperties.enablePacketDebug=When enabled, a ring-buffer of ''packetDebugBufferSize'' packets will be kept, and dumped when exceptions are thrown in key areas in the driver''s code -ConnectionProperties.enableQueryTimeouts=When enabled, query timeouts set via Statement.setQueryTimeout() use a shared java.util.Timer instance for scheduling. Even if the timeout doesn''t expire before the query is processed, there will be memory used by the TimerTask for the given timeout which won''t be reclaimed until the time the timeout would have expired if it hadn''t been cancelled by the driver. High-load environments might want to consider disabling this functionality. -ConnectionProperties.exceptionInterceptors=Comma-delimited list of classes that implement com.mysql.cj.exceptions.ExceptionInterceptor. These classes will be instantiated one per Connection instance, and all SQLExceptions thrown by the driver will be allowed to be intercepted by these interceptors, in a chained fashion, with the first class listed as the head of the chain. +ConnectionProperties.enableEscapeProcessing=Sets the default escape processing behavior for Statement objects. The method ''Statement.setEscapeProcessing()'' can be used to specify the escape processing behavior for an individual statement object. Default escape processing behavior in prepared statements must be defined with the property ''processEscapeCodesForPrepStmts''. +ConnectionProperties.enablePacketDebug=When enabled, a ring-buffer of ''packetDebugBufferSize'' packets will be kept, and dumped when exceptions are thrown in key areas in the driver''s code. +ConnectionProperties.enableQueryTimeouts=When enabled, query timeouts set via ''Statement.setQueryTimeout()'' use a shared ''java.util.Timer'' instance for scheduling. Even if the timeout doesn''t expire before the query is processed, there will be memory used by the ''TimerTask'' for the given timeout which won''t be reclaimed until the time the timeout would have expired if it hadn''t been cancelled by the driver. High-load environments might want to consider disabling this functionality. +ConnectionProperties.exceptionInterceptors=Comma-delimited list of classes that implement the interface ''com.mysql.cj.exceptions.ExceptionInterceptor''. These classes will be instantiated one per ''Connection'' instance, and all ''SQLException'' exceptions thrown by the driver will be allowed to be intercepted by these interceptors, in a chained fashion, with the first class listed as the head of the chain. ConnectionProperties.explainSlowQueries=If ''logSlowQueries'' is enabled, should the driver automatically issue an ''EXPLAIN'' on the server and send the results to the configured logger at a WARN level? -ConnectionProperties.failoverReadOnly=When failing over in autoReconnect mode, should the connection be set to ''read-only''? +ConnectionProperties.failoverReadOnly=When failing over in ''autoReconnect'' mode, should the connection be set to ''read-only''? ConnectionProperties.fallbackToSystemKeyStore=Whether the absence of setting a value for ''clientCertificateKeyStoreUrl'' falls back to using the system-wide key store defined through the system properties ''javax.net.ssl.keyStore*''. ConnectionProperties.fallbackToSystemTrustStore=Whether the absence of setting a value for ''trustCertificateKeyStoreUrl'' falls back to using the system-wide default trust store or one defined through the system properties ''javax.net.ssl.trustStore*''. -ConnectionProperties.forceConnectionTimeZoneToSession=If enabled, sets the time zone value determined by ''connectionTimeZone'' connection property to the current server session ''time_zone'' variable. If the time zone value is given as a geographical time zone, then Connector/J sets this value as-is in the server session, in which case the time zone system tables must be populated beforehand (consult the MySQL Server documentation for further details); but, if the value is given as an offset from Greenwich/UTC in any of the supported syntaxes, then the server session time zone is set as a numeric offset from UTC.[CR]With that no intermediate conversion between JVM default time zone and connection time zone is needed to store correct milliseconds value of instant Java objects such as java.sql.Timestamp or java.time.OffsetDateTime when stored in TIMESTAMP columns.[CR]Note that it also affects the result of MySQL functions such as ''NOW()'', ''CURTIME()'' or ''CURDATE()''.[CR]This option has no effect if used in conjunction with ''connectionTimeZone=SERVER'' since, in this case, the session is already set with the required time zone.[CR]See also ''connectionTimeZone'' and ''preserveInstants'' for more details. -ConnectionProperties.functionsNeverReturnBlobs=Should the driver always treat data from functions returning BLOBs as Strings - specifically to work around dubious metadata returned by the server for GROUP BY clauses? +ConnectionProperties.forceConnectionTimeZoneToSession=If enabled, sets the time zone value determined by ''connectionTimeZone'' connection property to the current server session ''time_zone'' variable. If the time zone value is given as a geographical time zone, then Connector/J sets this value as-is in the server session, in which case the time zone system tables must be populated beforehand (consult the MySQL Server documentation for further details); but, if the value is given as an offset from Greenwich/UTC in any of the supported syntaxes, then the server session time zone is set as a numeric offset from UTC.[CR]With that no intermediate conversion between JVM default time zone and connection time zone is needed to store correct milliseconds value of instant Java objects such as ''java.sql.Timestamp'' or ''java.time.OffsetDateTime'' when stored in TIMESTAMP columns.[CR]Note that it also affects the result of MySQL functions such as ''NOW()'', ''CURTIME()'' or ''CURDATE()''.[CR]This option has no effect if used in conjunction with "connectionTimeZone=SERVER" since, in this case, the session is already set with the required time zone.[CR]See also ''connectionTimeZone'' and ''preserveInstants'' for more details. +ConnectionProperties.functionsNeverReturnBlobs=Should the driver always treat data from functions returning BLOBs as Strings - specifically to work around dubious metadata returned by the server for "GROUP BY" clauses? ConnectionProperties.gatherPerfMetrics=Should the driver gather performance metrics, and report them via the configured logger every ''reportMetricsIntervalMillis'' milliseconds? -ConnectionProperties.generateSimpleParameterMetadata=Should the driver generate simplified parameter metadata for PreparedStatements when no metadata is available either because the server couldn''t support preparing the statement, or server-side prepared statements are disabled? -ConnectionProperties.getProceduresReturnsFunctions=Pre-JDBC4 DatabaseMetaData API has only the getProcedures() and getProcedureColumns() methods, so they return metadata info for both stored procedures and functions. JDBC4 was extended with the getFunctions() and getFunctionColumns() methods and the expected behaviours of previous methods are not well defined. For JDBC4 and higher, default ''true'' value of the option means that calls of DatabaseMetaData.getProcedures() and DatabaseMetaData.getProcedureColumns() return metadata for both procedures and functions as before, keeping backward compatibility. Setting this property to ''false'' decouples Connector/J from its pre-JDBC4 behaviours for DatabaseMetaData.getProcedures() and DatabaseMetaData.getProcedureColumns(), forcing them to return metadata for procedures only. +ConnectionProperties.generateSimpleParameterMetadata=Should the driver generate simplified parameter metadata for prepared statements when no metadata is available either because the server couldn''t support preparing the statement, or server-side prepared statements are disabled? +ConnectionProperties.getProceduresReturnsFunctions=Pre-JDBC4 ''DatabaseMetaData'' API has only the ''getProcedures()'' and ''getProcedureColumns()'' methods, so they return metadata info for both stored procedures and functions. JDBC4 was extended with the ''getFunctions()'' and ''getFunctionColumns()'' methods and the expected behaviours of previous methods are not well defined. For JDBC4 and higher, default "true" value of the option means that calls of ''DatabaseMetaData.getProcedures()'' and ''DatabaseMetaData.getProcedureColumns()'' return metadata for both procedures and functions as before, keeping backward compatibility. Setting this property to "false" decouples Connector/J from its pre-JDBC4 behaviours for ''DatabaseMetaData.getProcedures()'' and ''DatabaseMetaData.getProcedureColumns()'', forcing them to return metadata for procedures only. ConnectionProperties.ha.enableJMX=Enables JMX-based management of load-balanced connection groups, including live addition/removal of hosts from load-balancing pool. Enables JMX-based management of replication connection groups, including live replica promotion, addition of new replicas and removal of source or replica hosts from load-balanced source and replica connection pools. -ConnectionProperties.holdRSOpenOverStmtClose=Should the driver close result sets on Statement.close() as required by the JDBC specification? -ConnectionProperties.ignoreNonTxTables=Ignore non-transactional table warning for rollback? (defaults to ''false''). +ConnectionProperties.holdRSOpenOverStmtClose=Should the driver close result sets on ''Statement.close()'' as required by the JDBC specification? +ConnectionProperties.ignoreNonTxTables=Ignore non-transactional table warning for rollback? ConnectionProperties.includeInnodbStatusInDeadlockExceptions=Include the output of "SHOW ENGINE INNODB STATUS" in exception messages when deadlock exceptions are detected? -ConnectionProperties.includeThreadDumpInDeadlockExceptions=Include a current Java thread dump in exception messages when deadlock exceptions are detected? -ConnectionProperties.includeThreadNamesAsStatementComment=Include the name of the current thread as a comment visible in "SHOW PROCESSLIST", or in Innodb deadlock dumps, useful in correlation with "includeInnodbStatusInDeadlockExceptions=true" and "includeThreadDumpInDeadlockExceptions=true". -ConnectionProperties.initialTimeout=If autoReconnect is enabled, the initial time to wait between re-connect attempts (in seconds, defaults to ''2''). -ConnectionProperties.interactiveClient=Set the CLIENT_INTERACTIVE flag, which tells MySQL to timeout connections based on INTERACTIVE_TIMEOUT instead of WAIT_TIMEOUT -ConnectionProperties.jdbcCompliantTruncation=Should the driver throw java.sql.DataTruncation exceptions when data is truncated as is required by the JDBC specification when connected to a server that supports warnings (MySQL 4.1.0 and newer)? This property has no effect if the server sql-mode includes STRICT_TRANS_TABLES. -ConnectionProperties.largeRowSizeThreshold=What size result set row should the JDBC driver consider "large", and thus use a more memory-efficient way of representing the row internally? +ConnectionProperties.includeThreadDumpInDeadlockExceptions=Include current Java thread dump in exception messages when deadlock exceptions are detected? +ConnectionProperties.includeThreadNamesAsStatementComment=Include the name of the current thread as a comment visible in "SHOW PROCESSLIST", or in Innodb deadlock dumps, useful in correlation with "includeInnodbStatusInDeadlockExceptions=true" and "includeThreadDumpInDeadlockExceptions=true". +ConnectionProperties.initialTimeout=If ''autoReconnect'' is enabled, the initial time to wait between re-connect attempts (in seconds, defaults to "2"). +ConnectionProperties.interactiveClient=Set the ''CLIENT_INTERACTIVE'' flag, which tells MySQL to timeout connections based on ''interactive_timeout'' instead of ''wait_timeout''. +ConnectionProperties.jdbcCompliantTruncation=Should the driver throw ''java.sql.DataTruncation'' exceptions when data is truncated as is required by the JDBC specification? This property has no effect if the server sql-mode includes ''STRICT_TRANS_TABLES''. +ConnectionProperties.largeRowSizeThreshold=What size result set row should the JDBC driver consider large, and thus use a more memory-efficient way of representing the row internally? ConnectionProperties.ldapServerHostname=When using MySQL''s LDAP pluggable authentication with GSSAPI/Kerberos authentication method, allows setting the LDAP service principal hostname as configured in the Kerberos KDC. If this property is not set, Connector/J takes the system property ''java.security.krb5.kdc'' and extracts the hostname (short name) from its value and uses it. If neither is set, the connection fails with an exception. -ConnectionProperties.loadBalanceAutoCommitStatementRegex=When load-balancing is enabled for auto-commit statements (via loadBalanceAutoCommitStatementThreshold), the statement counter will only increment when the SQL matches the regular expression. By default, every statement issued matches. -ConnectionProperties.loadBalanceAutoCommitStatementThreshold=When auto-commit is enabled, the number of statements which should be executed before triggering load-balancing to rebalance. Default value of 0 causes load-balanced connections to only rebalance when exceptions are encountered, or auto-commit is disabled and transactions are explicitly committed or rolled back. +ConnectionProperties.loadBalanceAutoCommitStatementRegex=When load-balancing is enabled for auto-commit statements (via ''loadBalanceAutoCommitStatementThreshold''), the statement counter will only increment when the SQL matches the regular expression. By default, every statement issued matches. +ConnectionProperties.loadBalanceAutoCommitStatementThreshold=When auto-commit is enabled, the number of statements which should be executed before triggering load-balancing to rebalance. Default value of "0" causes load-balanced connections to only rebalance when exceptions are encountered, or auto-commit is disabled and transactions are explicitly committed or rolled back. ConnectionProperties.loadBalanceBlocklistTimeout=Time in milliseconds between checks of servers which are unavailable, by controlling how long a server lives in the global blocklist. -ConnectionProperties.loadBalanceConnectionGroup=Logical group of load-balanced connections within a classloader, used to manage different groups independently. If not specified, live management of load-balanced connections is disabled. -ConnectionProperties.loadBalanceExceptionChecker=Fully-qualified class name of custom exception checker. The class must implement com.mysql.cj.jdbc.ha.LoadBalanceExceptionChecker interface, and is used to inspect SQLExceptions and determine whether they should trigger fail-over to another host in a load-balanced deployment. +ConnectionProperties.loadBalanceConnectionGroup=Logical group of load-balanced connections within a class loader, used to manage different groups independently. If not specified, live management of load-balanced connections is disabled. +ConnectionProperties.loadBalanceExceptionChecker=Fully-qualified class name of custom exception checker. The class must implement ''com.mysql.cj.jdbc.ha.LoadBalanceExceptionChecker'' interface, and is used to inspect ''SQLException'' exceptions and determine whether they should trigger fail-over to another host in a load-balanced deployment. ConnectionProperties.loadBalanceHostRemovalGracePeriod=Sets the grace period to wait for a host being removed from a load-balanced connection, to be released when it is currently the active host. -ConnectionProperties.loadBalancePingTimeout=Time in milliseconds to wait for ping response from each of load-balanced physical connections when using load-balanced Connection. -ConnectionProperties.loadBalanceSQLExceptionSubclassFailover=Comma-delimited list of classes/interfaces used by default load-balanced exception checker to determine whether a given SQLException should trigger failover. The comparison is done using Class.isInstance(SQLException) using the thrown SQLException. -ConnectionProperties.loadBalanceSQLStateFailover=Comma-delimited list of SQLState codes used by default load-balanced exception checker to determine whether a given SQLException should trigger failover. The SQLState of a given SQLException is evaluated to determine whether it begins with any value in the comma-delimited list. -ConnectionProperties.loadBalanceStrategy=If using a load-balanced connection to connect to SQL nodes in a MySQL Cluster/NDB configuration (by using the URL prefix "jdbc:mysql:loadbalance://"), which load balancing algorithm should the driver use: (1) "random" - the driver will pick a random host for each request. This tends to work better than round-robin, as the randomness will somewhat account for spreading loads where requests vary in response time, while round-robin can sometimes lead to overloaded nodes if there are variations in response times across the workload. (2) "bestResponseTime" - the driver will route the request to the host that had the best response time for the previous transaction. (3) "serverAffinity" - the driver initially attempts to enforce server affinity while still respecting and benefiting from the fault tolerance aspects of the load-balancing implementation. The server affinity ordered list is provided using the property ''serverAffinityOrder''. If none of the servers listed in the affinity list is responsive, the driver then refers to the "random" strategy to proceed with choosing the next server. -ConnectionProperties.loadBalanceValidateConnectionOnSwapServer=Should the load-balanced Connection explicitly check whether the connection is live when swapping to a new physical connection at commit/rollback? +ConnectionProperties.loadBalancePingTimeout=Time in milliseconds to wait for ping responses from each of load-balanced physical connections when using a load-balanced connection. +ConnectionProperties.loadBalanceSQLExceptionSubclassFailover=Comma-delimited list of classes/interfaces used by default load-balanced exception checker to determine whether a given ''SQLException'' should trigger a failover. The comparison is done using ''Class.isInstance(SQLException)'' using the ''SQLException'' thrown. +ConnectionProperties.loadBalanceSQLStateFailover=Comma-delimited list of ''SQLState'' codes used by the default load-balanced exception checker to determine whether a given ''SQLException'' should trigger a failover. The ''SQLState'' of a given ''SQLException'' is evaluated to determine whether it begins with any of the values specified in the comma-delimited list. +ConnectionProperties.loadBalanceStrategy=If using a load-balanced connection to connect to SQL servers in a MySQL Cluster configuration (by using the URL prefix "jdbc:mysql:loadbalance://"), which load balancing algorithm should the driver use: (1) "random" - the driver will pick a random host for each request. This tends to work better than round-robin, as the randomness will somewhat account for spreading loads where requests vary in response time, while round-robin can sometimes lead to overloaded nodes if there are variations in response times across the workload. (2) "bestResponseTime" - the driver will route the request to the host that had the best response time for the previous transaction. (3) "serverAffinity" - the driver initially attempts to enforce server affinity while still respecting and benefiting from the fault tolerance aspects of the load-balancing implementation. The server affinity ordered list is provided using the property ''serverAffinityOrder''. If none of the servers listed in the affinity list is responsive, the driver then refers to the "random" strategy to proceed with choosing the next server. +ConnectionProperties.loadBalanceValidateConnectionOnSwapServer=Should the load-balanced connection explicitly check whether the connection is live when swapping to a new physical connection at commit/rollback? ConnectionProperties.loadDataLocal=Should the driver allow use of "LOAD DATA LOCAL INFILE ..."?[CR]Setting to "true" overrides whatever path is set in ''allowLoadLocalInfileInPath'', allowing uploading files from any location. ConnectionProperties.loadDataLocalInPath=Enables "LOAD DATA LOCAL INFILE ..." statements, but only allows loading files from the specified path. Files within sub-directories are also allowed, but relative paths or symlinks that fall outside this path are forbidden. ConnectionProperties.localSocketAddress=Hostname or IP address given to explicitly configure the interface that the driver will bind the client side of the TCP/IP connection to when connecting. -ConnectionProperties.locatorFetchBufferSize=If ''emulateLocators'' is configured to ''true'', what size buffer should be used when fetching BLOB data for getBinaryInputStream? -ConnectionProperties.logger=The name of a class that implements \"{0}\" that will be used to log messages to. (default is \"{1}\", which logs to STDERR) +ConnectionProperties.locatorFetchBufferSize=If ''emulateLocators'' is configured to "true", what size buffer should be used when fetching BLOB data for ''getBinaryInputStream()''? +ConnectionProperties.logger=The name of a class that implements ''{0}'' that will be used to log messages to. (default is ''{1}'', which logs to STDERR). ConnectionProperties.logSlowQueries=Should queries that take longer than ''slowQueryThresholdMillis'' or detected by the ''autoSlowLog'' monitoring be reported to the registered ''profilerEventHandler''? -ConnectionProperties.logXaCommands=Should the driver log XA commands sent by MysqlXaConnection to the server, at the DEBUG level of logging? -ConnectionProperties.maintainTimeStats=Should the driver maintain various internal timers to enable idle time calculations as well as more verbose error messages when the connection to the server fails? Setting this property to false removes at least two calls to System.getCurrentTimeMillis() per query. -ConnectionProperties.maxAllowedPacket=Maximum allowed packet size to send to server. If not set, the value of system variable ''max_allowed_packet'' will be used to initialize this upon connecting. This value will not take effect if set larger than the value of ''max_allowed_packet''. Also, due to an internal dependency with the property "blobSendChunkSize", this setting has a minimum value of "8203" if "useServerPrepStmts" is set to "true". -ConnectionProperties.maxQuerySizeToLog=Controls the maximum length of the part of a query that will get logged when profiling or tracing -ConnectionProperties.maxReconnects=Maximum number of reconnects to attempt if autoReconnect is true, default is ''3''. -ConnectionProperties.maxRows=The maximum number of rows to return (0, the default means return all rows). -ConnectionProperties.metadataCacheSize=The number of queries to cache ResultSetMetadata for if cacheResultSetMetaData is set to ''true'' (default 50) -ConnectionProperties.netTimeoutForStreamingResults=What value should the driver automatically set the server setting ''net_write_timeout'' to when the streaming result sets feature is in use? (value has unit of seconds, the value ''0'' means the driver will not try and adjust this value) -ConnectionProperties.noAccessToProcedureBodies=When determining procedure parameter types for CallableStatements, and the connected user can''t access procedure bodies through "SHOW CREATE PROCEDURE" or select on mysql.proc should the driver instead create basic metadata (all parameters reported as INOUT VARCHARs) instead of throwing an exception? -ConnectionProperties.noDatetimeStringSync=Don''t ensure that ResultSet.getDatetimeType().toString().equals(ResultSet.getString()) -ConnectionProperties.nullCatalogMeansCurrent=When DatabaseMetadata methods ask for a ''catalog'' or ''schema'' parameter, does the value null mean use the current database? See also property ''databaseTerm''. +ConnectionProperties.logXaCommands=Should the driver log XA commands sent by ''MysqlXaConnection'' to the server, at the DEBUG level of logging? +ConnectionProperties.maintainTimeStats=Should the driver maintain various internal timers to enable idle time calculations as well as more verbose error messages when the connection to the server fails? Setting this property to false removes at least two calls to ''System.getCurrentTimeMillis()'' per query. +ConnectionProperties.maxAllowedPacket=Maximum allowed packet size to send to server. If not set, the value of system variable ''max_allowed_packet'' will be used to initialize this upon connecting. This value will not take effect if set larger than the value of ''max_allowed_packet''. Also, due to an internal dependency with the property ''blobSendChunkSize'', this setting has a minimum value of "8203" if ''useServerPrepStmts'' is set to "true". +ConnectionProperties.maxQuerySizeToLog=Controls the maximum length of the part of a query that will get logged when profiling or tracing. +ConnectionProperties.maxReconnects=Maximum number of reconnects to attempt if ''autoReconnect'' is "true". +ConnectionProperties.maxRows=The maximum number of rows to return. The default "0" means return all rows. +ConnectionProperties.metadataCacheSize=The number of queries to cache ''ResultSetMetadata'' for if ''cacheResultSetMetaData'' is set to "true". +ConnectionProperties.netTimeoutForStreamingResults=What value should the driver automatically set the server setting ''net_write_timeout'' to when the streaming result sets feature is in use? Value has unit of seconds, the value "0" means the driver will not try and adjust this value. +ConnectionProperties.noAccessToProcedureBodies=When determining procedure parameter types for ''CallableStatement'', and the connected user can''t access procedure bodies through "SHOW CREATE PROCEDURE" or SELECT on mysql.proc should the driver instead create basic metadata, with all parameters reported as INOUT VARCHARs, instead of throwing an exception? +ConnectionProperties.noDatetimeStringSync=Don''t ensure that ''ResultSet.getTimestamp().toString().equals(ResultSet.getString())''. +ConnectionProperties.nullCatalogMeansCurrent=In ''DatabaseMetaData'' methods that take a ''catalog'' or ''schema'' parameter, does the value "null" mean to use the current database? See also the property ''databaseTerm''. ConnectionProperties.ociConfigFile=The location of the OCI configuration file as required by the OCI SDK for Java. Default value is "~/.oci/config" for Unix-like systems and "%HOMEDRIVE%%HOMEPATH%.oci\\config" for Windows. -ConnectionProperties.overrideSupportsIEF=Should the driver return "true" for DatabaseMetaData.supportsIntegrityEnhancementFacility() even if the database doesn''t support it to workaround applications that require this method to return "true" to signal support of foreign keys, even though the SQL specification states that this facility contains much more than just foreign key support (one such application being OpenOffice)? -ConnectionProperties.packetDebugBufferSize=The maximum number of packets to retain when ''enablePacketDebug'' is true +ConnectionProperties.overrideSupportsIEF=Should the driver return "true" for ''DatabaseMetaData.supportsIntegrityEnhancementFacility()'' even if the database doesn''t support it to workaround applications that require this method to return "true" to signal support of foreign keys, even though the SQL specification states that this facility contains much more than just foreign key support (one such application being OpenOffice)? +ConnectionProperties.packetDebugBufferSize=The maximum number of packets to retain when ''enablePacketDebug'' is "true". ConnectionProperties.padCharsWithSpace=If a result set column has the CHAR type and the value does not fill the amount of characters specified in the DDL for the column, should the driver pad the remaining characters with space (for ANSI compliance)? -ConnectionProperties.paranoid=Take measures to prevent exposure sensitive information in error messages and clear data structures holding sensitive data when possible? (defaults to ''false'') -ConnectionProperties.queryInfoCacheFactory=Name of a class implementing com.mysql.cj.CacheAdapterFactory, which will be used to create caches for the parsed representation of client-side prepared statements. Prior to version 8.0.29, this property was named ''parseInfoCacheFactory'', which remains as an alias. -ConnectionProperties.Password=The password to use when connecting. -ConnectionProperties.Password1=The password to use in the first phase of a Multi-Factor Authentication workflow. It is a synonym of the connection property 'password' and can also be set with user credentials in the connection string. +ConnectionProperties.paranoid=Take measures to prevent exposure sensitive information in error messages and clear data structures holding sensitive data when possible? +ConnectionProperties.queryInfoCacheFactory=Name of a class implementing ''com.mysql.cj.CacheAdapterFactory'' which will be used to create caches for the parsed representation of prepared statements. Prior to version 8.0.29, this property was named ''parseInfoCacheFactory'', which remains as an alias. +ConnectionProperties.Password=The password to use when authenticating the user. +ConnectionProperties.Password1=The password to use in the first phase of a Multi-Factor Authentication workflow. It is a synonym of the connection property ''password'' and can also be set with user credentials in the connection string. ConnectionProperties.Password2=The password to use in the second phase of a Multi-Factor Authentication workflow. ConnectionProperties.Password3=The password to use in the third phase of a Multi-Factor Authentication workflow. -ConnectionProperties.passwordCharacterEncoding=Instructs the server to use the default character set for the specified Java encoding during the authentication phase. If this property is not set, Connector/J falls back to the collation name specified in the property ''connectionCollation'' or to the Java encoding specified in the property ''characterEncoding'', in that order of priority. The "utf8mb4" default collation is used if none of the properties is set. -ConnectionProperties.pedantic=Follow the JDBC spec to the letter. -ConnectionProperties.pinGlobalTxToPhysicalConnection=When using XAConnections, should the driver ensure that operations on a given XID are always routed to the same physical connection? This allows the XAConnection to support "XA START ... JOIN" after "XA END" has been called -ConnectionProperties.populateInsertRowWithDefaultValues=When using ResultSets that are CONCUR_UPDATABLE, should the driver pre-populate the "insert" row with default values from the DDL for the table used in the query so those values are immediately available for ResultSet accessors? This functionality requires a call to the database for metadata each time a result set of this type is created. If disabled (the default), the default values will be populated by the an internal call to refreshRow() which pulls back default values and/or values changed by triggers. +ConnectionProperties.passwordCharacterEncoding=Instructs the server to use the default character set for the specified Java encoding during the authentication phase. If this property is not set, Connector/J falls back to the collation name specified in the property ''connectionCollation'' or to the Java encoding specified in the property ''characterEncoding'', in that order of priority. The default collation of the character set utf8mb4 is used if none of the properties is set. +ConnectionProperties.pedantic=Follow the JDBC specification to the letter. +ConnectionProperties.pinGlobalTxToPhysicalConnection=When using XA connections, should the driver ensure that operations on a given XID are always routed to the same physical connection? This allows the ''XAConnection'' to support "XA START ... JOIN" after "XA END" has been called. +ConnectionProperties.populateInsertRowWithDefaultValues=When using result sets that are ''CONCUR_UPDATABLE'', should the driver pre-populate the insert row with default values from the DDL for the table used in the query so those values are immediately available for ''ResultSet'' accessors? This functionality requires a call to the database for metadata each time a result set of this type is created. If disabled, the default values will be populated by the an internal call to ''refreshRow()'' which pulls back default values and/or values changed by triggers. ConnectionProperties.prepStmtCacheSize=If prepared statement caching is enabled, how many prepared statements should be cached? ConnectionProperties.prepStmtCacheSqlLimit=If prepared statement caching is enabled, what''s the largest SQL the driver will cache the parsing for? -ConnectionProperties.preserveInstants=If enabled, Connector/J does its best to preserve the instant point on the time-line for Java instant-based objects such as java.sql.Timestamp or java.time.OffsetDateTime instead of their original visual form. Otherwise, the driver always uses the JVM default time zone for rendering the values it sends to the server and for constructing the Java objects from the fetched data.[CR]MySQL uses implied time zone conversion for TIMESTAMP values: they are converted from the session time zone to UTC for storage, and back from UTC to the session time zone for retrieval. So, to store the correct correct UTC value internally, the driver converts the value from the original time zone to the session time zone before sending to the server. On retrieval, Connector/J converts the received value from the session time zone to the JVM default one.[CR]When storing, the conversion is performed only if the target SQLType, either the explicit one or the default one, is TIMESTAMP. When retrieving, the conversion is performed only if the source column has the TIMESTAMP, DATETIME or character type and the target class is an instant-based one, like java.sql.Timestamp or java.time.OffsetDateTime.[CR]Note that this option has no effect if used in conjunction with ''connectionTimeZone=LOCAL'' since, in this case, the source and target time zones are the same. Though, in this case, it's still possible to store a correct instant value if set ''forceConnectionTimeZoneToSession=true''.[CR]See also ''connectionTimeZone'' and ''forceConnectionTimeZoneToSession'' for more details. +ConnectionProperties.preserveInstants=If enabled, Connector/J does its best to preserve the instant point on the time-line for Java instant-based objects such as ''java.sql.Timestamp'' or ''java.time.OffsetDateTime'' instead of their original visual form. Otherwise, the driver always uses the JVM default time zone for rendering the values it sends to the server and for constructing the Java objects from the fetched data.[CR]MySQL uses implied time zone conversion for TIMESTAMP values: they are converted from the session time zone to UTC for storage, and back from UTC to the session time zone for retrieval. So, to store the correct correct UTC value internally, the driver converts the value from the original time zone to the session time zone before sending to the server. On retrieval, Connector/J converts the received value from the session time zone to the JVM default one.[CR]When storing, the conversion is performed only if the target ''SQLType'', either the explicit one or the default one, is TIMESTAMP. When retrieving, the conversion is performed only if the source column has the TIMESTAMP, DATETIME or character type and the target class is an instant-based one, like ''java.sql.Timestamp'' or ''java.time.OffsetDateTime''.[CR]Note that this option has no effect if used in conjunction with "connectionTimeZone=LOCAL" since, in this case, the source and target time zones are the same. Though, in this case, it''s still possible to store a correct instant value if set together with "forceConnectionTimeZoneToSession=true".[CR]See also ''connectionTimeZone'' and ''forceConnectionTimeZoneToSession'' for more details. ConnectionProperties.processEscapeCodesForPrepStmts=Should the driver process escape codes in queries that are prepared? Default escape processing behavior in non-prepared statements must be defined with the property ''enableEscapeProcessing''. -ConnectionProperties.profilerEventHandler=Name of a class that implements the interface com.mysql.cj.log.ProfilerEventHandler that will be used to handle profiling/tracing events. -ConnectionProperties.profileSQL=Trace queries and their execution/fetch times to the configured ''profilerEventHandler'' -ConnectionProperties.queriesBeforeRetrySource=Number of queries to issue before falling back to the primary host when failed over (when using multi-host failover). Whichever condition is met first, ''queriesBeforeRetrySource'' or ''secondsBeforeRetrySource'' will cause an attempt to be made to reconnect to the primary host. Setting both properties to 0 disables the automatic fall back to the primary host at transaction boundaries. Defaults to 50. -ConnectionProperties.queryInterceptors=A comma-delimited list of classes that implement com.mysql.cj.interceptors.QueryInterceptor that should be placed "in between" query execution to influence the results. QueryInterceptors are "chainable": the results returned by the "current" interceptor will be passed on to the next in the chain, from left-to-right in the order specified in this property. -ConnectionProperties.queryTimeoutKillsConnection=If the timeout given in Statement.setQueryTimeout() expires, should the driver forcibly abort the Connection instead of attempting to abort the query? -ConnectionProperties.readFromSourceWhenNoReplicas=Replication-aware connections distribute load by using the source hosts when in read/write state and by using the replica hosts when in read-only state. If, when setting the connection to read-only state, none of the replica hosts are available, an SQLException is thrown back. Setting this property to ''true'' allows to fail over to the source hosts, while setting the connection state to read-only, when no replica hosts are available at switch instant. -ConnectionProperties.readOnlyPropagatesToServer=Should the driver issue appropriate statements to implicitly set the transaction access mode on server side when Connection.setReadOnly() is called? Setting this property to ''true'' enables InnoDB read-only potential optimizations but also requires an extra roundtrip to set the right transaction state. Even if this property is set to ''false'', the driver will do its best effort to prevent the execution of database-state-changing queries. Requires minimum of MySQL 5.6. -ConnectionProperties.reconnectAtTxEnd=If autoReconnect is set to true, should the driver attempt reconnections at the end of every transaction? -ConnectionProperties.replicationConnectionGroup=Logical group of replication connections within a classloader, used to manage different groups independently. If not specified, live management of replication connections is disabled. -ConnectionProperties.reportMetricsIntervalMillis=If ''gatherPerfMetrics'' is enabled, how often should they be logged (in ms)? -ConnectionProperties.requireSSL=For 8.0.12 and earlier: Require server support of SSL connection if useSSL=true? (defaults to ''false'').[CR] For 8.0.13 and later: DEPRECATED. See sslMode property description for details. -ConnectionProperties.resourceId=A globally unique name that identifies the resource that this datasource or connection is connected to, used for XAResource.isSameRM() when the driver can''t determine this value based on hostnames used in the URL -ConnectionProperties.resultSetSizeThreshold=If ''useUsageAdvisor'' is true, how many rows should a result set contain before the driver warns that it is suspiciously large? -ConnectionProperties.retriesAllDown=When using loadbalancing or failover, the number of times the driver should cycle through available hosts, attempting to connect. Between cycles, the driver will pause for 250ms if no servers are available. -ConnectionProperties.rewriteBatchedStatements=Should the driver use multi-queries (regardless of the setting of "allowMultiQueries") as well as rewriting of prepared statements for INSERT into multi-value inserts when executeBatch() is called? Notice that this has the potential for SQL injection if using plain java.sql.Statements and your code doesn''t sanitize input correctly. Notice that for prepared statements, server-side prepared statements can not currently take advantage of this rewrite option, and that if you don''t specify stream lengths when using PreparedStatement.set*Stream(), the driver won''t be able to determine the optimum number of parameters per batch and you might receive an error from the driver that the resultant packet is too large. Statement.getGeneratedKeys() for these rewritten statements only works when the entire batch includes INSERT statements. Please be aware using rewriteBatchedStatements=true with INSERT .. ON DUPLICATE KEY UPDATE that for rewritten statement server returns only one value as sum of all affected (or found) rows in batch and it isn''t possible to map it correctly to initial statements; in this case driver returns 0 as a result of each batch statement if total count was 0, and the Statement.SUCCESS_NO_INFO as a result of each batch statement if total count was > 0. -ConnectionProperties.rollbackOnPooledClose=Should the driver issue a rollback() when the logical connection in a pool is closed? +ConnectionProperties.profilerEventHandler=Name of a class that implements the interface ''com.mysql.cj.log.ProfilerEventHandler'' that will be used to handle profiling/tracing events. +ConnectionProperties.profileSQL=Trace queries and their execution/fetch times to the configured ''profilerEventHandler''. +ConnectionProperties.queriesBeforeRetrySource=When using multi-host failover, the number of queries to issue before falling back to the primary host when failed over. Whichever condition is met first, ''queriesBeforeRetrySource'' or ''secondsBeforeRetrySource'' will cause an attempt to be made to reconnect to the primary host. Setting both properties to "0" disables the automatic fall back to the primary host at transaction boundaries. +ConnectionProperties.queryInterceptors=A comma-delimited list of classes that implement ''com.mysql.cj.interceptors.QueryInterceptor'' that intercept query executions and are able influence the results. Query iterceptors are chainable: the results returned by the current interceptor will be passed on to the next in the chain, from left-to-right in the order specified in this property. +ConnectionProperties.queryTimeoutKillsConnection=If the timeout given in ''Statement.setQueryTimeout()'' expires, should the driver forcibly abort the connection instead of attempting to abort the query? +ConnectionProperties.readFromSourceWhenNoReplicas=Replication-aware connections distribute load by using the source hosts when in read/write state and by using the replica hosts when in read-only state. If, when setting the connection to read-only state, none of the replica hosts are available, an ''SQLException'' is thrown back. Setting this property to "true" allows to fail over to the source hosts, while setting the connection state to read-only, when no replica hosts are available at switch instant. +ConnectionProperties.readOnlyPropagatesToServer=Should the driver issue appropriate statements to implicitly set the transaction access mode on server side when ''Connection.setReadOnly()'' is called? Setting this property to "true" enables InnoDB read-only potential optimizations but also requires an extra roundtrip to set the right transaction state. Even if this property is set to "false", the driver will do its best effort to prevent the execution of database-state-changing queries. +ConnectionProperties.reconnectAtTxEnd=If ''autoReconnect'' is set to "true", should the driver attempt reconnections at the end of every transaction? +ConnectionProperties.replicationConnectionGroup=Logical group of replication connections within a class loader, used to manage different groups independently. If not specified, live management of replication connections is disabled. +ConnectionProperties.reportMetricsIntervalMillis=If ''gatherPerfMetrics'' is enabled, how often should they be logged (in milliseconds)? +ConnectionProperties.requireSSL=DEPRECATED: See ''sslMode'' property description for details.[CR]For 8.0.12 and earlier: Require server support of SSL connection if "useSSL=true". +ConnectionProperties.resourceId=A globally unique name that identifies the resource that this data source or connection is connected to, used for ''XAResource.isSameRM()'' when the driver can''t determine this value based on hostnames used in the URL. +ConnectionProperties.resultSetSizeThreshold=If ''useUsageAdvisor'' is "true", how many rows should a result set contain before the driver warns that it is suspiciously large? +ConnectionProperties.retriesAllDown=When using load balancing or failover, the number of times the driver should cycle through available hosts, attempting to connect. Between cycles, the driver will pause for 250 ms if no servers are available. +ConnectionProperties.rewriteBatchedStatements=Should the driver use multi-queries, regardless of the setting of ''allowMultiQueries'', as well as rewriting of prepared statements for INSERT and REPLACE queries into multi-values clause statements when ''executeBatch()'' is called?[CR]Notice that this might allow SQL injection when using plain statements and the provided input is not properly sanitized. Also notice that for prepared statements, if the stream length is not specified when using ''PreparedStatement.set*Stream()'', the driver would not be able to determine the optimum number of parameters per batch and might return an error saying that the resultant packet is too large.[CR]''Statement.getGeneratedKeys()'', for statements that are rewritten only works when the entire batch consists of INSERT or REPLACE statements.[CR]Be aware that when using "rewriteBatchedStatements=true" with "INSERT ... ON DUPLICATE KEY UPDATE" for rewritten statements, the server returns only one value for all affected (or found) rows in the batch, and it is not possible to map it correctly to the initial statements; in this case the driver returns "0" as the result for each batch statement if total count was zero, and ''Statement.SUCCESS_NO_INFO'' if total count was above zero. +ConnectionProperties.rollbackOnPooledClose=Should the driver issue a ''rollback()'' when the logical connection in a pool is closed? ConnectionProperties.scrollTolerantForwardOnly=Should the driver contradict the JDBC API and tolerate and support backward and absolute cursor movement on result sets of type ''ResultSet.TYPE_FORWARD_ONLY''?[CR]Regardless of this setting, cursor-based and row streaming result sets cannot be navigated in the prohibited directions. -ConnectionProperties.secondsBeforeRetrySource=How long should the driver wait, when failed over, before attempting to reconnect to the primary host? Whichever condition is met first, ''queriesBeforeRetrySource'' or ''secondsBeforeRetrySource'' will cause an attempt to be made to reconnect to the source host. Setting both properties to 0 disables the automatic fall back to the primary host at transaction boundaries. Time in seconds, defaults to 30 -ConnectionProperties.selfDestructOnPingMaxOperations=If set to a non-zero value, the driver will report close the connection and report failure when Connection.ping() or Connection.isValid(int) is called if the connection''s count of commands sent to the server exceeds this value. -ConnectionProperties.selfDestructOnPingSecondsLifetime=If set to a non-zero value, the driver will close the connection and report failure when Connection.ping() or Connection.isValid(int) is called if the connection''s lifetime exceeds this value (in milliseconds). +ConnectionProperties.secondsBeforeRetrySource=How long, in seconds, should the driver wait when failed over, before attempting to reconnect to the primary host? Whichever condition is met first, ''queriesBeforeRetrySource'' or ''secondsBeforeRetrySource'' will cause an attempt to be made to reconnect to the source host. Setting both properties to "0" disables the automatic fall back to the primary host at transaction boundaries. +ConnectionProperties.selfDestructOnPingMaxOperations=If set to a non-zero value, the driver will report close the connection and report failure when ''com.mysql.cj.jdbc.JdbcConnection.ping()'' or ''java.sql.Connection.isValid(int)'' is called if the connection''s count of commands sent to the server exceeds this value. +ConnectionProperties.selfDestructOnPingSecondsLifetime=If set to a non-zero value, the driver will close the connection and report failure when ''com.mysql.cj.jdbc.JdbcConnection.ping()'' or ''java.sql.Connection.isValid(int)'' is called if the connection''s lifetime exceeds this value, specified in milliseconds. ConnectionProperties.sendFractionalSeconds=If set to "false", the fractional seconds will always be truncated before sending any data to the server. This option applies only to prepared statements, callable statements or updatable result sets. -ConnectionProperties.sendFractionalSecondsForTime=If set to "false", the fractional seconds of java.sql.Time will be ignored as required by JDBC specification. If set to "true", it's value is rendered with fractional seconds allowing to store milliseconds into MySQL TIME column. This option applies only to prepared statements, callable statements or updatable result sets. It has no effect if sendFractionalSeconds=false. -ConnectionProperties.serverAffinityOrder=A comma separated list containing the host/port pairs that are to be used in load-balancing "serverAffinity" strategy. Only the sub-set of the hosts enumerated in the main hosts section in this URL will be used and they must be identical in case and type, i.e., can''t use an IP address in one place and the corresponding host name in the other. -ConnectionProperties.serverConfigCacheFactory=Name of a class implementing com.mysql.cj.CacheAdapterFactory>, which will be used to create caches for MySQL server configuration values -ConnectionProperties.serverRSAPublicKeyFile=File path to the server RSA public key file for sha256_password authentication. If not specified, the public key will be retrieved from the server. -ConnectionProperties.sessionVariables=A comma or semicolon separated list of name=value pairs to be sent as SET [SESSION] ... to the server when the driver connects. -ConnectionProperties.slowQueryThresholdMillis=If ''logSlowQueries'' is enabled, how long should a query take (in ms) before it is logged as slow? -ConnectionProperties.slowQueryThresholdNanos=If ''logSlowQueries'' is enabled, ''useNanosForElapsedTime'' is set to true, and this property is set to a non-zero value, the driver will use this threshold (in nanosecond units) to determine if a query was slow. -ConnectionProperties.socketFactory=The name of the class that the driver should use for creating socket connections to the server. This class must implement the interface com.mysql.cj.protocol.SocketFactory and have public no-args constructor. -ConnectionProperties.socketTimeout=Timeout (in milliseconds) on network socket operations (0, the default means no timeout). -ConnectionProperties.socksProxyHost=Name or IP address of SOCKS host to connect through. -ConnectionProperties.socksProxyPort=Port of SOCKS server. +ConnectionProperties.sendFractionalSecondsForTime=If set to "false", the fractional seconds of ''java.sql.Time'' will be ignored as required by JDBC specification. If set to "true", its value is rendered with fractional seconds allowing to store milliseconds into MySQL TIME column. This option applies only to prepared statements, callable statements or updatable result sets. It has no effect if "sendFractionalSeconds=false". +ConnectionProperties.serverAffinityOrder=A comma separated list containing the host/port pairs that are to be used in load-balancing "serverAffinity" strategy. Only the sub-set of the hosts enumerated in the main hosts section in this URL will be used and they must be identical in case and type, i.e., can''t use an IP address in one place and the corresponding host name in the other. +ConnectionProperties.serverConfigCacheFactory=Name of a class implementing ''com.mysql.cj.CacheAdapterFactory'', which will be used to create caches for MySQL server configuration values. +ConnectionProperties.serverRSAPublicKeyFile=File path to the server RSA public key file for ''sha256_password'' authentication. If not specified, the public key will be retrieved from the server. +ConnectionProperties.sessionVariables=A comma or semicolon separated list of "name=value" pairs to be sent as "SET [SESSION] ..." to the server when the driver connects. +ConnectionProperties.slowQueryThresholdMillis=If ''logSlowQueries'' is enabled, how long, in milliseconds, should a query take before it is logged as slow? +ConnectionProperties.slowQueryThresholdNanos=If ''logSlowQueries'' is enabled, ''useNanosForElapsedTime'' is set to "true", and this property is set to a non-zero value, the driver will use this threshold, in nanosecond units, to determine if a query was slow. +ConnectionProperties.socketFactory=The name of the class that the driver should use for creating socket connections to the server. This class must implement the interface ''com.mysql.cj.protocol.SocketFactory'' and have a public no-args constructor. +ConnectionProperties.socketTimeout=Timeout, specified in milliseconds, on network socket operations. Value "0" means no timeout. +ConnectionProperties.socksProxyHost=Name or IP address of a SOCKS host to connect through. +ConnectionProperties.socksProxyPort=Port of the SOCKS server. ConnectionProperties.socksProxyRemoteDns=When using a SOCKS proxy, whether the DNS lookup for the database host should be performed locally or through the SOCKS proxy. -ConnectionProperties.sslMode=By default, network connections are SSL encrypted; this property permits secure connections to be turned off, or a different levels of security to be chosen. The following values are allowed: "DISABLED" - Establish unencrypted connections; "PREFERRED" - (default) Establish encrypted connections if the server enabled them, otherwise fall back to unencrypted connections; "REQUIRED" - Establish secure connections if the server enabled them, fail otherwise; "VERIFY_CA" - Like "REQUIRED" but additionally verify the server TLS certificate against the configured Certificate Authority (CA) certificates; "VERIFY_IDENTITY" - Like "VERIFY_CA", but additionally verify that the server certificate matches the host to which the connection is attempted.[CR] This property replaced the deprecated legacy properties "useSSL", "requireSSL", and "verifyServerCertificate", which are still accepted but translated into a value for "sslMode" if "sslMode" is not explicitly set: "useSSL=false" is translated to "sslMode=DISABLED"; '{'"useSSL=true", "requireSSL=false", "verifyServerCertificate=false"'}' is translated to "sslMode=PREFERRED"; '{'"useSSL=true", "requireSSL=true", "verifyServerCertificate=false"'}' is translated to "sslMode=REQUIRED"; '{'"useSSL=true" AND "verifyServerCertificate=true"'}' is translated to "sslMode=VERIFY_CA". There is no equivalent legacy settings for "sslMode=VERIFY_IDENTITY". Note that, for ALL server versions, the default setting of "sslMode" is "PREFERRED", and it is equivalent to the legacy settings of "useSSL=true", "requireSSL=false", and "verifyServerCertificate=false", which are different from their default settings for Connector/J 8.0.12 and earlier in some situations. Applications that continue to use the legacy properties and rely on their old default settings should be reviewed.[CR] The legacy properties are ignored if "sslMode" is set explicitly. If none of "sslMode" or "useSSL" is set explicitly, the default setting of "sslMode=PREFERRED" applies. -ConnectionProperties.strictUpdates=Should the driver do strict checking (all primary keys selected) of updatable result sets (true, false, defaults to ''true'')? -ConnectionProperties.tcpKeepAlive=If connecting using TCP/IP, should the driver set SO_KEEPALIVE? -ConnectionProperties.tcpNoDelay=If connecting using TCP/IP, should the driver set SO_TCP_NODELAY (disabling the Nagle Algorithm)? -ConnectionProperties.tcpSoRcvBuf=If connecting using TCP/IP, should the driver set SO_RCV_BUF to the given value? The default value of ''0'', means use the platform default value for this property) -ConnectionProperties.tcpSoSndBuf=If connecting using TCP/IP, should the driver set SO_SND_BUF to the given value? The default value of ''0'', means use the platform default value for this property) -ConnectionProperties.tcpTrafficClass=If connecting using TCP/IP, should the driver set traffic class or type-of-service fields ?See the documentation for java.net.Socket.setTrafficClass() for more information. -ConnectionProperties.tinyInt1isBit=Should the driver treat the datatype TINYINT(1) as the BIT type (because the server silently converts BIT -> TINYINT(1) when creating tables)? +ConnectionProperties.sslMode=By default, network connections are SSL encrypted; this property permits secure connections to be turned off, or a different levels of security to be chosen. The following values are allowed: "DISABLED" - Establish unencrypted connections; "PREFERRED" - Establish encrypted connections if the server enabled them, otherwise fall back to unencrypted connections; "REQUIRED" - Establish secure connections if the server enabled them, fail otherwise; "VERIFY_CA" - Like "REQUIRED" but additionally verify the server TLS certificate against the configured Certificate Authority (CA) certificates; "VERIFY_IDENTITY" - Like "VERIFY_CA", but additionally verify that the server certificate matches the host to which the connection is attempted.[CR] This property replaced the deprecated legacy properties ''useSSL'', ''requireSSL'', and ''verifyServerCertificate'', which are still accepted but translated into a value for ''sslMode'' if ''sslMode'' is not explicitly set: "useSSL=false" is translated to "sslMode=DISABLED"; '{'"useSSL=true", "requireSSL=false", "verifyServerCertificate=false"'}' is translated to "sslMode=PREFERRED"; '{'"useSSL=true", "requireSSL=true", "verifyServerCertificate=false"'}' is translated to "sslMode=REQUIRED"; '{'"useSSL=true", "verifyServerCertificate=true"'}' is translated to "sslMode=VERIFY_CA". There is no equivalent legacy settings for "sslMode=VERIFY_IDENTITY". Note that, for all server versions, the default setting of ''sslMode'' is "PREFERRED", and it is equivalent to the legacy settings of "useSSL=true", "requireSSL=false", and "verifyServerCertificate=false", which are different from their default settings for Connector/J 8.0.12 and earlier in some situations. Applications that continue to use the legacy properties and rely on their old default settings should be reviewed.[CR]The legacy properties are ignored if ''sslMode'' is set explicitly. If none of ''sslMode'' or ''useSSL'' is set explicitly, the default setting of "sslMode=PREFERRED" applies. +ConnectionProperties.strictUpdates=Should the driver do strict checking, i.e. all primary keys selected, of updatable result sets? +ConnectionProperties.tcpKeepAlive=If connecting using TCP/IP, should the driver set ''SO_KEEPALIVE''? +ConnectionProperties.tcpNoDelay=If connecting using TCP/IP, should the driver set ''SO_TCP_NODELAY'', disabling the Nagle Algorithm? +ConnectionProperties.tcpSoRcvBuf=If connecting using TCP/IP, should the driver set ''SO_RCV_BUF'' to the given value? The default value of "0", means use the platform default value for this property. +ConnectionProperties.tcpSoSndBuf=If connecting using TCP/IP, should the driver set ''SO_SND_BUF'' to the given value? The default value of "0", means use the platform default value for this property. +ConnectionProperties.tcpTrafficClass=If connecting using TCP/IP, should the driver set traffic class or type-of-service fields? See the documentation for ''java.net.Socket.setTrafficClass()'' for more information. +ConnectionProperties.tinyInt1isBit=Since the MySQL server silently converts BIT to TINYINT(1) when creating tables, should the driver treat the datatype TINYINT(1) as the BIT type? ConnectionProperties.tlsCiphersuites=When establishing secure connections, overrides the cipher suites enabled for use on the underlying SSL sockets. This may be required when using external JSSE providers or to specify cipher suites compatible with both MySQL server and used JVM. Prior to version 8.0.28, this property was named ''enabledSSLCipherSuites'', which remains as an alias. -ConnectionProperties.tlsVersions=List of TLS protocols to allow when establishing secure connections. Overrides the TLS protocols enabled in the underlying SSL sockets. This can be used to restrict connections to specific TLS versions and, by doing that, avoid TLS negotiation fallback. Allowed and default values are TLSv1.2, TLSv1.3. Prior to version 8.0.28, this property was named ''enabledTLSProtocols'', which remains as an alias. +ConnectionProperties.tlsVersions=List of TLS protocols to allow when establishing secure connections. Overrides the TLS protocols enabled in the underlying SSL sockets. This can be used to restrict connections to specific TLS versions and, by doing that, avoid TLS negotiation fallback. Allowed and default values are "TLSv1.2" and "TLSv1.3". Prior to version 8.0.28, this property was named ''enabledTLSProtocols'', which remains as an alias. ConnectionProperties.traceProtocol=Should the network protocol be logged at the TRACE level? -ConnectionProperties.trackSessionState=Receive server session state changes on query results. These changes are accessible via MysqlConnection.getServerSessionStateController(). -ConnectionProperties.transformedBitIsBoolean=If the driver converts TINYINT(1) to a different type, should it use BOOLEAN instead of BIT for future compatibility with MySQL-5.0, as MySQL-5.0 has a BIT type? -ConnectionProperties.treatUtilDateAsTimestamp=Should the driver treat java.util.Date as a TIMESTAMP for the purposes of PreparedStatement.setObject()? +ConnectionProperties.trackSessionState=Receive server session state changes on query results. These changes are accessible via ''MysqlConnection.getServerSessionStateController()''. +ConnectionProperties.transformedBitIsBoolean=If the driver converts TINYINT(1) to a different type, should it use BOOLEAN instead of BIT? +ConnectionProperties.treatUtilDateAsTimestamp=Should the driver treat ''java.util.Date'' as a TIMESTAMP for the purposes of ''PreparedStatement.setObject()''? ConnectionProperties.trustCertificateKeyStorePassword=Password for the trusted root certificates key store. -ConnectionProperties.trustCertificateKeyStoreType=Key store type for trusted root certificates.[CR]NULL or empty means use the default, which is "JKS". Standard key store types supported by the JVM are "JKS" and "PKCS12", your environment may have more available depending on what security products are installed and available to the JVM. +ConnectionProperties.trustCertificateKeyStoreType=Key store type for trusted root certificates.[CR]Null or empty means use the default, which is "JKS". Standard key store types supported by the JVM are "JKS" and "PKCS12", your environment may have more available depending on what security providers are installed and available to the JVM. ConnectionProperties.trustCertificateKeyStoreUrl=URL for the trusted root certificates key store.[CR]If not specified, the property ''fallbackToSystemTrustStore'' determines if system-wide trust store is used. -ConnectionProperties.ultraDevHack=Create PreparedStatements for prepareCall() when required, because UltraDev is broken and issues a prepareCall() for _all_ statements? (true/false, defaults to ''false'') -ConnectionProperties.useAffectedRows=Don''t set the CLIENT_FOUND_ROWS flag when connecting to the server (not JDBC-compliant, will break most applications that rely on "found" rows vs. "affected rows" for DML statements), but does cause "correct" update counts from "INSERT ... ON DUPLICATE KEY UPDATE" statements to be returned by the server. -ConnectionProperties.useColumnNamesInFindColumn=Prior to JDBC-4.0, the JDBC specification had a bug related to what could be given as a "column name" to ResultSet methods like findColumn(), or getters that took a String property. JDBC-4.0 clarified "column name" to mean the label, as given in an "AS" clause and returned by ResultSetMetaData.getColumnLabel(), and if no AS clause, the column name. Setting this property to "true" will give behavior that is congruent to JDBC-3.0 and earlier versions of the JDBC specification, but which because of the specification bug could give unexpected results. This property is preferred over "useOldAliasMetadataBehavior" unless you need the specific behavior that it provides with respect to ResultSetMetadata. -ConnectionProperties.useCompression=Use zlib compression when communicating with the server (true/false)? -ConnectionProperties.useConfigs=Load the comma-delimited list of configuration properties before parsing the URL or applying user-specified properties. These configurations are explained in the ''Configurations'' of the documentation. -ConnectionProperties.useCursorFetch=Should the driver use cursor-based fetching to retrieve rows? If set to "true" and "defaultFetchSize" > 0 (or setFetchSize() > 0 is called on a statement) then the cursor-based result set will be used. Please note that "useServerPrepStmts" is automatically set to "true" in this case because cursor functionality is available only for server-side prepared statements. -ConnectionProperties.useHostsInPrivileges=Add ''@hostname'' to users in DatabaseMetaData.getColumn/TablePrivileges() (true/false), defaults to ''true''. -ConnectionProperties.useInformationSchema=Should the driver use the INFORMATION_SCHEMA to derive information used by DatabaseMetaData? Default is ''true'' when connecting to MySQL 8.0.3+, otherwise default is ''false''. -ConnectionProperties.useLocalSessionState=Should the driver refer to the internal values of autocommit and transaction isolation that are set by Connection.setAutoCommit() and Connection.setTransactionIsolation() and transaction state as maintained by the protocol, rather than querying the database or blindly sending commands to the database for commit() or rollback() method calls? -ConnectionProperties.useLocalTransactionState=Should the driver use the in-transaction state provided by the MySQL protocol to determine if a commit() or rollback() should actually be sent to the database? -ConnectionProperties.useNanosForElapsedTime=For profiling/debugging functionality that measures elapsed time, should the driver try to use nanoseconds resolution if available (JDK >= 1.5)? -ConnectionProperties.useOldAliasMetadataBehavior=Should the driver use the legacy behavior for "AS" clauses on columns and tables, and only return aliases (if any) for ResultSetMetaData.getColumnName() or ResultSetMetaData.getTableName() rather than the original column/table name? In 5.0.x, the default value was true. -ConnectionProperties.useOnlyServerErrorMessages=Don''t prepend ''standard'' SQLState error messages to error messages returned by the server. -ConnectionProperties.useReadAheadInput=Use newer, optimized non-blocking, buffered input stream when reading from the server? -ConnectionProperties.Username=The user to connect as -ConnectionProperties.useServerPrepStmts=Use server-side prepared statements if the server supports them? -ConnectionProperties.useSqlStateCodes=Use SQL Standard state codes instead of ''legacy'' X/Open/SQL state codes (true/false), default is ''true'' -ConnectionProperties.useSSL=For 8.0.12 and earlier: Use SSL when communicating with the server (true/false), default is ''true'' when connecting to MySQL 5.5.45+, 5.6.26+ or 5.7.6+, otherwise default is ''false''.[CR] For 8.0.13 and later: Default is ''true''. DEPRECATED. See sslMode property description for details. -ConnectionProperties.useStreamLengthsInPrepStmts=Honor stream length parameter in PreparedStatement/ResultSet.setXXXStream() method calls (true/false, defaults to ''true'')? -ConnectionProperties.useUnbufferedInput=Don''t use BufferedInputStream for reading data from the server -ConnectionProperties.useUsageAdvisor=Should the driver issue ''usage'' warnings advising proper and efficient usage of JDBC and MySQL Connector/J to the ''profilerEventHandler''? -ConnectionProperties.verifyServerCertificate=For 8.0.12 and earlier: If "useSSL" is set to "true", should the driver verify the server''s certificate? When using this feature, the key store parameters should be specified by the "clientCertificateKeyStore*" properties, rather than system properties. Default is ''false'' when connecting to MySQL 5.5.45+, 5.6.26+ or 5.7.6+ and "useSSL" was not explicitly set to "true". Otherwise default is ''true''.[CR] For 8.0.13 and later: Default is ''false''. DEPRECATED. See sslMode property description for details. -ConnectionProperties.yearIsDateType=Should the JDBC driver treat the MySQL type "YEAR" as a java.sql.Date, or as a SHORT? -ConnectionProperties.zeroDateTimeBehavior=What should happen when the driver encounters DATETIME values that are composed entirely of zeros (used by MySQL to represent invalid dates)? Valid values are \"{0}\", \"{1}\" and \"{2}\". +ConnectionProperties.ultraDevHack=Create prepared statements for ''prepareCall()'' when required, because UltraDev is broken and issues a ''prepareCall()'' for all statements? +ConnectionProperties.useAffectedRows=Don''t set the ''CLIENT_FOUND_ROWS'' flag when connecting to the server. Note that this is not JDBC-compliant and it will break most applications that rely on "found" rows vs. "affected rows" for DML statements, but does cause correct update counts from "INSERT ... ON DUPLICATE KEY UPDATE" statements to be returned by the server. +ConnectionProperties.useColumnNamesInFindColumn=Prior to JDBC-4.0, the JDBC specification had a bug related to what could be given as a column name to result set methods like ''findColumn()'', or getters that took a String property. JDBC-4.0 clarified "column name" to mean the label, as given in an "AS" clause and returned by ''ResultSetMetaData.getColumnLabel()'', and if no "AS" clause is specified, the column name. Setting this property to "true" will result in a behavior that is congruent to JDBC-3.0 and earlier versions of the JDBC specification, but which could have unexpected results. This property is preferred over ''useOldAliasMetadataBehavior'' unless in need of the specific behavior that it provides with respect to ''ResultSetMetadata''. +ConnectionProperties.useCompression=Use zlib compression when communicating with the server? +ConnectionProperties.useConfigs=Load the comma-delimited list of configuration properties for specifying combinations of options for particular scenarios. These properties are loaded before parsing the URL or applying user-specified properties. Allowed values are "3-0-Compat", "clusterBase", "coldFusion", "fullDebug", "maxPerformance", "maxPerformance-8-0" and "solarisMaxPerformance", and they correspond to properties files shipped within the Connector/J jar file, under "com/mysql/cj/configurations". +ConnectionProperties.useCursorFetch=Should the driver use cursor-based fetching to retrieve rows? If set to "true" and ''defaultFetchSize'' is set to a value higher than zero or ''setFetchSize()'' with a value higher than zero is called on a statement, then the cursor-based result set will be used. Please note that ''useServerPrepStmts'' is automatically set to "true" in this case because cursor functionality is available only for server-side prepared statements. +ConnectionProperties.useHostsInPrivileges=Add ''@hostname'' to users in ''DatabaseMetaData.getColumn/TablePrivileges()''. +ConnectionProperties.useInformationSchema=Should the driver use the INFORMATION_SCHEMA to derive information used by ''DatabaseMetaData''? Default is "true" when connecting to MySQL 8.0.3+, otherwise default is "false". +ConnectionProperties.useLocalSessionState=Should the driver refer to the internal values of auto-commit and transaction isolation that are set by ''Connection.setAutoCommit()'' and ''Connection.setTransactionIsolation()'' and transaction state as maintained by the protocol, rather than querying the database or blindly sending commands to the database for ''commit()'' or ''rollback()'' method calls? +ConnectionProperties.useLocalTransactionState=Should the driver use the in-transaction state provided by the MySQL protocol to determine if a ''commit()'' or ''rollback()'' should actually be sent to the database? +ConnectionProperties.useNanosForElapsedTime=For profiling/debugging functionality that measures elapsed time, should the driver try to use nanoseconds resolution? +ConnectionProperties.useOldAliasMetadataBehavior=Should the driver use the legacy behavior for "AS" clauses on columns and tables, and only return aliases ,if any, for ''ResultSetMetaData.getColumnName()'' or ''ResultSetMetaData.getTableName()'' rather than the original column/table name? +ConnectionProperties.useOnlyServerErrorMessages=Don''t prepend standard ''SQLState'' error messages to error messages returned by the server. +ConnectionProperties.useReadAheadInput=Use optimized non-blocking buffered input stream when reading from the server? +ConnectionProperties.Username=The user to connect as. If none is specified, it is authentication plugin dependent what user name is used. Built-in authentication plugins default to the session login user name. +ConnectionProperties.useServerPrepStmts=Use server-side prepared statements if the server supports them? The server may limit the number of prepared statements with ''max_prepared_stmt_count'' or disable them altogether. In case of not being possible to prepare new server-side prepared statements, it depends on the value of ''emulateUnsupportedPstmts'' to whether return an error or fall back to client-side emulated prepared statements. +ConnectionProperties.useSqlStateCodes=Use SQL Standard state codes instead of ''legacy'' X/Open/SQL state codes. +ConnectionProperties.useSSL=DEPRECATED: See ''sslMode'' property description for details.[CR]For 8.0.12 and earlier: Use SSL when communicating with the server, default is "true" when connecting to MySQL 5.5.45+, 5.6.26+ or 5.7.6+, otherwise default is "false".[CR] For 8.0.13 and later: Default is "true". +ConnectionProperties.useStreamLengthsInPrepStmts=Honor stream length parameter in ''PreparedStatement/ResultSet.set*Stream()'' method calls? +ConnectionProperties.useUnbufferedInput=Don''t use ''BufferedInputStream'' for reading data from the server. +ConnectionProperties.useUsageAdvisor=Should the driver issue usage warnings advising proper and efficient usage of JDBC and MySQL Connector/J to the ''profilerEventHandler''? +ConnectionProperties.verifyServerCertificate=DEPRECATED: See ''sslMode'' property description for details.[CR]For 8.0.12 and earlier: If ''useSSL'' is set to "true", should the driver verify the server''s certificate? When using this feature, the key store parameters should be specified by the ''clientCertificateKeyStore*'' properties, rather than system properties. Default is "false" when connecting to MySQL 5.5.45+, 5.6.26+ or 5.7.6+ and ''useSSL'' was not explicitly set to "true". Otherwise default is "true".[CR] For 8.0.13 and later: Default is "false". +ConnectionProperties.yearIsDateType=Should the JDBC driver treat the MySQL type YEAR as a ''java.sql.Date'', or as a SHORT? +ConnectionProperties.zeroDateTimeBehavior=What should happen when the driver encounters DATETIME values that are composed entirely of zeros - used by MySQL to represent invalid dates? Valid values are \"{0}\", \"{1}\" and \"{2}\". ConnectionProperties.xdevapiSslMode=X DevAPI-specific SSL mode setting. If not specified, use ''sslMode''. Because the "PREFERRED" mode is not applicable to X Protocol, if ''xdevapi.ssl-mode'' is not set and ''sslMode'' is set to "PREFERRED", ''xdevapi.ssl-mode'' is set to "REQUIRED". ConnectionProperties.xdevapiTlsCiphersuites=X DevAPI-specific property overriding the cipher suites enabled for use on the underlying SSL sockets. If not specified, the value of ''enabledSSLCipherSuites'' is used. -ConnectionProperties.xdevapiTlsVersions=X DevAPI-specific property that takes a list of TLS protocols to allow when creating secure sessions. Overrides the TLS protocols enabled in the underlying SSL socket. If not specified, then the value of ''tlsVersions'' is used instead. Allowed and default values are TLSv1.2, TLSv1.3. +ConnectionProperties.xdevapiTlsVersions=X DevAPI-specific property that takes a list of TLS protocols to allow when creating secure sessions. Overrides the TLS protocols enabled in the underlying SSL socket. If not specified, then the value of ''tlsVersions'' is used instead. Allowed and default values are "TLSv1.2" and "TLSv1.3". ConnectionProperties.xdevapiSslKeyStoreUrl=X DevAPI-specific URL for the client certificate key store. If not specified, use ''clientCertificateKeyStoreUrl'' value. ConnectionProperties.xdevapiSslKeyStoreType=X DevAPI-specific type of the client certificate key store. If not specified, use ''clientCertificateKeyStoreType'' value. ConnectionProperties.xdevapiSslKeyStorePassword=X DevAPI-specific password for the client certificate key store. If not specified, use ''clientCertificateKeyStorePassword'' value. @@ -1008,14 +1007,15 @@ ConnectionProperties.xdevapiSslTrustStoreType=X DevAPI-specific type of the trus ConnectionProperties.xdevapiSslTrustStorePassword=X DevAPI-specific password for the trusted CA certificates key store. If not specified, use ''trustCertificateKeyStorePassword'' value. ConnectionProperties.xdevapiFallbackToSystemTrustStore=X DevAPI-specific switch to specify whether in the absence of a set value for ''xdevapi.ssl-truststore'' (or ''trustCertificateKeyStoreUrl''), Connector/J falls back to using the system-wide default trust store or one defined through the system properties ''javax.net.ssl.trustStore*''. If not specified, the value of ''fallbackToSystemTrustStore'' is used. ConnectionProperties.auth=Authentication mechanism to use with the X Protocol. Allowed values are "SHA256_MEMORY", "MYSQL41", "PLAIN", and "EXTERNAL". Value is case insensitive. If the property is not set, the mechanism is chosen depending on the connection type: "PLAIN" is used for TLS connections and "SHA256_MEMORY" or "MYSQL41" is used for unencrypted connections. -ConnectionProperties.xdevapiConnectTimeout=X DevAPI-specific timeout for socket connect (in milliseconds), with "0" being no timeout. Defaults to "10000". If ''xdevapi.connect-timeout'' is not set explicitly and ''connectTimeout'' is, ''xdevapi.connect-timeout'' takes up the value of ''connectTimeout''. -ConnectionProperties.xdevapiConnectionAttributes=An X DevAPI-specific comma-delimited list of user-defined key=value pairs (in addition to standard X Protocol-defined key=value pairs) to be passed to MySQL Server for display as connection attributes in PERFORMANCE_SCHEMA tables session_account_connect_attrs and session_connect_attrs. Example usage: xdevapi.connection-attributes=key1=value1,key2=value2 or xdevapi.connection-attributes=[key1=value1,key2=value2]. This functionality is available for use with MySQL Server version 8.0.16 or later only. Earlier versions of X Protocol do not support connection attributes, causing this configuration option to be ignored. For situations where Session creation/initialization speed is critical, setting xdevapi.connection-attributes=false will cause connection attribute processing to be bypassed. +ConnectionProperties.xdevapiConnectTimeout=X DevAPI-specific timeout, in milliseconds, for socket connect, with "0" being no timeout. If ''xdevapi.connect-timeout'' is not set explicitly and ''connectTimeout'' is, ''xdevapi.connect-timeout'' takes up the value of ''connectTimeout''. +ConnectionProperties.xdevapiConnectionAttributes=An X DevAPI-specific comma-delimited list of user-defined "key=value" pairs, in addition to standard X Protocol-defined "key=value" pairs, to be passed to MySQL Server for display as connection attributes in the ''PERFORMANCE_SCHEMA'' tables ''session_account_connect_attrs'' and ''session_connect_attrs''. Example usage: "xdevapi.connection-attributes=key1=value1,key2=value2" or "xdevapi.connection-attributes=[key1=value1,key2=value2]". This functionality is available for use with MySQL Server version 8.0.16 or later only. Earlier versions of X Protocol do not support connection attributes, causing this configuration option to be ignored. For situations where Session creation/initialization speed is critical, setting "xdevapi.connection-attributes=false" will cause connection attribute processing to be bypassed. ConnectionProperties.xdevapiDnsSrv=X DevAPI-specific option for instructing the driver use the given host name to lookup for DNS SRV records and use the resulting list of hosts in a multi-host failover connection. Note that a single host name and no port must be provided when this option is enabled. ConnectionProperties.xdevapiCompression=X DevAPI-specific network traffic compression. This option accepts one of the three values: "PREFERRED", "REQUIRED", and "DISABLED". Setting this option to "PREFERRED" or "REQUIRED" enables compression algorithm negotiation between Connector and Server, and turns on compression of large X Protocol packets, as long as a consensus is reached between client and server regarding the compression algorithm to use. If a consensus cannot be reached, connection fails if the option is set to "REQUIRED" and continues without compression if the option is set to "PREFERRED". Setting this option as "DISABLED" skips the compression negotiation phase and forbids the interchange of compressed messages between client and server. -ConnectionProperties.xdevapiCompressionAlgorithms=A comma-delimited list of compression algorithms, each one identified by its name and operating mode (e.g. "lz4_message" -- consult the description for the MySQL global variable ''mysqlx_compression_algorithms'' for a list of supported and enabled algorithms), that defines the order and which algorithms will be attempted when negotiating connection compression with the server.[CR]The compression algorithm ''deflate_stream'' is supported natively. Additional compression algorithms require using third-party libraries and enabling them with the connection property ''xdevapi.compression-extensions''.[CR]This option is meaningful only when network traffic compression is enabled using the connection property ''xdevapi.compression''.[CR]As an alternative to the default algorithm names, that contain a reference to the compression operation mode, the aliases "zstd", "lz4", and "deflate" can be used instead of "zstd_stream", "lz4_message", and "deflate_stream". -ConnectionProperties.xdevapiCompressionExtensions=A comma-delimited list of triplets, with their elements delimited by colon, that enables the support for additional compression algorithms. Each triplet must contain: first, an algorithm name and operating mode (e.g. "lz4_message" -- consult the description for the MySQL global variable ''mysqlx_compression_algorithms'' for a list of supported and enabled algorithms); second, a fully-qualified class name of a class implementing the interface java.io.InputStream that will be used to inflate data compressed with the named algorithm; third, a fully-qualified class name of a class implementing the interface java.io.OutputStream that will be used to deflate data using the named algorithm. Along with this setting, the library containing implementations of the designated classes must be available in the application's class path.[CR]Any number of triplets defining compression algorithms and their inflater and deflater implementations can be provided but only the ones supported and enabled on the MySQL Server can be used.[CR]The compression algorithm ''deflate_stream'' is supported natively. Additional compression algorithms require using third-party libraries.[CR]This option is meaningful only when network traffic compression is enabled using the connection property ''xdevapi.compression''.[CR]As an alternative to the default algorithm names, that contain a reference to the compression operation mode, the aliases "zstd", "lz4", and "deflate" can be used instead of "zstd_stream", "lz4_message", and "deflate_stream". -ConnectionProperties.asyncResponseTimeout=For 8.0.21 and earlier: Timeout (in seconds) for getting server response via X Protocol.[CR]For 8.0.22 and later: DEPRECATED; has no effect. +ConnectionProperties.xdevapiCompressionAlgorithms=A comma-delimited list of compression algorithms, each one identified by its name and operating mode, (e.g. "lz4_message"; consult the description for the MySQL global variable ''mysqlx_compression_algorithms'' for a list of supported and enabled algorithms), that defines the order and which algorithms will be attempted when negotiating connection compression with the server.[CR]The compression algorithm ''deflate_stream'' is supported natively. Additional compression algorithms require using third-party libraries and enabling them with the connection property ''xdevapi.compression-extensions''.[CR]This option is meaningful only when network traffic compression is enabled using the connection property ''xdevapi.compression''.[CR]As an alternative to the default algorithm names, that contain a reference to the compression operation mode, the aliases "zstd", "lz4", and "deflate" can be used instead of "zstd_stream", "lz4_message", and "deflate_stream". +ConnectionProperties.xdevapiCompressionExtensions=A comma-delimited list of triplets, with their elements delimited by colon, that enables the support for additional compression algorithms. Each triplet must contain: first, an algorithm name and operating mode (e.g. "lz4_message"; consult the description for the MySQL global variable ''mysqlx_compression_algorithms'' for a list of supported and enabled algorithms); second, a fully-qualified class name of a class implementing the interface ''java.io.InputStream'' that will be used to inflate data compressed with the named algorithm; third, a fully-qualified class name of a class implementing the interface ''java.io.OutputStream'' that will be used to deflate data using the named algorithm. Along with this setting, the library containing implementations of the designated classes must be available in the application''s class path.[CR]Any number of triplets defining compression algorithms and their inflater and deflater implementations can be provided but only the ones supported and enabled on the MySQL Server can be used.[CR]The compression algorithm ''deflate_stream'' is supported natively. Additional compression algorithms require using third-party libraries.[CR]This option is meaningful only when network traffic compression is enabled using the connection property ''xdevapi.compression''.[CR]As an alternative to the default algorithm names, that contain a reference to the compression operation mode, the aliases "zstd", "lz4", and "deflate" can be used instead of "zstd_stream", "lz4_message", and "deflate_stream". +ConnectionProperties.asyncResponseTimeout=DEPRECATED: has no effect.[CR]For 8.0.21 and earlier: Timeout, in seconds, for getting server response via X Protocol. ConnectionProperties.unknown=Property is not defined in Connector/J but used in connection URL. +ConnectionProperties.allVersions=all versions PropertyDefinition.1=The connection property ''{0}'' acceptable values are: {1}. The value ''{2}'' is not acceptable. diff --git a/src/main/user-impl/java/com/mysql/cj/jdbc/ClientPreparedStatement.java b/src/main/user-impl/java/com/mysql/cj/jdbc/ClientPreparedStatement.java index 193de0024..5c40b54ad 100644 --- a/src/main/user-impl/java/com/mysql/cj/jdbc/ClientPreparedStatement.java +++ b/src/main/user-impl/java/com/mysql/cj/jdbc/ClientPreparedStatement.java @@ -406,7 +406,7 @@ protected long[] executeBatchInternal() throws SQLException { if (!this.batchHasPlainStatements && this.rewriteBatchedStatements.getValue()) { if (getQueryInfo().isRewritableWithMultiValuesClause()) { - return executeBatchedInserts(batchTimeout); + return executeBatchWithMultiValuesClause(batchTimeout); } if (!this.batchHasPlainStatements && this.query.getBatchedArgs() != null @@ -611,7 +611,7 @@ private String generateMultiStatementForBatch(int numBatches) throws SQLExceptio } /** - * Rewrites the already prepared statement into a multi-value insert statement and executes the entire batch using this new statement. + * Rewrites the already prepared statement into a multi-values clause INSERT/REPLACE statement and executes the entire batch using this new statement. * * @param batchTimeout * timeout for the batch execution @@ -620,7 +620,7 @@ private String generateMultiStatementForBatch(int numBatches) throws SQLExceptio * @throws SQLException * if a database access error occurs or this method is called on a closed PreparedStatement */ - protected long[] executeBatchedInserts(int batchTimeout) throws SQLException { + protected long[] executeBatchWithMultiValuesClause(int batchTimeout) throws SQLException { synchronized (checkClosed().getConnectionMutex()) { JdbcConnection locallyScopedConn = this.connection; diff --git a/src/main/user-impl/java/com/mysql/cj/jdbc/StatementImpl.java b/src/main/user-impl/java/com/mysql/cj/jdbc/StatementImpl.java index d6d9aafa0..fd1e7dac6 100644 --- a/src/main/user-impl/java/com/mysql/cj/jdbc/StatementImpl.java +++ b/src/main/user-impl/java/com/mysql/cj/jdbc/StatementImpl.java @@ -835,8 +835,7 @@ protected long[] executeBatchInternal() throws SQLException { boolean multiQueriesEnabled = locallyScopedConn.getPropertySet().getBooleanProperty(PropertyKey.allowMultiQueries).getValue(); - if (multiQueriesEnabled || (locallyScopedConn.getPropertySet().getBooleanProperty(PropertyKey.rewriteBatchedStatements).getValue() - && nbrCommands > 4)) { + if (multiQueriesEnabled || this.rewriteBatchedStatements.getValue() && nbrCommands > 4) { return executeBatchUsingMultiQueries(multiQueriesEnabled, nbrCommands, individualStatementTimeout); }