Skip to content

Commit 95fa295

Browse files
committed
Merge branch 'v1.8.0_dev_absParser' into 'v1.8.0_dev'
side parser always need nestJson as same as source See merge request !170
2 parents ead6172 + 1decb6a commit 95fa295

File tree

2 files changed

+24
-23
lines changed

2 files changed

+24
-23
lines changed

core/src/main/java/com/dtstack/flink/sql/table/AbsSourceParser.java

Lines changed: 0 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -38,9 +38,7 @@ public abstract class AbsSourceParser extends AbsTableParser {
3838
private static final String VIRTUAL_KEY = "virtualFieldKey";
3939
private static final String WATERMARK_KEY = "waterMarkKey";
4040
private static final String NOTNULL_KEY = "notNullKey";
41-
private static final String NEST_JSON_FIELD_KEY = "nestFieldKey";
4241

43-
private static Pattern nestJsonFieldKeyPattern = Pattern.compile("(?i)((@*\\S+\\.)*\\S+)\\s+(\\w+)\\s+AS\\s+(\\w+)(\\s+NOT\\s+NULL)?$");
4442
private static Pattern virtualFieldKeyPattern = Pattern.compile("(?i)^(\\S+\\([^\\)]+\\))\\s+AS\\s+(\\w+)$");
4543
private static Pattern waterMarkKeyPattern = Pattern.compile("(?i)^\\s*WATERMARK\\s+FOR\\s+(\\S+)\\s+AS\\s+withOffset\\(\\s*(\\S+)\\s*,\\s*(\\d+)\\s*\\)$");
4644
private static Pattern notNullKeyPattern = Pattern.compile("(?i)^(\\w+)\\s+(\\w+)\\s+NOT\\s+NULL?$");
@@ -49,7 +47,6 @@ public AbsSourceParser() {
4947
addParserHandler(VIRTUAL_KEY, virtualFieldKeyPattern, this::dealVirtualField);
5048
addParserHandler(WATERMARK_KEY, waterMarkKeyPattern, this::dealWaterMark);
5149
addParserHandler(NOTNULL_KEY, notNullKeyPattern, this::dealNotNull);
52-
addParserHandler(NEST_JSON_FIELD_KEY, nestJsonFieldKeyPattern, this::dealNestField);
5350
}
5451

5552
protected void dealVirtualField(Matcher matcher, TableInfo tableInfo){
@@ -82,24 +79,4 @@ protected void dealNotNull(Matcher matcher, TableInfo tableInfo) {
8279
tableInfo.addFieldExtraInfo(fieldExtraInfo);
8380
}
8481

85-
/**
86-
* add parser for alias field
87-
* @param matcher
88-
* @param tableInfo
89-
*/
90-
protected void dealNestField(Matcher matcher, TableInfo tableInfo) {
91-
String physicalField = matcher.group(1);
92-
String fieldType = matcher.group(3);
93-
String mappingField = matcher.group(4);
94-
Class fieldClass= dbTypeConvertToJavaType(fieldType);
95-
boolean notNull = matcher.group(5) != null;
96-
TableInfo.FieldExtraInfo fieldExtraInfo = new TableInfo.FieldExtraInfo();
97-
fieldExtraInfo.setNotNull(notNull);
98-
99-
tableInfo.addPhysicalMappings(mappingField, physicalField);
100-
tableInfo.addField(mappingField);
101-
tableInfo.addFieldClass(fieldClass);
102-
tableInfo.addFieldType(fieldType);
103-
tableInfo.addFieldExtraInfo(fieldExtraInfo);
104-
}
10582
}

core/src/main/java/com/dtstack/flink/sql/table/AbsTableParser.java

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,15 +40,18 @@
4040
public abstract class AbsTableParser {
4141

4242
private static final String PRIMARY_KEY = "primaryKey";
43+
private static final String NEST_JSON_FIELD_KEY = "nestFieldKey";
4344

4445
private static Pattern primaryKeyPattern = Pattern.compile("(?i)PRIMARY\\s+KEY\\s*\\((.*)\\)");
46+
private static Pattern nestJsonFieldKeyPattern = Pattern.compile("(?i)((@*\\S+\\.)*\\S+)\\s+(\\w+)\\s+AS\\s+(\\w+)(\\s+NOT\\s+NULL)?$");
4547

4648
private Map<String, Pattern> patternMap = Maps.newHashMap();
4749

4850
private Map<String, ITableFieldDealHandler> handlerMap = Maps.newHashMap();
4951

5052
public AbsTableParser() {
5153
addParserHandler(PRIMARY_KEY, primaryKeyPattern, this::dealPrimaryKey);
54+
addParserHandler(NEST_JSON_FIELD_KEY, nestJsonFieldKeyPattern, this::dealNestField);
5255
}
5356

5457
protected boolean fieldNameNeedsUpperCase() {
@@ -116,6 +119,27 @@ public void dealPrimaryKey(Matcher matcher, TableInfo tableInfo){
116119
tableInfo.setPrimaryKeys(primaryKes);
117120
}
118121

122+
/**
123+
* add parser for alias field
124+
* @param matcher
125+
* @param tableInfo
126+
*/
127+
protected void dealNestField(Matcher matcher, TableInfo tableInfo) {
128+
String physicalField = matcher.group(1);
129+
String fieldType = matcher.group(3);
130+
String mappingField = matcher.group(4);
131+
Class fieldClass= dbTypeConvertToJavaType(fieldType);
132+
boolean notNull = matcher.group(5) != null;
133+
TableInfo.FieldExtraInfo fieldExtraInfo = new TableInfo.FieldExtraInfo();
134+
fieldExtraInfo.setNotNull(notNull);
135+
136+
tableInfo.addPhysicalMappings(mappingField, physicalField);
137+
tableInfo.addField(mappingField);
138+
tableInfo.addFieldClass(fieldClass);
139+
tableInfo.addFieldType(fieldType);
140+
tableInfo.addFieldExtraInfo(fieldExtraInfo);
141+
}
142+
119143
public Class dbTypeConvertToJavaType(String fieldType) {
120144
return ClassUtil.stringConvertClass(fieldType);
121145
}

0 commit comments

Comments
 (0)