| 160 | } |
| 161 | |
| 162 | @Override public void unparse(SqlWriter writer, int leftPrec, int rightPrec) { |
| 163 | name.unparse(writer, leftPrec, rightPrec); |
| 164 | if (!this.options.isEmpty()) { |
| 165 | SqlWriter.Frame frame = |
| 166 | writer.startList(SqlWriter.FrameTypeEnum.FUN_CALL, "(", ")"); |
| 167 | for (int i = 0; i < options.size(); i++) { |
| 168 | SqlNode option = options.get(i); |
| 169 | SqlNode nextOption = i < options.size() - 1 ? options.get(i + 1) : null; |
| 170 | writer.sep(",", false); |
| 171 | option.unparse(writer, leftPrec, rightPrec); |
| 172 | if (optionFormat == HintOptionFormat.KV_LIST && nextOption != null) { |
| 173 | writer.keyword("="); |
| 174 | nextOption.unparse(writer, leftPrec, rightPrec); |
| 175 | i += 1; |
| 176 | } |
| 177 | } |
| 178 | writer.endList(frame); |
| 179 | } |
| 180 | } |
| 181 | |
| 182 | /** Enumeration that represents hint option format. */ |
| 183 | public enum HintOptionFormat implements Symbolizable { |