in fastmodel-transform/fastmodel-transform-adbpg/src/main/java/com/aliyun/fastmodel/transform/adbpg/parser/AdbPostgreSQLParserBase.java [49:95]
public void ParseRoutineBody(AdbPostgreSQLParser.Createfunc_opt_listContext _localctx) {
String lang = null;
for (AdbPostgreSQLParser.Createfunc_opt_itemContext coi : _localctx.createfunc_opt_item()) {
if (coi.LANGUAGE() != null) {
if (coi.nonreservedword_or_sconst() != null) {
if (coi.nonreservedword_or_sconst().nonreservedword() != null) {
if (coi.nonreservedword_or_sconst().nonreservedword().identifier() != null) {
if (coi.nonreservedword_or_sconst().nonreservedword().identifier()
.Identifier() != null) {
lang = coi.nonreservedword_or_sconst().nonreservedword().identifier()
.Identifier().getText();
break;
}
}
}
}
}
}
if (null == lang) {return;}
AdbPostgreSQLParser.Createfunc_opt_itemContext func_as = null;
for (AdbPostgreSQLParser.Createfunc_opt_itemContext a : _localctx.createfunc_opt_item()) {
if (a.func_as() != null) {
func_as = a;
break;
}
}
if (func_as != null) {
String txt = GetRoutineBodyString(func_as.func_as().sconst(0));
int line = func_as.func_as().sconst(0).start.getLine();
AdbPostgreSQLParser ph = getPostgreSQLParser(txt);
switch (lang) {
case "plpgsql":
func_as.func_as().Definition = ph.plsqlroot();
break;
case "sql":
func_as.func_as().Definition = ph.root();
break;
}
for (AdbPostgreSQLParseError err : ph.ParseErrors) {
ParseErrors.add(
new AdbPostgreSQLParseError(err.getNumber(), err.getOffset(), err.getLine() + line, err.getColumn(), err.getMessage()));
}
}
}