File tree Expand file tree Collapse file tree 2 files changed +18
-5
lines changed
seatunnel-e2e/seatunnel-transforms-v2-e2e/seatunnel-transforms-v2-e2e-part-2/src/test/resources/sql_transform
seatunnel-transforms-v2/src/main/java/org/apache/seatunnel/transform/sql/zeta Expand file tree Collapse file tree 2 files changed +18
-5
lines changed Original file line number Diff line number Diff line change @@ -53,6 +53,7 @@ transform {
5353 c_row.c_string c_string,
5454 c_row.c_inner_row.c_inner_string c_inner_string,
5555 c_row.c_inner_row.c_inner_timestamp c_inner_timestamp,
56+ c_row.c_inner_row.c_map inner_map,
5657 c_row.c_inner_row.c_map.innerQuery map_val,
5758 c_row.c_inner_row.c_map.notExistKey map_not_exist_val
5859 from fake"""
@@ -94,11 +95,20 @@ sink {
9495 {rule_type = NOT_NULL}
9596 ]
9697 },
98+ {
99+ field_name = "inner_map"
100+ field_type = "map<string, string>"
101+ field_value = [
102+ {
103+ equals_to = {innerQuery=innerQuery}
104+ }
105+ ]
106+ },
97107 {
98108 field_name = "map_val"
99109 field_type = "string"
100110 field_value = [
101- {rule_type = NOT_NULL }
111+ {equals_to = "innerQuery" }
102112 ]
103113 },
104114 {
Original file line number Diff line number Diff line change @@ -144,12 +144,15 @@ public SeaTunnelDataType<?> getExpressionType(Expression expression) {
144144 if (filedTypeRes instanceof SeaTunnelRowType ) {
145145 parRowType = (SeaTunnelRowType ) filedTypeRes ;
146146 } else if (filedTypeRes instanceof MapType ) {
147- // for map type. only support it's the latest struct.
148- if (i != deep - 2 ) {
147+ if (i < deep - 2 ) {
149148 throw new IllegalArgumentException (
150- "For now, we only support map struct is the latest struct in inner query function! Please modify your query!" );
149+ "For now, when you query map field with inner query, it must be latest field or latest struct field! Please modify your query!" );
150+ }
151+ if (i == deep - 1 ) {
152+ return filedTypeRes ;
153+ } else {
154+ return ((MapType <?, ?>) filedTypeRes ).getValueType ();
151155 }
152- return ((MapType <?, ?>) filedTypeRes ).getValueType ();
153156 }
154157 }
155158 return filedTypeRes ;
You can’t perform that action at this time.
0 commit comments