[feature](Nereids) support select key encryptKey (#23257)

Add select key

```
- CREATE ENCRYPTKEY key_name AS "key_string"
- select key my_key
+-----------------------------+
| encryptKeyRef('', 'my_key') |
+-----------------------------+
| ABCD123456789               |
+-----------------------------+
```
This commit is contained in:
谢健
2023-08-28 14:07:26 +08:00
committed by GitHub
parent 5be8d57f52
commit f7d2c1faf6
10 changed files with 155 additions and 17 deletions

View File

@ -99,7 +99,7 @@ public class NereidsParserTest extends ParserTestBase {
Assertions.assertEquals(PlanType.LOGICAL_CTE, logicalPlan.getType());
Assertions.assertEquals(((LogicalCTE<?>) logicalPlan).getAliasQueries().size(), 2);
String cteSql3 = "with t1 (key, name) as (select s_suppkey, s_name from supplier) select * from t1";
String cteSql3 = "with t1 (keyy, name) as (select s_suppkey, s_name from supplier) select * from t1";
logicalPlan = (LogicalPlan) nereidsParser.parseSingle(cteSql3).child(0);
Assertions.assertEquals(PlanType.LOGICAL_CTE, logicalPlan.getType());
Assertions.assertEquals(((LogicalCTE<?>) logicalPlan).getAliasQueries().size(), 1);
@ -290,43 +290,43 @@ public class NereidsParserTest extends ParserTestBase {
@Test
public void testJoinHint() {
// no hint
parsePlan("select * from t1 join t2 on t1.key=t2.key")
parsePlan("select * from t1 join t2 on t1.keyy=t2.keyy")
.matches(logicalJoin().when(j -> j.getHint() == JoinHint.NONE));
// valid hint
parsePlan("select * from t1 join [shuffle] t2 on t1.key=t2.key")
parsePlan("select * from t1 join [shuffle] t2 on t1.keyy=t2.keyy")
.matches(logicalJoin().when(j -> j.getHint() == JoinHint.SHUFFLE_RIGHT));
parsePlan("select * from t1 join [ shuffle ] t2 on t1.key=t2.key")
parsePlan("select * from t1 join [ shuffle ] t2 on t1.keyy=t2.keyy")
.matches(logicalJoin().when(j -> j.getHint() == JoinHint.SHUFFLE_RIGHT));
parsePlan("select * from t1 join [broadcast] t2 on t1.key=t2.key")
parsePlan("select * from t1 join [broadcast] t2 on t1.keyy=t2.keyy")
.matches(logicalJoin().when(j -> j.getHint() == JoinHint.BROADCAST_RIGHT));
parsePlan("select * from t1 join /*+ broadcast */ t2 on t1.key=t2.key")
parsePlan("select * from t1 join /*+ broadcast */ t2 on t1.keyy=t2.keyy")
.matches(logicalJoin().when(j -> j.getHint() == JoinHint.BROADCAST_RIGHT));
// invalid hint position
parsePlan("select * from [shuffle] t1 join t2 on t1.key=t2.key")
parsePlan("select * from [shuffle] t1 join t2 on t1.keyy=t2.keyy")
.assertThrowsExactly(ParseException.class);
parsePlan("select * from /*+ shuffle */ t1 join t2 on t1.key=t2.key")
parsePlan("select * from /*+ shuffle */ t1 join t2 on t1.keyy=t2.keyy")
.assertThrowsExactly(ParseException.class);
// invalid hint content
parsePlan("select * from t1 join [bucket] t2 on t1.key=t2.key")
parsePlan("select * from t1 join [bucket] t2 on t1.keyy=t2.keyy")
.assertThrowsExactly(ParseException.class)
.assertMessageContains("Invalid join hint: bucket(line 1, pos 22)\n"
+ "\n"
+ "== SQL ==\n"
+ "select * from t1 join [bucket] t2 on t1.key=t2.key\n"
+ "select * from t1 join [bucket] t2 on t1.keyy=t2.keyy\n"
+ "----------------------^^^");
// invalid multiple hints
parsePlan("select * from t1 join /*+ shuffle , broadcast */ t2 on t1.key=t2.key")
parsePlan("select * from t1 join /*+ shuffle , broadcast */ t2 on t1.keyy=t2.keyy")
.assertThrowsExactly(ParseException.class);
parsePlan("select * from t1 join [shuffle,broadcast] t2 on t1.key=t2.key")
parsePlan("select * from t1 join [shuffle,broadcast] t2 on t1.keyy=t2.keyy")
.assertThrowsExactly(ParseException.class);
}