diff --git data/files/encrypt_data.txt data/files/encrypt_data.txt new file mode 100644 index 0000000..9772f56 --- /dev/null +++ data/files/encrypt_data.txt @@ -0,0 +1,4 @@ +1a +2b +3c +4d \ No newline at end of file diff --git data/scripts/q_test_cleanup_for_encryption.sql data/scripts/q_test_cleanup_for_encryption.sql index d28f406..bbb1b97 100644 --- data/scripts/q_test_cleanup_for_encryption.sql +++ data/scripts/q_test_cleanup_for_encryption.sql @@ -2,4 +2,4 @@ DROP DATABASE encryptedWith128BitsKeyDB; DROP DATABASE encryptedWith256BitsKeyDB; -DROP DATABASE unencryptedDB; \ No newline at end of file +DROP TABLE IF EXISTS src; \ No newline at end of file diff --git data/scripts/q_test_init_for_encryption.sql data/scripts/q_test_init_for_encryption.sql index 9245508..332bb17 100644 --- data/scripts/q_test_init_for_encryption.sql +++ data/scripts/q_test_init_for_encryption.sql @@ -2,4 +2,8 @@ CREATE DATABASE encryptedWith128BitsKeyDB; CREATE DATABASE encryptedWith256BitsKeyDB; -CREATE DATABASE unencryptedDB; \ No newline at end of file +DROP TABLE IF EXISTS src; + +CREATE TABLE src(id int, value String); + +LOAD DATA LOCAL INPATH "${hiveconf:test.data.dir}/encrypt_data.txt" OVERWRITE INTO TABLE src; \ No newline at end of file diff --git itests/src/test/resources/testconfiguration.properties itests/src/test/resources/testconfiguration.properties index 5bf24b5..ea288e8 100644 --- itests/src/test/resources/testconfiguration.properties +++ itests/src/test/resources/testconfiguration.properties @@ -271,7 +271,7 @@ minitez.query.files=bucket_map_join_tez1.q,\ tez_smb_1.q,\ vectorized_dynamic_partition_pruning.q -encrypted.query.files.shared= +encrypted.query.files.shared=join_unencrypted_encrypted_tbls.q beeline.positive.exclude=add_part_exist.q,\ alter1.q,\ diff --git itests/util/src/main/java/org/apache/hadoop/hive/ql/QTestUtil.java itests/util/src/main/java/org/apache/hadoop/hive/ql/QTestUtil.java index ef883fe..74c3608 100644 --- itests/util/src/main/java/org/apache/hadoop/hive/ql/QTestUtil.java +++ itests/util/src/main/java/org/apache/hadoop/hive/ql/QTestUtil.java @@ -108,7 +108,6 @@ // database names used for testing the encrypted databases private static final String ENCRYPTED_WITH_128_BITS_KEY_DB_NAME = "encryptedwith128bitskeydb"; private static final String ENCRYPTED_WITH_256_BITS_KEY_DB_NAME = "encryptedwith256bitskeydb"; - private static final String UNENCRYPTED_DB_NAME = "unencrypteddb"; // security property names private static final String SECURITY_KEY_BIT_LENGTH_PROP_NAME = @@ -596,7 +595,7 @@ private boolean checkDBIfNeedToBePreserved(String dbName) { if (clusterType == MiniClusterType.encrypted) { return (DEFAULT_DATABASE_NAME.equals(dbName) || ENCRYPTED_WITH_128_BITS_KEY_DB_NAME.equals(dbName) || - ENCRYPTED_WITH_256_BITS_KEY_DB_NAME.equals(dbName) || UNENCRYPTED_DB_NAME.equals(dbName)); + ENCRYPTED_WITH_256_BITS_KEY_DB_NAME.equals(dbName)); } else { return DEFAULT_DATABASE_NAME.equals(dbName); } diff --git ql/src/test/queries/clientpositive/join_unencrypted_encrypted_tbls.q ql/src/test/queries/clientpositive/join_unencrypted_encrypted_tbls.q new file mode 100644 index 0000000..449874a --- /dev/null +++ ql/src/test/queries/clientpositive/join_unencrypted_encrypted_tbls.q @@ -0,0 +1,7 @@ +create table encryptedWith128BitsKeyDB.encryptedTableIn128BitsKey(id int, value String); + +insert overwrite table encryptedWith128BitsKeyDB.encryptedTableIn128BitsKey select * from src; + +select * from encryptedWith128BitsKeyDB.encryptedTableIn128BitsKey; + +select * from src t1 join encryptedWith128BitsKeyDB.encryptedTableIn128BitsKey t2 where t1.id = t2.id; \ No newline at end of file diff --git ql/src/test/results/clientpositive/encrypted/join_unencrypted_encrypted_tbls.q.out ql/src/test/results/clientpositive/encrypted/join_unencrypted_encrypted_tbls.q.out new file mode 100644 index 0000000..3097e1e --- /dev/null +++ ql/src/test/results/clientpositive/encrypted/join_unencrypted_encrypted_tbls.q.out @@ -0,0 +1,44 @@ +PREHOOK: query: create table encryptedWith128BitsKeyDB.encryptedTableIn128BitsKey(id int, value String) +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:encryptedwith128bitskeydb +PREHOOK: Output: encryptedWith128BitsKeyDB@encryptedTableIn128BitsKey +POSTHOOK: query: create table encryptedWith128BitsKeyDB.encryptedTableIn128BitsKey(id int, value String) +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:encryptedwith128bitskeydb +POSTHOOK: Output: encryptedWith128BitsKeyDB@encryptedTableIn128BitsKey +PREHOOK: query: insert overwrite table encryptedWith128BitsKeyDB.encryptedTableIn128BitsKey select * from src +PREHOOK: type: QUERY +PREHOOK: Input: default@src +PREHOOK: Output: encryptedwith128bitskeydb@encryptedtablein128bitskey +POSTHOOK: query: insert overwrite table encryptedWith128BitsKeyDB.encryptedTableIn128BitsKey select * from src +POSTHOOK: type: QUERY +POSTHOOK: Input: default@src +POSTHOOK: Output: encryptedwith128bitskeydb@encryptedtablein128bitskey +POSTHOOK: Lineage: encryptedtablein128bitskey.id SIMPLE [(src)src.FieldSchema(name:id, type:int, comment:null), ] +POSTHOOK: Lineage: encryptedtablein128bitskey.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:null), ] +PREHOOK: query: select * from encryptedWith128BitsKeyDB.encryptedTableIn128BitsKey +PREHOOK: type: QUERY +PREHOOK: Input: encryptedwith128bitskeydb@encryptedtablein128bitskey +#### A masked pattern was here #### +POSTHOOK: query: select * from encryptedWith128BitsKeyDB.encryptedTableIn128BitsKey +POSTHOOK: type: QUERY +POSTHOOK: Input: encryptedwith128bitskeydb@encryptedtablein128bitskey +#### A masked pattern was here #### +1 a +2 b +3 c +4 d +PREHOOK: query: select * from src t1 join encryptedWith128BitsKeyDB.encryptedTableIn128BitsKey t2 where t1.id = t2.id +PREHOOK: type: QUERY +PREHOOK: Input: default@src +PREHOOK: Input: encryptedwith128bitskeydb@encryptedtablein128bitskey +#### A masked pattern was here #### +POSTHOOK: query: select * from src t1 join encryptedWith128BitsKeyDB.encryptedTableIn128BitsKey t2 where t1.id = t2.id +POSTHOOK: type: QUERY +POSTHOOK: Input: default@src +POSTHOOK: Input: encryptedwith128bitskeydb@encryptedtablein128bitskey +#### A masked pattern was here #### +1 a 1 a +2 b 2 b +3 c 3 c +4 d 4 d