You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by GitBox <gi...@apache.org> on 2020/03/16 10:54:47 UTC

[GitHub] [incubator-shardingsphere] tristaZero opened a new issue #4783: Add start-index and stop-index assertion for SubqueryExpressionSegment

tristaZero opened a new issue #4783: Add start-index and stop-index assertion for SubqueryExpressionSegment
URL: https://github.com/apache/incubator-shardingsphere/issues/4783
 
 
   Hi, we are glad you can fix this issue to become a contributor to Apache Sharding Sphere.
   Welcome! 😃
   
   By doing this assignment, you can learn more about how a query SQL is parsed and how to verify the parsing result of a SQL in Apache ShardingSphere.
   
   This issue is to add the parsing assertion for SubqueryExpressionSegment by adding the start-index and stop-index attributes in parsing-result.xml.
   
   It is not difficult, and the following comment also gives you the detailed instruction. BTW, if you need any help, please be free to reply to this one.

----------------------------------------------------------------
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.
 
For queries about this service, please contact Infrastructure at:
users@infra.apache.org


With regards,
Apache Git Services

[GitHub] [incubator-shardingsphere] tristaZero commented on issue #4783: Add start-index and stop-index assertion for SubqueryExpressionSegment

Posted by GitBox <gi...@apache.org>.
tristaZero commented on issue #4783: Add start-index and stop-index assertion for SubqueryExpressionSegment
URL: https://github.com/apache/incubator-shardingsphere/issues/4783#issuecomment-599885631
 
 
   ### How to find the targets to be fixed?
   1. Open class `ExpressionAssert` and clear the comment of `SQLSegmentAssert.assertIs(assertContext, actual, expected)` in `assertSubqueryExpression`.
   2. run `SQLParserParameterizedTest`
   3. All the SQL cases which have the error assertion results are our targets to be fixed.
   
   ### How to fix the above assertion results?
   1. Look at the exception log and find the corresponding `SQL Case ID` and `SQL`.
   2. Find out the `parsing result` of this `SQL Case ID` in `./incubator-shardingsphere/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/test/resources/sql/dml`
   3. Calculate the correct `start-index` and `stop-index` of `and-subquery-expression`, `between-subquery-expression` and `subquery-expression` segment of this `SQL`.
   4. Add the calculated `start-index` and `stop-index` labels of `and-subquery-expression`, `between-subquery-expression` and `subquery-expression` segment to `parsing result` of this `SQL Case ID`, like
   ```
               <subquery-expression  start-index="10" stop-index="11" />
   ```
   5. Add the correct `literal-start-index` and `literal-stop-index` of `and-subquery-expression`, `between-subquery-expression` and `subquery-expression` segment to `parsing result` of this `SQL Case ID` when it is necessary, like
   ```
               <subquery-expression  literal-start-index="10" literal-stop-index="11" />
   ```
   6. Run `SQLParserParameterizedTest` again to check whether this `SQL Case ID` does not stay in the list of `SQL` with  `bad assertion result`.
   
   ### Note
   
   1. What are the definitions of `and-subquery-expression`, `between-subquery-expression`, and `subquery-expression`?
   `subquery-expression` means an expression that contains another query.
   
   For instance, here is a SQL,
   > SELECT * FROM t_order WHERE user_id = (SELECT user_id FROM t_order_item WHERE id = 10)
   
   The query of `SELECT user_id FROM t_order_item WHERE id = 10` is a `subquery-expression`.
   
   > SELECT * FROM t_order WHERE user_id between (select user_id from t_order_item where order_id = 10) and (select user_id from t_order_item where order_id = 12)
   
   This example shows the value of `select user_id from t_order_item where order_id = 10` is a `between-subquery-expression`, on the other hand, `select user_id from t_order_item where order_id = 12` is `and-subquery-expression`.
   
   2. What is the difference between `literal-start-index` and `start-index`?
   
   When a SQL does not contain parameter maker, i.e.,`?`, this SQL only has one form; Otherwise, you will see two forms of this SQL, i.e, a SQL form filled with parameter and a SQL form only with parameter marks. For instance,
   ```
   Case1 One SQL without parameter mark,
   select * from table where id = 1;
   
   Case2 One SQL with parameter mark,
   Original SQL: select * from table where id = ?;
   SQL filled with Parameter: select * from table where id = 1;
   ```
   Replace `the parameter mark` with `the actual parameter` will change the position of the segment. Therefore we need to add `start-index` to represent the start position of a segment for `Original SQL`, and `literal-start-index` is used to represent the start position of a segment for `SQL filled with Parameter`.
   

----------------------------------------------------------------
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.
 
For queries about this service, please contact Infrastructure at:
users@infra.apache.org


With regards,
Apache Git Services

[GitHub] [incubator-shardingsphere] yu199195 commented on issue #4783: Add start-index and stop-index assertion for SubqueryExpressionSegment

Posted by GitBox <gi...@apache.org>.
yu199195 commented on issue #4783: Add start-index and stop-index assertion for SubqueryExpressionSegment
URL: https://github.com/apache/incubator-shardingsphere/issues/4783#issuecomment-600024656
 
 
   i will fix it .

----------------------------------------------------------------
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.
 
For queries about this service, please contact Infrastructure at:
users@infra.apache.org


With regards,
Apache Git Services

[GitHub] [incubator-shardingsphere] tristaZero commented on issue #4783: Add start-index and stop-index assertion for SubqueryExpressionSegment

Posted by GitBox <gi...@apache.org>.
tristaZero commented on issue #4783: Add start-index and stop-index assertion for SubqueryExpressionSegment
URL: https://github.com/apache/incubator-shardingsphere/issues/4783#issuecomment-599885860
 
 
   This issue is much easier than anyone of this series. :)

----------------------------------------------------------------
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.
 
For queries about this service, please contact Infrastructure at:
users@infra.apache.org


With regards,
Apache Git Services

[GitHub] [incubator-shardingsphere] terrymanu closed issue #4783: Add start-index and stop-index assertion for SubqueryExpressionSegment

Posted by GitBox <gi...@apache.org>.
terrymanu closed issue #4783: Add start-index and stop-index assertion for SubqueryExpressionSegment
URL: https://github.com/apache/incubator-shardingsphere/issues/4783
 
 
   

----------------------------------------------------------------
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.
 
For queries about this service, please contact Infrastructure at:
users@infra.apache.org


With regards,
Apache Git Services