Skip to content

Commit cdbc2cd

Browse files
committed
Fixes BQS
Closes BrentOzarULTD#1316
1 parent d529af7 commit cdbc2cd

File tree

2 files changed

+38
-20
lines changed

2 files changed

+38
-20
lines changed

sp_BlitzCache.sql

+1-3
Original file line numberDiff line numberDiff line change
@@ -1147,9 +1147,7 @@ CREATE TABLE #stored_proc_info
11471147
compile_time_value NVARCHAR(128),
11481148
proc_name NVARCHAR(300),
11491149
column_name NVARCHAR(128),
1150-
converted_to NVARCHAR(128),
1151-
parameterization_type INT,
1152-
optimization_level VARCHAR(100)
1150+
converted_to NVARCHAR(128)
11531151
);
11541152

11551153
CREATE TABLE #plan_creation

sp_BlitzQueryStore.sql

+37-17
Original file line numberDiff line numberDiff line change
@@ -778,9 +778,7 @@ CREATE TABLE #stored_proc_info
778778
compile_time_value NVARCHAR(128),
779779
proc_name NVARCHAR(300),
780780
column_name NVARCHAR(128),
781-
converted_to NVARCHAR(128),
782-
parameterization_type INT,
783-
optimization_level VARCHAR(100),
781+
converted_to NVARCHAR(128)
784782
INDEX tf_ix_ids CLUSTERED (sql_handle, query_hash)
785783
);
786784

@@ -2969,8 +2967,9 @@ IF EXISTS ( SELECT 1
29692967
q.n.value('@ParameterDataType', 'NVARCHAR(128)') AS variable_datatype,
29702968
q.n.value('@ParameterCompiledValue', 'NVARCHAR(1000)') AS compile_time_value
29712969
FROM #query_plan AS qp
2972-
JOIN #working_warnings AS b
2973-
ON b.query_hash = qp.query_hash
2970+
JOIN #working_warnings AS b
2971+
ON (b.query_hash = qp.query_hash AND b.proc_or_function_name = 'adhoc')
2972+
OR (b.sql_handle = qp.sql_handle AND b.proc_or_function_name <> 'adhoc')
29742973
CROSS APPLY qp.query_plan.nodes('//p:QueryPlan/p:ParameterList/p:ColumnReference') AS q(n)
29752974
OPTION ( RECOMPILE );
29762975

@@ -2983,8 +2982,9 @@ IF EXISTS ( SELECT 1
29832982
b.proc_or_function_name AS proc_name,
29842983
qq.c.value('@Expression', 'NVARCHAR(128)') AS expression
29852984
FROM #query_plan AS qp
2986-
JOIN #working_warnings AS b
2987-
ON b.query_hash = qp.query_hash
2985+
JOIN #working_warnings AS b
2986+
ON (b.query_hash = qp.query_hash AND b.proc_or_function_name = 'adhoc')
2987+
OR (b.sql_handle = qp.sql_handle AND b.proc_or_function_name <> 'adhoc')
29882988
CROSS APPLY qp.query_plan.nodes('//p:QueryPlan/p:Warnings/p:PlanAffectingConvert') AS qq(c)
29892989
WHERE qq.c.exist('@ConvertIssue[.="Seek Plan"]') = 1
29902990
AND b.implicit_conversions = 1
@@ -3034,15 +3034,32 @@ IF EXISTS ( SELECT 1
30343034
FROM #conversion_info AS ci
30353035
OPTION ( RECOMPILE );
30363036

3037-
RAISERROR(N'Updating variables', 0, 1) WITH NOWAIT;
3038-
UPDATE sp
3039-
SET sp.variable_datatype = vi.variable_datatype,
3040-
sp.compile_time_value = vi.compile_time_value
3041-
FROM #stored_proc_info AS sp
3042-
JOIN #variable_info AS vi
3043-
ON sp.query_hash = vi.query_hash
3044-
AND sp.variable_name = vi.variable_name
3045-
OPTION ( RECOMPILE );
3037+
IF EXISTS ( SELECT *
3038+
FROM #stored_proc_info AS sp
3039+
JOIN #variable_info AS vi
3040+
ON (sp.proc_name = 'adhoc' AND sp.query_hash = vi.query_hash)
3041+
OR (sp.proc_name <> 'adhoc' AND sp.sql_handle = vi.sql_handle)
3042+
AND sp.variable_name = vi.variable_name )
3043+
BEGIN
3044+
RAISERROR(N'Updating variables', 0, 1) WITH NOWAIT;
3045+
UPDATE sp
3046+
SET sp.variable_datatype = vi.variable_datatype,
3047+
sp.compile_time_value = vi.compile_time_value
3048+
FROM #stored_proc_info AS sp
3049+
JOIN #variable_info AS vi
3050+
ON (sp.proc_name = 'adhoc' AND sp.query_hash = vi.query_hash)
3051+
OR (sp.proc_name <> 'adhoc' AND sp.sql_handle = vi.sql_handle)
3052+
AND sp.variable_name = vi.variable_name
3053+
OPTION ( RECOMPILE );
3054+
END
3055+
ELSE
3056+
BEGIN
3057+
RAISERROR(N'Inserting variables', 0, 1) WITH NOWAIT;
3058+
INSERT #stored_proc_info ( sql_handle, query_hash, variable_name, variable_datatype, compile_time_value, proc_name )
3059+
SELECT vi.sql_handle, vi.query_hash, vi.variable_name, vi.variable_datatype, vi.compile_time_value, vi.proc_name
3060+
FROM #variable_info AS vi
3061+
OPTION ( RECOMPILE );
3062+
END
30463063

30473064
RAISERROR(N'Updating procs', 0, 1) WITH NOWAIT;
30483065
UPDATE s
@@ -3060,7 +3077,10 @@ IF EXISTS ( SELECT 1
30603077
CHARINDEX(')', s.compile_time_value) - 1
30613078
- CHARINDEX('(', s.compile_time_value)
30623079
)
3063-
ELSE s.compile_time_value
3080+
WHEN variable_datatype NOT IN ('bit', 'tinyint', 'smallint', 'int', 'bigint')
3081+
AND s.variable_datatype NOT LIKE '%binary%' THEN
3082+
QUOTENAME(compile_time_value, '''')
3083+
ELSE s.compile_time_value
30643084
END
30653085
FROM #stored_proc_info AS s
30663086
OPTION(RECOMPILE);

0 commit comments

Comments
 (0)