Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Splitting rocksdb_bulk_load variable into two (#143)
Summary: rocksdb_bulk_load changes two behaviors -- skipping unique check, and implicitly committing every rocksdb_bulk_load_size records. These are different features, and sometimes people want only one of them. This diff adds two new session variable rocksdb_skip_unique_check and rocksdb_commit_in_the_middle to take care of them. rocksdb_bulk_load still exists for compatibility, but will be removed in the future. This diff also adds safety check to return errors on REPLACE or INSERT ON DUPLICATE KEY UPDATE when skipping unique check. Test Plan: mtr Reviewers: spetrunia, hermanlee4, jkedgar Reviewed By: hermanlee4 Subscribers: MarkCallaghan, webscalesql-eng Differential Revision: https://reviews.facebook.net/D53061
- Loading branch information
1 parent
e7586b1
commit 0998b17
Showing
10 changed files
with
378 additions
and
12 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
100 changes: 100 additions & 0 deletions
100
mysql-test/suite/rocksdb_sys_vars/r/rocksdb_commit_in_the_middle_basic.result
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,100 @@ | ||
CREATE TABLE valid_values (value varchar(255)) ENGINE=myisam; | ||
INSERT INTO valid_values VALUES(1); | ||
INSERT INTO valid_values VALUES(0); | ||
INSERT INTO valid_values VALUES('on'); | ||
CREATE TABLE invalid_values (value varchar(255)) ENGINE=myisam; | ||
INSERT INTO invalid_values VALUES('\'aaa\''); | ||
INSERT INTO invalid_values VALUES('\'bbb\''); | ||
SET @start_global_value = @@global.ROCKSDB_COMMIT_IN_THE_MIDDLE; | ||
SELECT @start_global_value; | ||
@start_global_value | ||
0 | ||
SET @start_session_value = @@session.ROCKSDB_COMMIT_IN_THE_MIDDLE; | ||
SELECT @start_session_value; | ||
@start_session_value | ||
0 | ||
'# Setting to valid values in global scope#' | ||
"Trying to set variable @@global.ROCKSDB_COMMIT_IN_THE_MIDDLE to 1" | ||
SET @@global.ROCKSDB_COMMIT_IN_THE_MIDDLE = 1; | ||
SELECT @@global.ROCKSDB_COMMIT_IN_THE_MIDDLE; | ||
@@global.ROCKSDB_COMMIT_IN_THE_MIDDLE | ||
1 | ||
"Setting the global scope variable back to default" | ||
SET @@global.ROCKSDB_COMMIT_IN_THE_MIDDLE = DEFAULT; | ||
SELECT @@global.ROCKSDB_COMMIT_IN_THE_MIDDLE; | ||
@@global.ROCKSDB_COMMIT_IN_THE_MIDDLE | ||
0 | ||
"Trying to set variable @@global.ROCKSDB_COMMIT_IN_THE_MIDDLE to 0" | ||
SET @@global.ROCKSDB_COMMIT_IN_THE_MIDDLE = 0; | ||
SELECT @@global.ROCKSDB_COMMIT_IN_THE_MIDDLE; | ||
@@global.ROCKSDB_COMMIT_IN_THE_MIDDLE | ||
0 | ||
"Setting the global scope variable back to default" | ||
SET @@global.ROCKSDB_COMMIT_IN_THE_MIDDLE = DEFAULT; | ||
SELECT @@global.ROCKSDB_COMMIT_IN_THE_MIDDLE; | ||
@@global.ROCKSDB_COMMIT_IN_THE_MIDDLE | ||
0 | ||
"Trying to set variable @@global.ROCKSDB_COMMIT_IN_THE_MIDDLE to on" | ||
SET @@global.ROCKSDB_COMMIT_IN_THE_MIDDLE = on; | ||
SELECT @@global.ROCKSDB_COMMIT_IN_THE_MIDDLE; | ||
@@global.ROCKSDB_COMMIT_IN_THE_MIDDLE | ||
1 | ||
"Setting the global scope variable back to default" | ||
SET @@global.ROCKSDB_COMMIT_IN_THE_MIDDLE = DEFAULT; | ||
SELECT @@global.ROCKSDB_COMMIT_IN_THE_MIDDLE; | ||
@@global.ROCKSDB_COMMIT_IN_THE_MIDDLE | ||
0 | ||
'# Setting to valid values in session scope#' | ||
"Trying to set variable @@session.ROCKSDB_COMMIT_IN_THE_MIDDLE to 1" | ||
SET @@session.ROCKSDB_COMMIT_IN_THE_MIDDLE = 1; | ||
SELECT @@session.ROCKSDB_COMMIT_IN_THE_MIDDLE; | ||
@@session.ROCKSDB_COMMIT_IN_THE_MIDDLE | ||
1 | ||
"Setting the session scope variable back to default" | ||
SET @@session.ROCKSDB_COMMIT_IN_THE_MIDDLE = DEFAULT; | ||
SELECT @@session.ROCKSDB_COMMIT_IN_THE_MIDDLE; | ||
@@session.ROCKSDB_COMMIT_IN_THE_MIDDLE | ||
0 | ||
"Trying to set variable @@session.ROCKSDB_COMMIT_IN_THE_MIDDLE to 0" | ||
SET @@session.ROCKSDB_COMMIT_IN_THE_MIDDLE = 0; | ||
SELECT @@session.ROCKSDB_COMMIT_IN_THE_MIDDLE; | ||
@@session.ROCKSDB_COMMIT_IN_THE_MIDDLE | ||
0 | ||
"Setting the session scope variable back to default" | ||
SET @@session.ROCKSDB_COMMIT_IN_THE_MIDDLE = DEFAULT; | ||
SELECT @@session.ROCKSDB_COMMIT_IN_THE_MIDDLE; | ||
@@session.ROCKSDB_COMMIT_IN_THE_MIDDLE | ||
0 | ||
"Trying to set variable @@session.ROCKSDB_COMMIT_IN_THE_MIDDLE to on" | ||
SET @@session.ROCKSDB_COMMIT_IN_THE_MIDDLE = on; | ||
SELECT @@session.ROCKSDB_COMMIT_IN_THE_MIDDLE; | ||
@@session.ROCKSDB_COMMIT_IN_THE_MIDDLE | ||
1 | ||
"Setting the session scope variable back to default" | ||
SET @@session.ROCKSDB_COMMIT_IN_THE_MIDDLE = DEFAULT; | ||
SELECT @@session.ROCKSDB_COMMIT_IN_THE_MIDDLE; | ||
@@session.ROCKSDB_COMMIT_IN_THE_MIDDLE | ||
0 | ||
'# Testing with invalid values in global scope #' | ||
"Trying to set variable @@global.ROCKSDB_COMMIT_IN_THE_MIDDLE to 'aaa'" | ||
SET @@global.ROCKSDB_COMMIT_IN_THE_MIDDLE = 'aaa'; | ||
Got one of the listed errors | ||
SELECT @@global.ROCKSDB_COMMIT_IN_THE_MIDDLE; | ||
@@global.ROCKSDB_COMMIT_IN_THE_MIDDLE | ||
0 | ||
"Trying to set variable @@global.ROCKSDB_COMMIT_IN_THE_MIDDLE to 'bbb'" | ||
SET @@global.ROCKSDB_COMMIT_IN_THE_MIDDLE = 'bbb'; | ||
Got one of the listed errors | ||
SELECT @@global.ROCKSDB_COMMIT_IN_THE_MIDDLE; | ||
@@global.ROCKSDB_COMMIT_IN_THE_MIDDLE | ||
0 | ||
SET @@global.ROCKSDB_COMMIT_IN_THE_MIDDLE = @start_global_value; | ||
SELECT @@global.ROCKSDB_COMMIT_IN_THE_MIDDLE; | ||
@@global.ROCKSDB_COMMIT_IN_THE_MIDDLE | ||
0 | ||
SET @@session.ROCKSDB_COMMIT_IN_THE_MIDDLE = @start_session_value; | ||
SELECT @@session.ROCKSDB_COMMIT_IN_THE_MIDDLE; | ||
@@session.ROCKSDB_COMMIT_IN_THE_MIDDLE | ||
0 | ||
DROP TABLE valid_values; | ||
DROP TABLE invalid_values; |
100 changes: 100 additions & 0 deletions
100
mysql-test/suite/rocksdb_sys_vars/r/rocksdb_skip_unique_check_basic.result
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,100 @@ | ||
CREATE TABLE valid_values (value varchar(255)) ENGINE=myisam; | ||
INSERT INTO valid_values VALUES(1); | ||
INSERT INTO valid_values VALUES(0); | ||
INSERT INTO valid_values VALUES('on'); | ||
CREATE TABLE invalid_values (value varchar(255)) ENGINE=myisam; | ||
INSERT INTO invalid_values VALUES('\'aaa\''); | ||
INSERT INTO invalid_values VALUES('\'bbb\''); | ||
SET @start_global_value = @@global.ROCKSDB_SKIP_UNIQUE_CHECK; | ||
SELECT @start_global_value; | ||
@start_global_value | ||
0 | ||
SET @start_session_value = @@session.ROCKSDB_SKIP_UNIQUE_CHECK; | ||
SELECT @start_session_value; | ||
@start_session_value | ||
0 | ||
'# Setting to valid values in global scope#' | ||
"Trying to set variable @@global.ROCKSDB_SKIP_UNIQUE_CHECK to 1" | ||
SET @@global.ROCKSDB_SKIP_UNIQUE_CHECK = 1; | ||
SELECT @@global.ROCKSDB_SKIP_UNIQUE_CHECK; | ||
@@global.ROCKSDB_SKIP_UNIQUE_CHECK | ||
1 | ||
"Setting the global scope variable back to default" | ||
SET @@global.ROCKSDB_SKIP_UNIQUE_CHECK = DEFAULT; | ||
SELECT @@global.ROCKSDB_SKIP_UNIQUE_CHECK; | ||
@@global.ROCKSDB_SKIP_UNIQUE_CHECK | ||
0 | ||
"Trying to set variable @@global.ROCKSDB_SKIP_UNIQUE_CHECK to 0" | ||
SET @@global.ROCKSDB_SKIP_UNIQUE_CHECK = 0; | ||
SELECT @@global.ROCKSDB_SKIP_UNIQUE_CHECK; | ||
@@global.ROCKSDB_SKIP_UNIQUE_CHECK | ||
0 | ||
"Setting the global scope variable back to default" | ||
SET @@global.ROCKSDB_SKIP_UNIQUE_CHECK = DEFAULT; | ||
SELECT @@global.ROCKSDB_SKIP_UNIQUE_CHECK; | ||
@@global.ROCKSDB_SKIP_UNIQUE_CHECK | ||
0 | ||
"Trying to set variable @@global.ROCKSDB_SKIP_UNIQUE_CHECK to on" | ||
SET @@global.ROCKSDB_SKIP_UNIQUE_CHECK = on; | ||
SELECT @@global.ROCKSDB_SKIP_UNIQUE_CHECK; | ||
@@global.ROCKSDB_SKIP_UNIQUE_CHECK | ||
1 | ||
"Setting the global scope variable back to default" | ||
SET @@global.ROCKSDB_SKIP_UNIQUE_CHECK = DEFAULT; | ||
SELECT @@global.ROCKSDB_SKIP_UNIQUE_CHECK; | ||
@@global.ROCKSDB_SKIP_UNIQUE_CHECK | ||
0 | ||
'# Setting to valid values in session scope#' | ||
"Trying to set variable @@session.ROCKSDB_SKIP_UNIQUE_CHECK to 1" | ||
SET @@session.ROCKSDB_SKIP_UNIQUE_CHECK = 1; | ||
SELECT @@session.ROCKSDB_SKIP_UNIQUE_CHECK; | ||
@@session.ROCKSDB_SKIP_UNIQUE_CHECK | ||
1 | ||
"Setting the session scope variable back to default" | ||
SET @@session.ROCKSDB_SKIP_UNIQUE_CHECK = DEFAULT; | ||
SELECT @@session.ROCKSDB_SKIP_UNIQUE_CHECK; | ||
@@session.ROCKSDB_SKIP_UNIQUE_CHECK | ||
0 | ||
"Trying to set variable @@session.ROCKSDB_SKIP_UNIQUE_CHECK to 0" | ||
SET @@session.ROCKSDB_SKIP_UNIQUE_CHECK = 0; | ||
SELECT @@session.ROCKSDB_SKIP_UNIQUE_CHECK; | ||
@@session.ROCKSDB_SKIP_UNIQUE_CHECK | ||
0 | ||
"Setting the session scope variable back to default" | ||
SET @@session.ROCKSDB_SKIP_UNIQUE_CHECK = DEFAULT; | ||
SELECT @@session.ROCKSDB_SKIP_UNIQUE_CHECK; | ||
@@session.ROCKSDB_SKIP_UNIQUE_CHECK | ||
0 | ||
"Trying to set variable @@session.ROCKSDB_SKIP_UNIQUE_CHECK to on" | ||
SET @@session.ROCKSDB_SKIP_UNIQUE_CHECK = on; | ||
SELECT @@session.ROCKSDB_SKIP_UNIQUE_CHECK; | ||
@@session.ROCKSDB_SKIP_UNIQUE_CHECK | ||
1 | ||
"Setting the session scope variable back to default" | ||
SET @@session.ROCKSDB_SKIP_UNIQUE_CHECK = DEFAULT; | ||
SELECT @@session.ROCKSDB_SKIP_UNIQUE_CHECK; | ||
@@session.ROCKSDB_SKIP_UNIQUE_CHECK | ||
0 | ||
'# Testing with invalid values in global scope #' | ||
"Trying to set variable @@global.ROCKSDB_SKIP_UNIQUE_CHECK to 'aaa'" | ||
SET @@global.ROCKSDB_SKIP_UNIQUE_CHECK = 'aaa'; | ||
Got one of the listed errors | ||
SELECT @@global.ROCKSDB_SKIP_UNIQUE_CHECK; | ||
@@global.ROCKSDB_SKIP_UNIQUE_CHECK | ||
0 | ||
"Trying to set variable @@global.ROCKSDB_SKIP_UNIQUE_CHECK to 'bbb'" | ||
SET @@global.ROCKSDB_SKIP_UNIQUE_CHECK = 'bbb'; | ||
Got one of the listed errors | ||
SELECT @@global.ROCKSDB_SKIP_UNIQUE_CHECK; | ||
@@global.ROCKSDB_SKIP_UNIQUE_CHECK | ||
0 | ||
SET @@global.ROCKSDB_SKIP_UNIQUE_CHECK = @start_global_value; | ||
SELECT @@global.ROCKSDB_SKIP_UNIQUE_CHECK; | ||
@@global.ROCKSDB_SKIP_UNIQUE_CHECK | ||
0 | ||
SET @@session.ROCKSDB_SKIP_UNIQUE_CHECK = @start_session_value; | ||
SELECT @@session.ROCKSDB_SKIP_UNIQUE_CHECK; | ||
@@session.ROCKSDB_SKIP_UNIQUE_CHECK | ||
0 | ||
DROP TABLE valid_values; | ||
DROP TABLE invalid_values; |
Oops, something went wrong.