Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[BUG] JSQLParser 4.7: ADD COLUMN IF NOT EXISTS not supported #1875

Open
zdhuangelephant opened this issue Oct 11, 2023 · 4 comments
Open

[BUG] JSQLParser 4.7: ADD COLUMN IF NOT EXISTS not supported #1875

zdhuangelephant opened this issue Oct 11, 2023 · 4 comments
Labels

Comments

@zdhuangelephant
Copy link

Always check against the Latest SNAPSHOT of JSQLParser and the Syntax Diagram

Failing SQL Feature:

  • Brief description of the failing SQL feature

  • Example: Encountered unexpected token: "IF" "IF" can't be parsed

  • run java `static void buildCCJSqlParser() throws IOException, JSQLParserException {

      final Path path = Paths.get("/Users/xxx/xxx", "xxx-xxx-comm.sql");
      final byte[] bytes = Files.readAllBytes(path);
    
      ExecutorService executorService = Executors.newSingleThreadExecutor();
    
      final CCJSqlParser ccjSqlParser = CCJSqlParserUtil.newParser(new ByteArrayInputStream(bytes), StandardCharsets.UTF_8.name());
      final Statements statements = CCJSqlParserUtil.parseStatements(ccjSqlParser, executorService);
    
      final int[] updateCounter = {0};
      final int[] alterCounter = {0};
      final int[] selectCounter = {0};
      StatementVisitorAdapter adapter = new StatementVisitorAdapter(){
          @Override
          public void visit(Update update) {
              final String name = update.getTable().getName();
              final String schemaName = update.getTable().getSchemaName();
    
              updateCounter[0]++;
              System.out.printf("Update: table:%s, schema:%s%n", name, schemaName);
          }
          @Override
          public void visit(Alter alter) {
              final String name = alter.getTable().getName();
              final String schemaName = alter.getTable().getSchemaName();
    
              alterCounter[0]++;
              System.out.printf("Update: table:%s, schema:%s%n", name, schemaName);
          }
      };
      statements.accept(adapter);
    
      System.out.println(updateCounter[0] + ", " + alterCounter[0] + ", " + selectCounter[0]);
    

    }`

SQL Example:

  • Simplified Query Example, focusing on the failing feature
    -- Replace with your ACTUAL example
    ALTER TABLE IF EXISTS usercenter.dict_surgeries ADD COLUMN IF NOT EXISTS operation_grade_id int8 NULL;

Software Information:

  • JSqlParser version 4.7
  • Database (PostgreSQL )

Tips:

Please write in English and avoid Screenshots (as we can't copy and paste content from it).
Try your example online with the latest JSQLParser and share the link in the error report.
Do provide Links or References to the specific Grammar and Syntax you are trying to use.

@manticore-projects
Copy link
Contributor

Greetings,

the IF NOT EXISTS clause is not supported for ADD COLUMN.

You can try it online here.

Reference to the supported SQL Syntax.

In my opinion all the DDL statements deserve a proper refactoring and we are looking for Sponsors or Volunteers.

@manticore-projects manticore-projects added DDL DDL statement related postgres labels Oct 11, 2023
@manticore-projects manticore-projects changed the title [BUG] JSQLParser Version : RDBMS : failing feature description [BUG] JSQLParser 4.7: ADD COLUMN IF NOT EXISTS not supported Oct 11, 2023
@zdhuangelephant
Copy link
Author

thank you for your time to reply this question.
the volunteers? it's excited when i as a committer

@manticore-projects
Copy link
Contributor

the volunteers? it's excited when i as a committer

Please follow the guide: https://manticore-projects.com/JSQLParser/contribution.html
We will be most excited to welcome you as a new contributor. Fell very welcome to ask any questions.

@jxnu-liguobin
Copy link
Contributor

Seems to require refactoring for add alter modify drop column

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

No branches or pull requests

3 participants