Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support parsing SQL Server SELECT SCHEMA_NAME(schema_id) sql #29180 #29998

Merged
merged 3 commits into from
Feb 5, 2024

Conversation

yydeng626
Copy link
Collaborator

@yydeng626 yydeng626 commented Feb 5, 2024

Fixes #29180.

Changes proposed in this pull request:

  • support sql
1.  SELECT SCHEMA_NAME(schema_id) AS schema_name
   ,o.name AS object_name
   ,o.type_desc
   ,p.parameter_id
   ,p.name AS parameter_name
   ,TYPE_NAME(p.user_type_id) AS parameter_type
   ,p.max_length
   ,p.precision
   ,p.scale
   ,p.is_output
FROM sys.objects AS o
INNER JOIN sys.parameters AS p ON o.object_id = p.object_id
WHERE o.object_id = OBJECT_ID('<schema_name.object_name>')
ORDER BY schema_name, object_name, p.parameter_id

2. SELECT file_id, name, type_desc, physical_name, size, max_size  
FROM sys.database_files

3.  SELECT name,
   reason,
   score,
   JSON_VALUE(details, '$.implementationDetails.script') AS script,
   details.*
FROM sys.dm_db_tuning_recommendations
CROSS APPLY OPENJSON(details, '$.planForceDetails') WITH (
       [query_id] INT '$.queryId',
       regressed_plan_id INT '$.regressedPlanId',
       last_good_plan_id INT '$.recommendedPlanId'
       ) AS details
WHERE JSON_VALUE(STATE, '$.currentValue') = 'Active'

4.  SELECT reason,
   score,
   script = JSON_VALUE(details, '$.implementationDetails.script'),
   planForceDetails.*,
   estimated_gain = (regressedPlanExecutionCount + recommendedPlanExecutionCount) * (regressedPlanCpuTimeAverage - recommendedPlanCpuTimeAverage) / 1000000,
   error_prone = IIF(regressedPlanErrorCount > recommendedPlanErrorCount, 'YES', 'NO')
FROM sys.dm_db_tuning_recommendations
CROSS APPLY OPENJSON(Details, '$.planForceDetails') WITH (
       [query_id] INT '$.queryId',
       regressedPlanId INT '$.regressedPlanId',
       recommendedPlanId INT '$.recommendedPlanId',
       regressedPlanErrorCount INT,
       recommendedPlanErrorCount INT,
       regressedPlanExecutionCount INT,
       regressedPlanCpuTimeAverage FLOAT,
       recommendedPlanExecutionCount INT,
       recommendedPlanCpuTimeAverage FLOAT
       ) AS planForceDetails

5. SELECT Tab.Id,
   SalesOrderJsonData.Customer,
   SalesOrderJsonData.Date
FROM SalesOrderRecord AS Tab
CROSS APPLY OPENJSON(Tab.json, N'$.Orders.OrdersArray') WITH (
   Number VARCHAR(200) N'$.Order.Number',
   Date DATETIME N'$.Order.Date',
   Customer VARCHAR(200) N'$.AccountNumber',
   Quantity INT N'$.Item.Quantity'
   ) AS SalesOrderJsonData
WHERE JSON_VALUE(Tab.json, '$.Status') = N'Closed'
ORDER BY JSON_VALUE(Tab.json, '$.Group'),
   Tab.DateModified

Before committing this PR, I'm sure that I have checked the following options:

  • My code follows the code of conduct of this project.
  • I have self-reviewed the commit code.
  • I have (or in comment I request) added corresponding labels for the pull request.
  • 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.
  • I have added corresponding unit tests for my changes.

# Conflicts:
#	test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/segment/output/OutputClauseAssert.java
Copy link
Member

@strongduanmu strongduanmu left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, merged.

@strongduanmu strongduanmu merged commit bd8fbed into apache:master Feb 5, 2024
139 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Support parsing SQL Server SELECT SCHEMA_NAME(schema_id) sql
2 participants