[ 
https://issues.apache.org/jira/browse/COMDEV-489?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17697050#comment-17697050
 ] 

Gael Yimen Yimga commented on COMDEV-489:
-----------------------------------------

Hello Mentors,

I started looking into this ticket and I have been investigating and debugging 
the *select_char* operator. Here is the beginning of my 
[thoughts|https://github.com/apache/shardingsphere/discussions/24097#discussioncomment-4996681].
 I would like to give a proposal on how to solve the problem. 

My findings are the following : 
 * I notice that for most of the MySQL functions, they are parsed as 
`*ExpressionSegment*`.
 * That `*ExpressionSegment*` is converted into `*FunctionSegment*`.
 * But the `*FunctionSegment*` that is supposed to have the parameters set does 
not have it.

The solution could be to find a mechanism to populate the parameters of 
`*FunctionSegment*` as a list of `*ExpressionSegment*`. By doing so the 
solution can fix al test case for the MySQL functions.

Please let me know what you think about.

> Apache ShardingSphere: Enhance SQLNodeConverterEngine to support more MySQL 
> SQL statements
> ------------------------------------------------------------------------------------------
>
>                 Key: COMDEV-489
>                 URL: https://issues.apache.org/jira/browse/COMDEV-489
>             Project: Community Development
>          Issue Type: Improvement
>          Components: GSoC/Mentoring ideas
>            Reporter: Zhengqiang Duan
>            Priority: Major
>              Labels: Mentor, ShardingSphere, gsoc2023
>
> h2. Apache ShardingSphere
> Apache ShardingSphere is positioned as a Database Plus, and aims at building 
> a standard layer and ecosystem above heterogeneous databases. It focuses on 
> how to reuse existing databases and their respective upper layer, rather than 
> creating a new database. The goal is to minimize or eliminate the challenges 
> caused by underlying databases fragmentation.
> {*}Page{*}: 
> [https://shardingsphere.apache.org|https://shardingsphere.apache.org/]
> {*}Github{*}: [https://github.com/apache/shardingsphere] 
> h2. Background
> The ShardingSphere SQL federation engine provides support for complex SQL 
> statements, and it can well support cross-database join queries, subqueries, 
> aggregation queries and other statements. An important part of SQL federation 
> engine is to convert the SQL statement parsed by ShardingSphere into SqlNode, 
> so that Calcite can be used to implement SQL optimization and federated query.
> h2. Task
> This issue is to solve the MySQL exception that occurs during 
> SQLNodeConverterEngine conversion. The specific case list is as follows.
>  * select_char
>  * select_extract
>  * select_from_dual
>  * select_from_with_table
>  * select_group_by_with_having_and_window
>  * select_not_between_with_single_table
>  * select_not_in_with_single_table
>  * select_substring
>  * select_trim
>  * select_weight_string
>  * select_where_with_bit_expr_with_ampersand
>  * select_where_with_bit_expr_with_caret
>  * select_where_with_bit_expr_with_div
>  * select_where_with_bit_expr_with_minus_interval
>  * select_where_with_bit_expr_with_mod
>  * select_where_with_bit_expr_with_mod_sign
>  * select_where_with_bit_expr_with_plus_interval
>  * select_where_with_bit_expr_with_signed_left_shift
>  * select_where_with_bit_expr_with_signed_right_shift
>  * select_where_with_bit_expr_with_vertical_bar
>  * select_where_with_boolean_primary_with_comparison_subquery
>  * select_where_with_boolean_primary_with_is
>  * select_where_with_boolean_primary_with_is_not
>  * select_where_with_boolean_primary_with_null_safe
>  * select_where_with_expr_with_and_sign
>  * select_where_with_expr_with_is
>  * select_where_with_expr_with_is_not
>  * select_where_with_expr_with_not
>  * select_where_with_expr_with_not_sign
>  * select_where_with_expr_with_or_sign
>  * select_where_with_expr_with_xor
>  * select_where_with_predicate_with_in_subquery
>  * select_where_with_predicate_with_regexp
>  * select_where_with_predicate_with_sounds_like
>  * select_where_with_simple_expr_with_collate
>  * select_where_with_simple_expr_with_match
>  * select_where_with_simple_expr_with_not
>  * select_where_with_simple_expr_with_odbc_escape_syntax
>  * select_where_with_simple_expr_with_row
>  * select_where_with_simple_expr_with_tilde
>  * select_where_with_simple_expr_with_variable
>  * select_window_function
>  * select_with_assignment_operator
>  * select_with_assignment_operator_and_keyword
>  * select_with_case_expression
>  * select_with_collate_with_marker
>  * select_with_date_format_function
>  * select_with_exists_sub_query_with_project
>  * select_with_function_name
>  * select_with_json_value_return_type
>  * select_with_match_against
>  * select_with_regexp
>  * select_with_schema_name_in_column_projection
>  * select_with_schema_name_in_shorthand_projection
>  * select_with_spatial_function
>  * select_with_trim_expr
>  * select_with_trim_expr_from_expr
> You need to compare the difference between actual and expected, and then 
> correct the logic in SQLNodeConverterEngine so that actual can be consistent 
> with expected.
> After you make changes, remember to add case to SUPPORTED_SQL_CASE_IDS to 
> ensure it can be tested.
>  
> {*}Notice{*}, these issues can be a good example.
> [https://github.com/apache/shardingsphere/pull/14492|https://github.com/apache/shardingsphere/pull/15331]
> h2. Relevant Skills
>  
> 1. Master JAVA language
> 2. Have a basic understanding of Antlr g4 file
> 3. Be familiar with MySQL and Calcite SqlNode
> h2. Targets files
>  
> SQLNodeConverterEngineIT
> [https://github.com/apache/shardingsphere/blob/master/test/it/optimizer/src/test/java/org/apache/shardingsphere/test/it/optimize/SQLNodeConverterEngineIT.java]
>  
> h3. Mentor
> Zhengqiang Duan, PMC of Apache ShardingSphere, duanzhengqi...@apache.org
> Chuxin Chen, Committer of Apache ShardingSphere, 
> [tuichenchu...@apache.org|mailto:tuichenchu...@apache.org]
> Trista Pan, PMC of Apache ShardingSphere, panj...@apache.org



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@community.apache.org
For additional commands, e-mail: dev-h...@community.apache.org

Reply via email to