Movatterモバイル変換


[0]ホーム

URL:


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 inGeneral
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 issuehttps://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*/ column1from dual;

It's impossible to decide if those comments are properties of the NodesSELECT orcolumn1 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 theComment-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
@RudolphLiu
Comment options

Thank you very much for your answer :)

Sign up for freeto join this conversation on GitHub. Already have an account?Sign in to comment
Category
General
Labels
None yet
2 participants
@RudolphLiu@manticore-projects
Converted from issue

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


[8]ページ先頭

©2009-2025 Movatter.jp