Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Incident#567732673 - Add provision to set SQLServerBulkCopy options in PreparedStatement #2555

Merged
merged 25 commits into from
Jan 24, 2025
Merged
Show file tree
Hide file tree
Changes from 13 commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
8e6ea89
Add provision to set SQLServerBulkCopy options in PreparedStatement
machavan Dec 4, 2024
684dab5
Reanmed test
machavan Dec 4, 2024
85cdfa9
Renamed bcCopyOptions to bcOptions
machavan Dec 4, 2024
1c0ed12
Fixed indentation
machavan Dec 4, 2024
0dd56f4
Fail the test that enables consraint checking when exception is not
machavan Dec 4, 2024
4f4fa19
Added connection string options for all the available bulk copy options
machavan Dec 12, 2024
c5972bc
Added test case for bulkCopyOptionDefaultsBatchSize, bulkCopyOptionDe…
muskan124947 Dec 18, 2024
51142cd
Added test case for bulkCopty options in Prepared Statement
muskan124947 Dec 18, 2024
2306130
Updated failures in test case
muskan124947 Dec 18, 2024
df2a292
Added test case testBulkCopyOptionDefaultsTimeoutLowerValue
muskan124947 Dec 19, 2024
9693541
Added test case for bulkCopyOptionDefaultsAllowEncryptedValueModifica…
muskan124947 Dec 19, 2024
85f9243
Fixed failures
muskan124947 Dec 19, 2024
151fcf8
Added test scenario for bulkCopyOptionDefaultsAllowEncryptedValueModi…
muskan124947 Dec 20, 2024
f61cd29
Improved messages.
machavan Jan 7, 2025
193b9a2
Merge remote-tracking branch 'origin/main' into dev/machavan/batchbco…
divang Jan 9, 2025
03ce6d7
Remove the setBulkCopyOptions method from PreparedStatement
machavan Jan 10, 2025
fee3149
Fixed indent issue.
machavan Jan 10, 2025
0f08eba
Update name for bulk copy batchSize option
muskan124947 Jan 17, 2025
6d91b6d
Update name for bulk copy timeout option
muskan124947 Jan 17, 2025
c999c30
Update name for bulk copy check constraints option
muskan124947 Jan 17, 2025
93a38ac
Update name for bulk copy fireTrigger, keepIdentity, keepNulls, table…
muskan124947 Jan 17, 2025
96fa336
Remove timeout option as configured already in bulk copy option
muskan124947 Jan 17, 2025
9106cb4
Updated value of bulkCopyForBatchInsertTimeout to 60s
muskan124947 Jan 17, 2025
18df027
Removed timeout and internal transaction option
muskan124947 Jan 20, 2025
a698c02
removed local changes
muskan124947 Jan 20, 2025
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
135 changes: 135 additions & 0 deletions src/main/java/com/microsoft/sqlserver/jdbc/ISQLServerConnection.java
Original file line number Diff line number Diff line change
Expand Up @@ -547,4 +547,139 @@ CallableStatement prepareCall(String sql, int nType, int nConcur, int nHold,
* @return cacheBulkCopyMetadata boolean value
*/
boolean getcacheBulkCopyMetadata();

/**
* Specifies the default batch size for bulk copy operations.
*
* @param bulkCopyOptionDefaultsBatchSize
* integer value for bulkCopyOptionDefaultsBatchSize.
*/
void setBulkCopyOptionDefaultsBatchSize(int bulkCopyOptionDefaultsBatchSize);

/**
* Returns the default batch size for bulk copy operations.
*
* @return integer value for bulkCopyOptionDefaultsBatchSize.
*/
int getBulkCopyOptionDefaultsBatchSize();

/**
* Specifies the default timeout for bulk copy operations.
*
* @param bulkCopyOptionDefaultsTimeout
* integer value for bulkCopyOptionDefaultsTimeout.
*/
void setBulkCopyOptionDefaultsTimeout(int bulkCopyOptionDefaultsTimeout);

/**
* Returns the default timeout for bulk copy operations.
*
* @return integer value for bulkCopyOptionDefaultsTimeout.
*/
int getBulkCopyOptionDefaultsTimeout();

/**
* Specifies the default check constraints option for bulk copy operations.
*
* @param bulkCopyOptionDefaultsCheckConstraints
* boolean value for bulkCopyOptionDefaultsCheckConstraints.
*/
void setBulkCopyOptionDefaultsCheckConstraints(boolean bulkCopyOptionDefaultsCheckConstraints);

/**
* Returns the default check constraints option for bulk copy operations.
*
* @return boolean value for bulkCopyOptionDefaultsCheckConstraints.
*/
boolean getBulkCopyOptionDefaultsCheckConstraints();

/**
* Specifies the default fire triggers option for bulk copy operations.
*
* @param bulkCopyOptionDefaultsFireTriggers
* boolean value for bulkCopyOptionDefaultsFireTriggers.
*/
void setBulkCopyOptionDefaultsFireTriggers(boolean bulkCopyOptionDefaultsFireTriggers);

/**
* Returns the default fire triggers option for bulk copy operations.
*
* @return boolean value for bulkCopyOptionDefaultsFireTriggers.
*/
boolean getBulkCopyOptionDefaultsFireTriggers();

/**
* Specifies the default keep identity option for bulk copy operations.
*
* @param bulkCopyOptionDefaultsKeepIdentity
* boolean value for bulkCopyOptionDefaultsKeepIdentity.
*/
void setBulkCopyOptionDefaultsKeepIdentity(boolean bulkCopyOptionDefaultsKeepIdentity);

/**
* Returns the default keep identity option for bulk copy operations.
*
* @return boolean value for bulkCopyOptionDefaultsKeepIdentity.
*/
boolean getBulkCopyOptionDefaultsKeepIdentity();

/**
* Specifies the default keep nulls option for bulk copy operations.
*
* @param bulkCopyOptionDefaultsKeepNulls
* boolean value for bulkCopyOptionDefaultsKeepNulls.
*/
void setBulkCopyOptionDefaultsKeepNulls(boolean bulkCopyOptionDefaultsKeepNulls);

/**
* Returns the default keep nulls option for bulk copy operations.
*
* @return boolean value for bulkCopyOptionDefaultsKeepNulls.
*/
boolean getBulkCopyOptionDefaultsKeepNulls();

/**
* Specifies the default table lock option for bulk copy operations.
*
* @param bulkCopyOptionDefaultsTableLock
* boolean value for bulkCopyOptionDefaultsTableLock.
*/
void setBulkCopyOptionDefaultsTableLock(boolean bulkCopyOptionDefaultsTableLock);

/**
* Returns the default table lock option for bulk copy operations.
*
* @return boolean value for bulkCopyOptionDefaultsTableLock.
*/
boolean getBulkCopyOptionDefaultsTableLock();

/**
* Specifies the default use internal transaction option for bulk copy operations.
*
* @param bulkCopyOptionDefaultsUseInternalTransaction
* boolean value for bulkCopyOptionDefaultsUseInternalTransaction.
*/
void setBulkCopyOptionDefaultsUseInternalTransaction(boolean bulkCopyOptionDefaultsUseInternalTransaction);

/**
* Returns the default use internal transaction option for bulk copy operations.
*
* @return boolean value for bulkCopyOptionDefaultsUseInternalTransaction.
*/
boolean getBulkCopyOptionDefaultsUseInternalTransaction();

/**
* Specifies the default allow encrypted value modifications option for bulk copy operations.
*
* @param bulkCopyOptionDefaultsAllowEncryptedValueModifications
* boolean value for bulkCopyOptionDefaultsAllowEncryptedValueModifications.
*/
void setBulkCopyOptionDefaultsAllowEncryptedValueModifications(boolean bulkCopyOptionDefaultsAllowEncryptedValueModifications);

/**
* Returns the default allow encrypted value modifications option for bulk copy operations.
*
* @return boolean value for bulkCopyOptionDefaultsAllowEncryptedValueModifications.
*/
boolean getBulkCopyOptionDefaultsAllowEncryptedValueModifications();
}
135 changes: 135 additions & 0 deletions src/main/java/com/microsoft/sqlserver/jdbc/ISQLServerDataSource.java
Original file line number Diff line number Diff line change
Expand Up @@ -980,6 +980,141 @@ public interface ISQLServerDataSource extends javax.sql.CommonDataSource {
*/
void setUseBulkCopyForBatchInsert(boolean useBulkCopyForBatchInsert);

/**
* Sets the default batch size for Bulk Copy operations.
*
* @param bulkCopyOptionDefaultsBatchSize
* the default batch size for Bulk Copy operations.
*/
void setBulkCopyOptionDefaultsBatchSize(int bulkCopyOptionDefaultsBatchSize);

/**
* Returns the default batch size for Bulk Copy operations.
*
* @return the default batch size for Bulk Copy operations.
*/
int getBulkCopyOptionDefaultsBatchSize();

/**
* Sets the default timeout for Bulk Copy operations.
*
* @param bulkCopyOptionDefaultsTimeout
* the default timeout for Bulk Copy operations.
*/
void setBulkCopyOptionDefaultsTimeout(int bulkCopyOptionDefaultsTimeout);

/**
* Returns the default timeout for Bulk Copy operations.
*
* @return the default timeout for Bulk Copy operations.
*/
int getBulkCopyOptionDefaultsTimeout();

/**
* Sets whether to check constraints during Bulk Copy operations.
*
* @param bulkCopyOptionDefaultsCheckConstraints
* indicates whether to check constraints during Bulk Copy operations.
*/
void setBulkCopyOptionDefaultsCheckConstraints(boolean bulkCopyOptionDefaultsCheckConstraints);

/**
* Returns whether to check constraints during Bulk Copy operations.
*
* @return whether to check constraints during Bulk Copy operations.
*/
boolean getBulkCopyOptionDefaultsCheckConstraints();

/**
* Sets whether to fire triggers during Bulk Copy operations.
*
* @param bulkCopyOptionDefaultsFireTriggers
* indicates whether to fire triggers during Bulk Copy operations.
*/
void setBulkCopyOptionDefaultsFireTriggers(boolean bulkCopyOptionDefaultsFireTriggers);

/**
* Returns whether to fire triggers during Bulk Copy operations.
*
* @return whether to fire triggers during Bulk Copy operations.
*/
boolean getBulkCopyOptionDefaultsFireTriggers();

/**
* Sets whether to keep identity values during Bulk Copy operations.
*
* @param bulkCopyOptionDefaultsKeepIdentity
* indicates whether to keep identity values during Bulk Copy operations.
*/
void setBulkCopyOptionDefaultsKeepIdentity(boolean bulkCopyOptionDefaultsKeepIdentity);

/**
* Returns whether to keep identity values during Bulk Copy operations.
*
* @return whether to keep identity values during Bulk Copy operations.
*/
boolean getBulkCopyOptionDefaultsKeepIdentity();

/**
* Sets whether to keep null values during Bulk Copy operations.
*
* @param bulkCopyOptionDefaultsKeepNulls
* indicates whether to keep null values during Bulk Copy operations.
*/
void setBulkCopyOptionDefaultsKeepNulls(boolean bulkCopyOptionDefaultsKeepNulls);

/**
* Returns whether to keep null values during Bulk Copy operations.
*
* @return whether to keep null values during Bulk Copy operations.
*/
boolean getBulkCopyOptionDefaultsKeepNulls();

/**
* Sets whether to use table lock during Bulk Copy operations.
*
* @param bulkCopyOptionDefaultsTableLock
* indicates whether to use table lock during Bulk Copy operations.
*/
void setBulkCopyOptionDefaultsTableLock(boolean bulkCopyOptionDefaultsTableLock);

/**
* Returns whether to use table lock during Bulk Copy operations.
*
* @return whether to use table lock during Bulk Copy operations.
*/
boolean getBulkCopyOptionDefaultsTableLock();

/**
* Sets whether to use internal transaction during Bulk Copy operations.
*
* @param bulkCopyOptionDefaultsUseInternalTransaction
* indicates whether to use internal transaction during Bulk Copy operations.
*/
void setBulkCopyOptionDefaultsUseInternalTransaction(boolean bulkCopyOptionDefaultsUseInternalTransaction);

/**
* Returns whether to use internal transaction during Bulk Copy operations.
*
* @return whether to use internal transaction during Bulk Copy operations.
*/
boolean getBulkCopyOptionDefaultsUseInternalTransaction();

/**
* Sets whether to allow encrypted value modifications during Bulk Copy operations.
*
* @param bulkCopyOptionDefaultsAllowEncryptedValueModifications
* indicates whether to allow encrypted value modifications during Bulk Copy operations.
*/
void setBulkCopyOptionDefaultsAllowEncryptedValueModifications(boolean bulkCopyOptionDefaultsAllowEncryptedValueModifications);

/**
* Returns whether to allow encrypted value modifications during Bulk Copy operations.
*
* @return whether to allow encrypted value modifications during Bulk Copy operations.
*/
boolean getBulkCopyOptionDefaultsAllowEncryptedValueModifications();

/**
* Sets the client id to be used to retrieve the access token for a user-assigned Managed Identity.
*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -103,6 +103,22 @@ public SQLServerBulkCopyOptions() {
useInternalTransaction = false;
allowEncryptedValueModifications = false;
}

/**
* Constructs a SQLServerBulkCopySettings class using defaults from given connection
*/
SQLServerBulkCopyOptions(SQLServerConnection conn) {
machavan marked this conversation as resolved.
Show resolved Hide resolved
batchSize = conn.getBulkCopyOptionDefaultsBatchSize();
bulkCopyTimeout = conn.getBulkCopyOptionDefaultsTimeout();
checkConstraints = conn.getBulkCopyOptionDefaultsCheckConstraints();
fireTriggers = conn.getBulkCopyOptionDefaultsFireTriggers();
keepIdentity = conn.getBulkCopyOptionDefaultsKeepIdentity();
keepNulls = conn.getBulkCopyOptionDefaultsKeepNulls();
tableLock = conn.getBulkCopyOptionDefaultsTableLock();
useInternalTransaction = conn.getBulkCopyOptionDefaultsUseInternalTransaction();
allowEncryptedValueModifications = conn.getBulkCopyOptionDefaultsAllowEncryptedValueModifications();
}


/**
* Returns the number of rows in each batch. At the end of each batch, the rows in the batch are sent to the server.
Expand Down
Loading
Loading