[Fix](Nereids) fix leading hint dealing with big brace (#29405)

Co-authored-by: libinfeng <libinfeng@selectdb.com>
This commit is contained in:
LiBinfeng
2024-01-03 18:13:38 +08:00
committed by GitHub
parent 44628d37c8
commit d19530c4c2
3 changed files with 79 additions and 2 deletions

View File

@ -83,15 +83,28 @@ public class LeadingHint extends Hint {
super(hintName);
this.originalString = originalString;
int level = 0;
Stack<Boolean> brace = new Stack<>();
String lastParameter = "";
for (String parameter : parameters) {
if (parameter.equals("{")) {
++level;
if (lastParameter.equals("}")) {
level += 2;
brace.push(true);
} else {
++level;
brace.push(false);
}
} else if (parameter.equals("}")) {
level--;
if (brace.pop().equals(true)) {
level -= 2;
} else {
level--;
}
} else {
tablelist.add(parameter);
levellist.add(level);
}
lastParameter = parameter;
}
}