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

[PR] Support parsing SQL Server SELECT candidate_name,SSN sql [shardingsphere]

TherChenYang opened a new pull request, #29920:
URL: https://github.com/apache/shardingsphere/pull/29920

   Fixes #29154.
   
   Changes proposed in this pull request:
     - Support the sql parser in #29154
   
   ### The parsed SQL is as follows
   
   ```sql
   SELECT candidate_name,SSN   
   FROM candidates   
   WHERE CONTAINS(candidate_resume, '"SQL Server"') AND candidate_division = 'DBA'
   ```
   
   ```sql
   SELECT [s_tst].[session_id],
   [database_name] = DB_NAME (s_tdt.database_id),
   [s_tdt].[database_transaction_begin_time], 
   [sql_text] = [s_est].[text] 
   FROM sys.dm_tran_database_transactions [s_tdt]
   INNER JOIN sys.dm_tran_session_transactions [s_tst] ON [s_tst].[transaction_id] = [s_tdt].[transaction_id]
   INNER JOIN sys.dm_exec_connections [s_ec] ON [s_ec].[session_id] = [s_tst].[session_id]
   CROSS APPLY sys.dm_exec_sql_text ([s_ec].[most_recent_sql_handle]) AS [s_est]
   ```
   
   ```sql
   SELECT tst.session_id, [database_name] = db_name(s.database_id)
   , tat.transaction_begin_time
   , transaction_duration_s = datediff(s, tat.transaction_begin_time, sysdatetime()) 
   , transaction_type = CASE tat.transaction_type  WHEN 1 THEN 'Read/write transaction'
                                                   WHEN 2 THEN 'Read-only transaction'
                                                   WHEN 3 THEN 'System transaction'
                                                   WHEN 4 THEN 'Distributed transaction' END
   , input_buffer = ib.event_info, tat.transaction_uow     
   , transaction_state  = CASE tat.transaction_state    
               WHEN 0 THEN 'The transaction has not been completely initialized yet.'
               WHEN 1 THEN 'The transaction has been initialized but has not started.'
               WHEN 2 THEN 'The transaction is active - has not been committed or rolled back.'
               WHEN 3 THEN 'The transaction has ended. This is used for read-only transactions.'
               WHEN 4 THEN 'The commit process has been initiated on the distributed transaction.'
               WHEN 5 THEN 'The transaction is in a prepared state and waiting resolution.'
               WHEN 6 THEN 'The transaction has been committed.'
               WHEN 7 THEN 'The transaction is being rolled back.'
               WHEN 8 THEN 'The transaction has been rolled back.' END 
   , transaction_name = tat.name, request_status = r.status
   , tst.is_user_transaction, tst.is_local
   , session_open_transaction_count = tst.open_transaction_count  
   , s.host_name, s.program_name, s.client_interface_name, s.login_name, s.is_user_process
   FROM sys.dm_tran_active_transactions tat 
   INNER JOIN sys.dm_tran_session_transactions tst  on tat.transaction_id = tst.transaction_id
   INNER JOIN Sys.dm_exec_sessions s on s.session_id = tst.session_id 
   LEFT OUTER JOIN sys.dm_exec_requests r on r.session_id = s.session_id
   CROSS APPLY sys.dm_exec_input_buffer(s.session_id, null) AS ib
   ```
   
   ```sql
   INSERT INTO #test SELECT 1
   ```
   
   ---
   
   Before committing this PR, I'm sure that I have checked the following options:
   - [x] My code follows the [code of conduct](https://shardingsphere.apache.org/community/en/involved/conduct/code/) of this project.
   - [x] I have self-reviewed the commit code.
   - [ ] I have (or in comment I request) added corresponding labels for the pull request.
   - [x] I have passed maven check locally : `./mvnw clean install -B -T1C -Dmaven.javadoc.skip -Dmaven.jacoco.skip -e`.
   - [ ] I have made corresponding changes to the documentation.
   - [x] I have added corresponding unit tests for my changes.
   


-- 
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