in src/main/java/com/aliyun/odps/jdbc/utils/Utils.java [135:168]
public static String parseSetting(String sql, Properties properties) {
if (StringUtils.isNullOrEmpty(sql)) {
throw new IllegalArgumentException("Invalid query :" + sql);
}
//移除comments
sql = removeComments(sql);
if (!sql.trim().endsWith(";")) {
sql += ";";
}
int index = 0;
int end = 0;
while ((end = sql.indexOf(';', index)) != -1) {
String s = sql.substring(index, end);
if (s.toUpperCase().matches("(?i)^(\\s*)(SET)(\\s+)(.*)=(.*);?(\\s*)$")) {
// handle one setting
int i = s.toLowerCase().indexOf("set");
String pairString = s.substring(i + 3);
String[] pair = pairString.split("=");
properties.put(pair[0].trim(), pair[1].trim());
index = end + 1;
} else {
// break if there is no settings before
break;
}
}
if (index >= sql.length()) {
// only settings, no query behind
return null;
} else {
// trim setting before query
return sql.substring(index).trim();
}
}