Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion cloudsql-mysql-plugin/docs/CloudSQLMySQL-batchsink.md
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ Can be found in the instance overview page.

**Password:** Password to use to connect to the specified database.

**Transaction Isolation Level:** Transaction isolation level for queries run by this sink.
**Transaction Isolation Level:** Transaction isolation level for queries run by this sink.

**Connection Timeout:** The timeout value (in seconds) used for socket connect operations. If connecting to the server
takes longer than this value, the connection is broken. A value of 0 means that it is disabled.
Expand Down
8 changes: 8 additions & 0 deletions cloudsql-mysql-plugin/docs/CloudSQLMySQL-batchsource.md
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,14 @@ For example, 'SELECT MIN(id),MAX(id) FROM table'. Not required if numSplits is s

**Password:** Password to use to connect to the specified database.

**Transaction Isolation Level:** The transaction isolation level of the database connection.
- TRANSACTION_READ_COMMITTED: No dirty reads. Non-repeatable reads and phantom reads are possible.
- TRANSACTION_SERIALIZABLE: No dirty reads. Non-repeatable and phantom reads are prevented.
- TRANSACTION_REPEATABLE_READ: No dirty reads. Prevents non-repeatable reads, but phantom reads are still possible.
- TRANSACTION_READ_UNCOMMITTED: Allows dirty reads (reading uncommitted changes from other transactions). Non-repeatable reads and phantom reads are possible.

