You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by "FlyingZC (via GitHub)" <gi...@apache.org> on 2025/03/27 11:35:23 UTC

[I] Support parsing MySQL stored procedure syntax - part 0 [shardingsphere]

FlyingZC opened a new issue, #35084:
URL: https://github.com/apache/shardingsphere/issues/35084

   # Background
   Hi community,
   
   ShardingSphere's parser engine enables users to parse SQL into AST (Abstract Syntax Tree) and convert it into SQLStatement objects. 
   This issue focuses on enhancing MySQL stored procedure parsing capabilities to support complex database programming logic.
   
   More details:
   https://shardingsphere.apache.org/document/current/en/reference/sharding/parse/
   
   # Issue Background Explanation
   
   These SQL statements are from the official MySQL test set. 
   You can find the corresponding stored procedure SQL statements in the following website: https://github.com/mysql/mysql-server/tree/8.0/mysql-test/t 
   These SQL cases are then passed to ShardingSphere's parsing engine for analysis. 
   For SQL cases that fail to be parsed successfully, every 3 to 5 SQL cases are grouped together as an issue.
   1. It cannot be guaranteed that all SQL cases are correct. Please follow the following process to handle this pull request (PR).
   2. Some SQL cases may have already been fixed in other PRs. For cases that can already be executed successfully, simply leave a comment to ignore them.
   3. If a SQL case can be executed successfully without any code changes, there is no need to add a corresponding test assert file.
   
   # Task
   This issue requires adding support for the following MySQL stored procedure syntax:
   ```sql
   -- The original file and line number of the sql: analyze:85 
   CREATE PROCEDURE p() ANALYZE TABLE v UPDATE HISTOGRAM ON w
   ```
   
   ```sql
   -- The original file and line number of the sql: change_user_deadlock:35 
   END |
   CREATE PROCEDURE p_processlist()
   BEGIN
   DECLARE x INT DEFAULT 3000
   ```
   
   ```sql
   -- The original file and line number of the sql: change_user_deadlock:26 
   CREATE PROCEDURE p_flush_status()
   BEGIN
   DECLARE x INT DEFAULT 3000
   ```
   
   ```sql
   -- The original file and line number of the sql: clear_diag_area:254 
   CREATE PROCEDURE p7_show_warnings ()
   BEGIN
   SHOW VARIABLES LIKE 'foo';
   SHOW WARNINGS;
   SELECT "(SHOW WARNINGS does not have to come last)";
   END
   ```
   
   ```sql
   -- The original file and line number of the sql: clear_diag_area:263 
   CREATE PROCEDURE p8b_show_warnings ()
   BEGIN
   SHOW WARNINGS;
   END
   ```
   
   
   # Overall Procedure
   If you intend to participate in fixing this issue, please feel free to leave a comment below the issue. Community members will assign the issue accordingly.
   For example, you can leave a comment like this: "Hi, please assign this issue to me. Thank you!"
   
   Once you have claimed the issue, please review the syntax of the SQL on the official website of the corresponding database. 
   Execute the SQL on the respective database to ensure the correctness of the SQL syntax.
   
   You can check the corresponding source of each SQL case on the official database website.
   Next, execute the problematic SQL cases mentioned above in the database (you can quickly start the corresponding database using the Docker image for that database, and then connect to it using a client you are  familiar with), to ensure that the SQL syntax itself is correct.
   
   
   Once you have confirmed the correctness of the SQL syntax, you can validate and fix the grammar parsing issue in ShardingSphere.
   >If you are using IntelliJ IDEA, you will need to install the ANTLR plugin before proceeding.
   If it is an ANTLR parsing error message, try to repair the `.g4` file by comparing it with the official database syntax until the SQL can be correctly parsed by ANTLR.
   When there is no error message in the ANTLR Preview window, it means that ANTLR can correctly parse the SQL.
   
   
   After ANTLR parses SQL into an abstract syntax tree, ShardingSphere will access the abstract syntax tree through Visitor and extract the required information.
   If you need to extract Segments, you need to first execute:
   ```shell
   mvn -T 2C clean install -DskipTests
   ```
   Under the shardingsphere-parser module to compile the entire parser module.
   Then rewrite the corresponding visit method in SQLStatementVisitorr as needed to extract the corresponding Segment.
   
   
   After the above SQL parsing problem is repaired, the corresponding Test needs to be added.
   The steps are as follows:
   1. Add the corresponding `sql-case` in the `sql/supported` directory.
   2. Add case assertions in the case directory of the `shardingsphere-test-it-parser` module.
   3. Run `org.apache.shardingsphere.test.it.sql.parser.internal.InternalSQLParserIT`
   After SQL Parser IT runs successfully, you can submit a PR.
   
   
   1. Master JAVA language
   2. Have a basic understanding of Antlr g4 file
   3. Be familiar with MySQL SQLs


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@shardingsphere.apache.org.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [I] Support parsing MySQL stored procedure syntax - part 0 [shardingsphere]

Posted by "kannappan01 (via GitHub)" <gi...@apache.org>.
kannappan01 commented on issue #35084:
URL: https://github.com/apache/shardingsphere/issues/35084#issuecomment-3027846330

   @strongduanmu @AmitAnveri, Could you please assign this task to me if it hasn’t been picked up yet? Thank you!


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@shardingsphere.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [I] Support parsing MySQL stored procedure syntax - part 0 [shardingsphere]

Posted by "strongduanmu (via GitHub)" <gi...@apache.org>.
strongduanmu commented on issue #35084:
URL: https://github.com/apache/shardingsphere/issues/35084#issuecomment-2763239275

   @AmitAnveri Welcome, I just assign this issue to you.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@shardingsphere.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [I] Support parsing MySQL stored procedure syntax - part 0 [shardingsphere]

Posted by "terrymanu (via GitHub)" <gi...@apache.org>.
terrymanu closed issue #35084: Support parsing MySQL stored procedure syntax - part 0
URL: https://github.com/apache/shardingsphere/issues/35084


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@shardingsphere.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [I] Support parsing MySQL stored procedure syntax - part 0 [shardingsphere]

Posted by "AmitAnveri (via GitHub)" <gi...@apache.org>.
AmitAnveri commented on issue #35084:
URL: https://github.com/apache/shardingsphere/issues/35084#issuecomment-2797900784

   Hi , is the slack channel active , I have asked for help on this issue on slack ?


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@shardingsphere.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [I] Support parsing MySQL stored procedure syntax - part 0 [shardingsphere]

Posted by "AmitAnveri (via GitHub)" <gi...@apache.org>.
AmitAnveri commented on issue #35084:
URL: https://github.com/apache/shardingsphere/issues/35084#issuecomment-2763026562

   Hi, can you please assign this to me ?


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@shardingsphere.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org