This is an automated email from the ASF dual-hosted git repository.
duanzhengqiang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shardingsphere.git
The following commit(s) were added to refs/heads/master by this push:
new 627375173ce Support encrypt rewriter test with custom databaseName
config (#30598)
627375173ce is described below
commit 627375173ce5755b77ea47209bead06f1e11542e
Author: LotusMoon <[email protected]>
AuthorDate: Fri Mar 22 10:16:17 2024 +0800
Support encrypt rewriter test with custom databaseName config (#30598)
* Support encrypt rewriter with custom databaseName config
* Resolving code conflicts
---
.../test/it/rewrite/engine/SQLRewriterIT.java | 15 ++++++++-------
.../encrypt/case/query-with-cipher/dml/delete/delete.xml | 2 +-
.../query-with-cipher/dml/select/select-projection.xml | 8 ++++----
.../case/query-with-cipher/dml/select/select-where.xml | 5 +++++
.../scenario/encrypt/config/query-with-cipher.yaml | 2 ++
5 files changed, 20 insertions(+), 12 deletions(-)
diff --git
a/test/it/rewriter/src/test/java/org/apache/shardingsphere/test/it/rewrite/engine/SQLRewriterIT.java
b/test/it/rewriter/src/test/java/org/apache/shardingsphere/test/it/rewrite/engine/SQLRewriterIT.java
index e154914c23d..dd68a4ad6dd 100644
---
a/test/it/rewriter/src/test/java/org/apache/shardingsphere/test/it/rewrite/engine/SQLRewriterIT.java
+++
b/test/it/rewriter/src/test/java/org/apache/shardingsphere/test/it/rewrite/engine/SQLRewriterIT.java
@@ -126,25 +126,26 @@ public abstract class SQLRewriterIT {
DatabaseType databaseType =
TypedSPILoader.getService(DatabaseType.class, testParams.getDatabaseType());
ResourceMetaData resourceMetaData = mock(ResourceMetaData.class,
RETURNS_DEEP_STUBS);
when(resourceMetaData.getStorageUnits()).thenReturn(databaseConfig.getStorageUnits());
- String schemaName = new
DatabaseTypeRegistry(databaseType).getDefaultSchemaName(DefaultDatabase.LOGIC_NAME);
+ String databaseName = null != rootConfig.getDatabaseName() ?
rootConfig.getDatabaseName() : DefaultDatabase.LOGIC_NAME;
+ String schemaName = new
DatabaseTypeRegistry(databaseType).getDefaultSchemaName(databaseName);
SQLStatementParserEngine sqlStatementParserEngine = new
SQLStatementParserEngine(TypedSPILoader.getService(DatabaseType.class,
testParams.getDatabaseType()),
sqlParserRule.getSqlStatementCache(),
sqlParserRule.getParseTreeCache());
String sql = SQLHintUtils.removeHint(testParams.getInputSQL());
SQLStatement sqlStatement = sqlStatementParserEngine.parse(sql, false);
Collection<ShardingSphereRule> databaseRules =
createDatabaseRules(databaseConfig, schemaName, sqlStatement, databaseType);
RuleMetaData databaseRuleMetaData = new RuleMetaData(databaseRules);
- ShardingSphereDatabase database = new
ShardingSphereDatabase(DefaultDatabase.LOGIC_NAME, databaseType,
resourceMetaData, databaseRuleMetaData, mockSchemas(schemaName));
+ ShardingSphereDatabase database = new
ShardingSphereDatabase(databaseName, databaseType, resourceMetaData,
databaseRuleMetaData, mockSchemas(schemaName));
Map<String, ShardingSphereDatabase> databases = new HashMap<>(2, 1F);
- databases.put(database.getName(), database);
+ databases.put(databaseName, database);
RuleMetaData globalRuleMetaData = new
RuleMetaData(createGlobalRules());
ShardingSphereMetaData metaData = new
ShardingSphereMetaData(databases, mock(ResourceMetaData.class),
globalRuleMetaData, mock(ConfigurationProperties.class));
HintValueContext hintValueContext =
SQLHintUtils.extractHint(testParams.getInputSQL());
- SQLStatementContext sqlStatementContext = new SQLBindEngine(metaData,
database.getName(), hintValueContext).bind(sqlStatement,
Collections.emptyList());
+ SQLStatementContext sqlStatementContext = new SQLBindEngine(metaData,
databaseName, hintValueContext).bind(sqlStatement, Collections.emptyList());
if (sqlStatementContext instanceof ParameterAware) {
((ParameterAware)
sqlStatementContext).setUpParameters(testParams.getInputParameters());
}
if (sqlStatementContext instanceof CursorDefinitionAware) {
- ((CursorDefinitionAware)
sqlStatementContext).setUpCursorDefinition(createCursorDefinition(database.getName(),
metaData, sqlStatementParserEngine));
+ ((CursorDefinitionAware)
sqlStatementContext).setUpCursorDefinition(createCursorDefinition(databaseName,
metaData, sqlStatementParserEngine));
}
QueryContext queryContext = new QueryContext(sqlStatementContext, sql,
testParams.getInputParameters(), hintValueContext);
ConfigurationProperties props = new
ConfigurationProperties(rootConfig.getProps());
@@ -174,9 +175,9 @@ public abstract class SQLRewriterIT {
return result;
}
- private CursorStatementContext createCursorDefinition(final String
databaseName, final ShardingSphereMetaData metaData, final
SQLStatementParserEngine sqlStatementParserEngine) {
+ private CursorStatementContext createCursorDefinition(final String
schemaName, final ShardingSphereMetaData metaData, final
SQLStatementParserEngine sqlStatementParserEngine) {
SQLStatement sqlStatement = sqlStatementParserEngine.parse("CURSOR
t_account_cursor FOR SELECT * FROM t_account WHERE account_id = 100", false);
- return (CursorStatementContext) new SQLBindEngine(metaData,
databaseName, new HintValueContext()).bind(sqlStatement,
Collections.emptyList());
+ return (CursorStatementContext) new SQLBindEngine(metaData,
schemaName, new HintValueContext()).bind(sqlStatement, Collections.emptyList());
}
protected abstract void mockDataSource(Map<String, DataSource>
dataSources) throws SQLException;
diff --git
a/test/it/rewriter/src/test/resources/scenario/encrypt/case/query-with-cipher/dml/delete/delete.xml
b/test/it/rewriter/src/test/resources/scenario/encrypt/case/query-with-cipher/dml/delete/delete.xml
index 657d388372f..a8c7d4505c5 100644
---
a/test/it/rewriter/src/test/resources/scenario/encrypt/case/query-with-cipher/dml/delete/delete.xml
+++
b/test/it/rewriter/src/test/resources/scenario/encrypt/case/query-with-cipher/dml/delete/delete.xml
@@ -63,7 +63,7 @@
</rewrite-assertion>
<rewrite-assertion
id="delete_user_with_database_and_schema_and_alias_for_literals"
db-types="SQLServer">
- <input sql="DELETE t FROM logic_db.dbo.t_user as t WHERE t.user_id = 4
and t.user_name = 'test_user' and t.user_name like 'test_%' and t.password =
'admin123' and t.email = '[email protected]'" />
+ <input sql="DELETE t FROM encrypt.dbo.t_user as t WHERE t.user_id = 4
and t.user_name = 'test_user' and t.user_name like 'test_%' and t.password =
'admin123' and t.email = '[email protected]'" />
<output sql="DELETE t FROM dbo.t_user as t WHERE t.user_id = 4 and
t.user_name_cipher = 'o07WOpLlazifLKU747nd8w==' and t.user_name_like like
'udtu_%' and t.password_cipher = 'beO6rTHBW9jmVeSPPb62QA==' and t.email_cipher
= 'zclI1Wk2uaVYHyNckTRYzA=='" />
</rewrite-assertion>
</rewrite-assertions>
diff --git
a/test/it/rewriter/src/test/resources/scenario/encrypt/case/query-with-cipher/dml/select/select-projection.xml
b/test/it/rewriter/src/test/resources/scenario/encrypt/case/query-with-cipher/dml/select/select-projection.xml
index c83971595a3..5898c838db8 100644
---
a/test/it/rewriter/src/test/resources/scenario/encrypt/case/query-with-cipher/dml/select/select-projection.xml
+++
b/test/it/rewriter/src/test/resources/scenario/encrypt/case/query-with-cipher/dml/select/select-projection.xml
@@ -63,22 +63,22 @@
</rewrite-assertion>
<rewrite-assertion
id="select_with_schema_name_in_shorthand_projection_for_parameters"
db-types="MySQL">
- <input sql="SELECT logic_db.t_account.* FROM t_account WHERE
account_id = ? AND certificate_number = ? AND certificate_number LIKE ?"
parameters="100, 200, 300" />
+ <input sql="SELECT encrypt.t_account.* FROM t_account WHERE account_id
= ? AND certificate_number = ? AND certificate_number LIKE ?" parameters="100,
200, 300" />
<output sql="SELECT t_account.`account_id`,
t_account.`cipher_certificate_number` AS `certificate_number`,
t_account.`cipher_password` AS `password`, t_account.`cipher_amount` AS
`amount` FROM t_account WHERE account_id = ? AND
assisted_query_certificate_number = ? AND like_query_certificate_number LIKE ?"
parameters="100, assisted_query_200, like_query_300" />
</rewrite-assertion>
<rewrite-assertion
id="select_with_schema_name_in_shorthand_projection_for_literals"
db-types="MySQL">
- <input sql="SELECT logic_db.t_account.* FROM t_account WHERE
account_id = 100 AND certificate_number = 200 AND certificate_number LIKE 300"
/>
+ <input sql="SELECT encrypt.t_account.* FROM t_account WHERE account_id
= 100 AND certificate_number = 200 AND certificate_number LIKE 300" />
<output sql="SELECT t_account.`account_id`,
t_account.`cipher_certificate_number` AS `certificate_number`,
t_account.`cipher_password` AS `password`, t_account.`cipher_amount` AS
`amount` FROM t_account WHERE account_id = 100 AND
assisted_query_certificate_number = 'assisted_query_200' AND
like_query_certificate_number LIKE 'like_query_300'" />
</rewrite-assertion>
<rewrite-assertion
id="select_with_schema_name_in_column_projection_for_parameters"
db-types="MySQL">
- <input sql="SELECT logic_db.t_account.account_id FROM t_account WHERE
account_id = ?" parameters="100" />
+ <input sql="SELECT encrypt.t_account.account_id FROM t_account WHERE
account_id = ?" parameters="100" />
<output sql="SELECT t_account.account_id FROM t_account WHERE
account_id = ?" parameters="100" />
</rewrite-assertion>
<rewrite-assertion
id="select_with_schema_name_in_column_projection_for_literals" db-types="MySQL">
- <input sql="SELECT logic_db.t_account.account_id FROM t_account WHERE
account_id = 100" />
+ <input sql="SELECT encrypt.t_account.account_id FROM t_account WHERE
account_id = 100" />
<output sql="SELECT t_account.account_id FROM t_account WHERE
account_id = 100" />
</rewrite-assertion>
diff --git
a/test/it/rewriter/src/test/resources/scenario/encrypt/case/query-with-cipher/dml/select/select-where.xml
b/test/it/rewriter/src/test/resources/scenario/encrypt/case/query-with-cipher/dml/select/select-where.xml
index 7e244df8ec7..0deb537d050 100644
---
a/test/it/rewriter/src/test/resources/scenario/encrypt/case/query-with-cipher/dml/select/select-where.xml
+++
b/test/it/rewriter/src/test/resources/scenario/encrypt/case/query-with-cipher/dml/select/select-where.xml
@@ -103,4 +103,9 @@
<input sql="SELECT * FROM dbo.t_user"/>
<output sql="SELECT t_user.[user_id], t_user.[user_name_cipher] AS
[user_name], t_user.[password_cipher] AS [password], t_user.[email_cipher] AS
[email], t_user.[user_telephone_cipher] AS [telephone], t_user.[creation_date]
FROM dbo.t_user"/>
</rewrite-assertion>
+
+ <rewrite-assertion id="select_from_user_with_schema_and_database"
db-types="SQLServer">
+ <input sql="SELECT * FROM encrypt.dbo.t_user"/>
+ <output sql="SELECT t_user.[user_id], t_user.[user_name_cipher] AS
[user_name], t_user.[password_cipher] AS [password], t_user.[email_cipher] AS
[email], t_user.[user_telephone_cipher] AS [telephone], t_user.[creation_date]
FROM dbo.t_user"/>
+ </rewrite-assertion>
</rewrite-assertions>
diff --git
a/test/it/rewriter/src/test/resources/scenario/encrypt/config/query-with-cipher.yaml
b/test/it/rewriter/src/test/resources/scenario/encrypt/config/query-with-cipher.yaml
index 40a27d8c5fd..c0ee0ebf2cf 100644
---
a/test/it/rewriter/src/test/resources/scenario/encrypt/config/query-with-cipher.yaml
+++
b/test/it/rewriter/src/test/resources/scenario/encrypt/config/query-with-cipher.yaml
@@ -19,6 +19,8 @@ dataSources:
encrypt_ds:
dataSourceClassName:
org.apache.shardingsphere.test.fixture.jdbc.MockedDataSource
+databaseName: encrypt
+
rules:
- !ENCRYPT
tables: