Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

[FEATURE] I want to keep the comments #2018

RudolphLiu started this conversation in General
Discussion options

SQL Example

 @Test
 public void test4() throws ParseException, JSQLParserException {
 String orginalSql = "SELECT * FROM PMS_ROLE_SCALE where ROLE_ID= ? /*if*/\n" +
 " and code_id= ? /*if*/ \n" +
 "/*if*/\n" +
 " and SCALE_FLAG=?/*if*/\n" +
 "/*if*/\n" +
 " and PMS_TYPE=?/*if*/";
 Statement statement = CCJSqlParserUtil.parse(orginalSql);
 String parsedSql = statement.toString();
 log.info("==> JsqlParser SQL: {}", parsedSql);
 }

I want to keep the comments

I use these comments as placeholders. Since I want to replace these comments after Jsqlparser finishes parsing, I hope that they can still be retained after parsing.

Is there any way to use it? Or is there a better solution?

Also,JSqlParser is a near-perfect work. I often use it in my projects and I love it very much.

You must be logged in to vote

Replies: 2 comments 1 reply

Comment options

I noticed the issue https://github.com/JSQLParser/JSqlParser/issues/1776 , but still can't think of a good solution

You must be logged in to vote
0 replies
Comment options

Greetings!

There is no direct way to access such SQL comments because they do not have clear position in the AST. Example:

SELECT /*comment 1*/ /*comment 2*/ column1 from dual;

It's impossible to decide if those comments are properties of the Nodes SELECT or column1 and so the parsed AST can't be easily rewritten into a text.

However, there are certain work arounds:

  1. your scan your statements first for comments and determine the "non-whitespace position" of each comment.
    Given, that parsing/de-parsing does not change the content of the SQL, you can insert your comment later again at this "non-whitespace" position.
    I have done exactly this for JSQLFormatter, look-up the Comment-Map implementation.

  2. you can access the Special AST Nodes and re-insert into the AST
    This has been done here.

You must be logged in to vote
1 reply
Comment options

Thank you very much for your answer :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Converted from issue

This discussion was converted from issue #2017 on June 11, 2024 02:20.

AltStyle によって変換されたページ (->オリジナル) /