@@ -41,6 +41,8 @@ public class CreateTableParser implements IParser {
41
41
42
42
private static final Pattern PATTERN = Pattern .compile (PATTERN_STR );
43
43
44
+ private static final Pattern PROP_PATTERN = Pattern .compile ("^'\\ s*(.+)\\ s*'$" );
45
+
44
46
public static CreateTableParser newInstance (){
45
47
return new CreateTableParser ();
46
48
}
@@ -69,18 +71,27 @@ public void parseSql(String sql, SqlTree sqlTree) {
69
71
}
70
72
71
73
private Map parseProp (String propsStr ){
72
- String [] strs = propsStr .trim ().split ("'\\ s*," );
74
+ propsStr = propsStr .replaceAll ("'\\ s*," , "'|" );
75
+ String [] strs = propsStr .trim ().split ("\\ |" );
73
76
Map <String , Object > propMap = Maps .newHashMap ();
74
77
for (int i =0 ; i <strs .length ; i ++){
75
78
List <String > ss = DtStringUtil .splitIgnoreQuota (strs [i ], '=' );
76
79
String key = ss .get (0 ).trim ();
77
- String value = ss .get (1 ). trim (). replaceAll ( "'" , "" ). trim ( );
80
+ String value = extractValue ( ss .get (1 ));
78
81
propMap .put (key , value );
79
82
}
80
83
81
84
return propMap ;
82
85
}
83
86
87
+ private String extractValue (String value ) {
88
+ Matcher matcher = PROP_PATTERN .matcher (value );
89
+ if (matcher .find ()) {
90
+ return matcher .group (1 );
91
+ }
92
+ throw new RuntimeException ("[" + value + "] format is invalid" );
93
+ }
94
+
84
95
public static class SqlParserResult {
85
96
86
97
private String tableName ;
0 commit comments