For more details on the Transaction Isolation Levels supported in CloudSQL MySQL, refer to the [CloudSQL MySQL documentation](https://dev.mysql.com/doc/refman/8.0/en/innodb-transaction-isolation-levels.html)

**Connection Arguments:** A list of arbitrary string key/value pairs as connection arguments. These arguments
will be passed to the JDBC driver as connection arguments for JDBC drivers that may need additional configurations.

Expand Down
8 changes: 8 additions & 0 deletions cloudsql-mysql-plugin/docs/CloudSQLMySQL-connector.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,14 @@ authentication. Optional for databases that do not require authentication.

**Password:** Password to use to connect to the specified database.

**Transaction Isolation Level:** The transaction isolation level of the database connection.
- TRANSACTION_READ_COMMITTED: No dirty reads. Non-repeatable reads and phantom reads are possible.
- TRANSACTION_SERIALIZABLE: No dirty reads. Non-repeatable and phantom reads are prevented.
- TRANSACTION_REPEATABLE_READ: No dirty reads. Prevents non-repeatable reads, but phantom reads are still possible.
- TRANSACTION_READ_UNCOMMITTED: Allows dirty reads (reading uncommitted changes from other transactions). Non-repeatable reads and phantom reads are possible.

For more details on the Transaction Isolation Levels supported in CloudSQL MySQL, refer to the [CloudSQL MySQL documentation](https://dev.mysql.com/doc/refman/8.0/en/innodb-transaction-isolation-levels.html)

**Connection Arguments:** A list of arbitrary string tag/value pairs as connection arguments. These arguments
will be passed to the JDBC driver, as connection arguments, for JDBC drivers that may need additional configurations.
This is a semicolon-separated list of key-value pairs, where each pair is separated by a equals '=' and specifies
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -156,6 +156,13 @@ public static class CloudSQLMySQLSourceConfig extends AbstractDBSpecificSourceCo
@Description("The existing connection to use.")
private CloudSQLMySQLConnectorConfig connection;

@Name(TRANSACTION_ISOLATION_LEVEL)
@Description("Transaction isolation level for queries run by this source.")
@Nullable
private String transactionIsolationLevel;

private static final String DEFAULT_TRANSACTION_ISOLATION_LEVEL = "TRANSACTION_REPEATABLE_READ";

@Override
protected Map<String, String> getDBSpecificArguments() {
if (getFetchSize() == null || getFetchSize() <= 0) {
Expand All @@ -168,6 +175,11 @@ protected Map<String, String> getDBSpecificArguments() {
return arguments;
}

@Override
public String getTransactionIsolationLevel() {
return transactionIsolationLevel != null ? transactionIsolationLevel : DEFAULT_TRANSACTION_ISOLATION_LEVEL;
}

@Override
public void validate(FailureCollector collector) {
ConfigUtil.validateConnection(this, useConnection, connection, collector);
Expand Down
14 changes: 14 additions & 0 deletions cloudsql-mysql-plugin/widgets/CloudSQLMySQL-batchsource.json
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,20 @@
"label": "Password",
"name": "password"
},
{
"widget-type": "select",
"label": "Transaction Isolation Level",
"name": "transactionIsolationLevel",
"widget-attributes": {
"default": "TRANSACTION_REPEATABLE_READ",
"values": [
"TRANSACTION_REPEATABLE_READ",
"TRANSACTION_READ_UNCOMMITTED",
"TRANSACTION_READ_COMMITTED",
"TRANSACTION_SERIALIZABLE"
]
}
},
{
"widget-type": "keyvalue",
"label": "Connection Arguments",
Expand Down
14 changes: 14 additions & 0 deletions cloudsql-mysql-plugin/widgets/CloudSQLMySQL-connector.json
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,20 @@
"widget-attributes": {
"default": "3306"
}
},
{
"widget-type": "select",
"label": "Transaction Isolation Level",
"name": "transactionIsolationLevel",
"widget-attributes": {
"default": "TRANSACTION_REPEATABLE_READ",
"values": [
"TRANSACTION_REPEATABLE_READ",
"TRANSACTION_READ_UNCOMMITTED",
"TRANSACTION_READ_COMMITTED",
"TRANSACTION_SERIALIZABLE"
]
}
}
]
},
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ Can be found in the instance overview page.

**Password:** Password to use to connect to the specified database.

**Transaction Isolation Level:** Transaction isolation level for queries run by this sink.
**Transaction Isolation Level:** Transaction isolation level for queries run by this sink.

**Connection Arguments:** A list of arbitrary string key/value pairs as connection arguments. These arguments
will be passed to the JDBC driver as connection arguments for JDBC drivers that may need additional configurations.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,14 @@ For example, 'SELECT MIN(id),MAX(id) FROM table'. Not required if numSplits is s

**Password:** Password to use to connect to the specified database.

**Transaction Isolation Level:** The transaction isolation level of the database connection.
- TRANSACTION_READ_COMMITTED: No dirty reads. Non-repeatable reads and phantom reads are possible.
- TRANSACTION_SERIALIZABLE: No dirty reads. Non-repeatable and phantom reads are prevented.
- TRANSACTION_REPEATABLE_READ: No dirty reads. Prevents non-repeatable reads, but phantom reads are still possible.
- Note: PostgreSQL does not implement `TRANSACTION_READ_UNCOMMITTED` as a distinct isolation level. Instead, this mode behaves identically to`TRANSACTION_READ_COMMITTED`, which is why it is not exposed as a separate option.

For more details on the Transaction Isolation Levels supported in CloudSQL PostgreSQL, refer to the [CloudSQL PostgreSQL documentation](https://www.postgresql.org/docs/current/transaction-iso.html)

**Connection Arguments:** A list of arbitrary string key/value pairs as connection arguments. These arguments
will be passed to the JDBC driver as connection arguments for JDBC drivers that may need additional configurations.

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,14 @@ authentication. Optional for databases that do not require authentication.

**Password:** Password to use to connect to the specified database.

**Transaction Isolation Level:** The transaction isolation level of the database connection.
- TRANSACTION_READ_COMMITTED: No dirty reads. Non-repeatable reads and phantom reads are possible.
- TRANSACTION_SERIALIZABLE: No dirty reads. Non-repeatable and phantom reads are prevented.
- TRANSACTION_REPEATABLE_READ: No dirty reads. Prevents non-repeatable reads, but phantom reads are still possible.
- Note: PostgreSQL does not implement `TRANSACTION_READ_UNCOMMITTED` as a distinct isolation level. Instead, this mode behaves identically to`TRANSACTION_READ_COMMITTED`, which is why it is not exposed as a separate option.

For more details on the Transaction Isolation Levels supported in CloudSQL PostgreSQL, refer to the [CloudSQL PostgreSQL documentation](https://www.postgresql.org/docs/current/transaction-iso.html)

**Connection Arguments:** A list of arbitrary string tag/value pairs as connection arguments. These arguments
will be passed to the JDBC driver, as connection arguments, for JDBC drivers that may need additional configurations.
This is a semicolon-separated list of key-value pairs, where each pair is separated by a equals '=' and specifies
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -157,6 +157,13 @@ public static class CloudSQLPostgreSQLSourceConfig extends AbstractDBSpecificSou
@Description("The existing connection to use.")
private CloudSQLPostgreSQLConnectorConfig connection;

@Name(TRANSACTION_ISOLATION_LEVEL)
@Description("Transaction isolation level for queries run by this source.")
@Nullable
private String transactionIsolationLevel;

private static final String DEFAULT_TRANSACTION_ISOLATION_LEVEL = "TRANSACTION_READ_COMMITTED";

@Override
protected Map<String, String> getDBSpecificArguments() {
return Collections.emptyMap();
Expand All @@ -173,6 +180,11 @@ protected CloudSQLPostgreSQLConnectorConfig getConnection() {
return connection;
}

@Override
public String getTransactionIsolationLevel() {
return transactionIsolationLevel != null ? transactionIsolationLevel : DEFAULT_TRANSACTION_ISOLATION_LEVEL;
}

@Override
public void validate(FailureCollector collector) {
ConfigUtil.validateConnection(this, useConnection, connection, collector);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,19 @@
"label": "Password",
"name": "password"
},
{
"widget-type": "select",
"label": "Transaction Isolation Level",
"name": "transactionIsolationLevel",
"widget-attributes": {
"default": "TRANSACTION_READ_COMMITTED",
"values": [
"TRANSACTION_READ_COMMITTED",
"TRANSACTION_REPEATABLE_READ",
"TRANSACTION_SERIALIZABLE"
]
}
},
{
"widget-type": "keyvalue",
"label": "Connection Arguments",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,19 @@
"widget-attributes": {
"default": "5432"
}
},
{
"widget-type": "select",
"label": "Transaction Isolation Level",
"name": "transactionIsolationLevel",
"widget-attributes": {
"default": "TRANSACTION_READ_COMMITTED",
"values": [
"TRANSACTION_READ_COMMITTED",
"TRANSACTION_REPEATABLE_READ",
"TRANSACTION_SERIALIZABLE"
]
}
}
]
},
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,7 @@ public abstract class AbstractDBSpecificSourceConfig extends PluginConfig implem
public static final String DATABASE = "database";
public static final String FETCH_SIZE = "fetchSize";
public static final String DEFAULT_FETCH_SIZE = "1000";
public static final String TRANSACTION_ISOLATION_LEVEL = "transactionIsolationLevel";

@Name(Constants.Reference.REFERENCE_NAME)
@Description(Constants.Reference.REFERENCE_NAME_DESCRIPTION)
Expand Down