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

   # Background
   Hi community,
   This issue is for #26878.
   
   ShardingSphere parser engine helps users parse a SQL to get the AST 
(Abstract Syntax Tree) and visit this tree to get SQLStatement (Java Object). 
Currently, we are planning to enhance the support for Oracle SQL parsing in 
ShardingSphere.
   
   More details:
   
https://shardingsphere.apache.org/document/current/en/reference/sharding/parse/
   
   # Task
   This issue is to support more oracle sql parse, as follows:
   ```sql
   CREATE OUTLINE salaries FOR CATEGORY special
      ON SELECT last_name, salary FROM employees;
   ```
   
   ```sql
   CREATE OR REPLACE VIEW purchaseorder_summary OF XMLType AS
     SELECT updateXML(OBJECT_VALUE,
                      '/PurchaseOrder/Actions', NULL,
                      '/PurchaseOrder/ShippingInstructions', NULL,
                      '/PurchaseOrder/LineItems', NULL) AS XML
     FROM purchaseorder p;
   
   SELECT OBJECT_VALUE FROM purchaseorder_summary
     WHERE 
XMLExists('$p/PurchaseOrder[Reference="DAUSTIN-20021009123335811PDT"]'          
        PASSING OBJECT_VALUE AS "p");
   ```
   
   ```sql
   CREATE OR REPLACE VIEW v AS
     SELECT e1.first_name, e1.last_name, j.job_id, sum(e2.salary) total_sal
     FROM   employees e1, ( SELECT * FROM employees e3) e2, job_history j
     WHERE e1.employee_id = e2.manager_id
     AND e1.employee_id = j.employee_id
     AND e1.hire_date = j.start_date
     AND e1.salary = ( SELECT max(e2.salary) FROM employees e2
                       WHERE e2.department_id = e1.department_id )
     GROUP BY e1.first_name, e1.last_name, j.job_id
     ORDER BY total_sal;
   ```
   
   ```sql
   CREATE OR REPLACE VIEW travel_view AS
     SELECT story_name, charfunc(story) short_story,
            sys_DburiGen(story_name, story, 'text()') story_link
     FROM travel_story;
   View created.
    
   SELECT * FROM travel_view;
   ```
   
   ```sql
   CREATE PROFILE app_user LIMIT 
      SESSIONS_PER_USER          UNLIMITED 
      CPU_PER_SESSION            UNLIMITED 
      CPU_PER_CALL               3000 
      CONNECT_TIME               45 
      LOGICAL_READS_PER_SESSION  DEFAULT 
      LOGICAL_READS_PER_CALL     1000 
      PRIVATE_SGA                15K
      COMPOSITE_LIMIT            5000000;
   ```
   
   # Process
   1. First confirm that this is a correct oracle sql syntax, if not please 
ignore;
   2. Compare SQL definitions in Oficial SQL Doc and ShardingSphere SQL Doc;
   3. If there is any difference in ShardingSphere SQL Doc, please correct them 
by referring to the Official SQL Doc;
   4. Run mvn install the current_file_module;
   5. Check whether there are any exceptions. If indeed, please fix them. 
(Especially xxxVisitor.class);
   6. Add new corresponding SQL case in SQL Cases and expected parsed result in 
Expected Statment XML;
   7. Run SQLParserParameterizedTest to make sure no exceptions.
   
   # Relevant Skills
   1. Master JAVA language
   2. Have a basic understanding of Antlr `g4` file
   3. Be familiar with Oracle 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: 
[email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to