Skip to content

Commit 6d902ee

Browse files
Type plan_force_flat ids as bigint via TRY_CAST(LTRIM(...)) (#772)
The string-split path that parses sys.dm_db_tuning_recommendations.details returns regressed_plan_id / recommended_plan_id with a leading space because the upstream REPLACE chain inserts ': ' after every colon. The implicit cast on insert into #tuning_recommendations was silently swallowing the space; #771 added a TRY_CAST in the WHERE clause to survive the same surface. Move the type intent to the projection: TRY_CAST(LTRIM(SUBSTRING(...)) AS bigint) so the columns leave the derived table already typed. Drops the redundant TRY_CAST from the WHERE clause. Doesn't touch the splitting math.
1 parent 3a63bb6 commit 6d902ee

1 file changed

Lines changed: 31 additions & 19 deletions

File tree

sp_QuickieStore/sp_QuickieStore.sql

Lines changed: 31 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -11082,30 +11082,42 @@ FROM
1108211082
plan_force_json.score,
1108311083
plan_force_json.last_refresh,
1108411084
regressed_plan_id =
11085-
SUBSTRING
11085+
TRY_CAST
1108611086
(
11087-
plan_force_json.detail,
11088-
CHARINDEX(''regressedPlanId: '', plan_force_json.detail) + LEN(''regressedPlanId: ''),
11089-
IIF
11087+
LTRIM
1109011088
(
11091-
CHARINDEX('','', plan_force_json.detail, CHARINDEX(''regressedPlanId: '', plan_force_json.detail) + LEN('','')) = 0,
11092-
LEN(plan_force_json.detail),
11093-
CHARINDEX('','', plan_force_json.detail, CHARINDEX(''regressedPlanId: '', plan_force_json.detail) + LEN('',''))
11094-
)
11095-
- LEN(''regressedPlanId: '') - CHARINDEX(''regressedPlanId: '', plan_force_json.detail)
11089+
SUBSTRING
11090+
(
11091+
plan_force_json.detail,
11092+
CHARINDEX(''regressedPlanId: '', plan_force_json.detail) + LEN(''regressedPlanId: ''),
11093+
IIF
11094+
(
11095+
CHARINDEX('','', plan_force_json.detail, CHARINDEX(''regressedPlanId: '', plan_force_json.detail) + LEN('','')) = 0,
11096+
LEN(plan_force_json.detail),
11097+
CHARINDEX('','', plan_force_json.detail, CHARINDEX(''regressedPlanId: '', plan_force_json.detail) + LEN('',''))
11098+
)
11099+
- LEN(''regressedPlanId: '') - CHARINDEX(''regressedPlanId: '', plan_force_json.detail)
11100+
)
11101+
) AS bigint
1109611102
),
1109711103
recommended_plan_id =
11098-
SUBSTRING
11104+
TRY_CAST
1109911105
(
11100-
plan_force_json.detail,
11101-
CHARINDEX(''recommendedPlanId: '', plan_force_json.detail) + LEN(''recommendedPlanId: ''),
11102-
IIF
11106+
LTRIM
1110311107
(
11104-
CHARINDEX('','', plan_force_json.detail, CHARINDEX(''recommendedPlanId: '', plan_force_json.detail) + LEN('','')) = 0,
11105-
LEN(plan_force_json.detail),
11106-
CHARINDEX('','', plan_force_json.detail, CHARINDEX(''recommendedPlanId: '', plan_force_json.detail) + LEN('',''))
11107-
)
11108-
- LEN(''recommendedPlanId: '') - CHARINDEX(''recommendedPlanId: '', plan_force_json.detail)
11108+
SUBSTRING
11109+
(
11110+
plan_force_json.detail,
11111+
CHARINDEX(''recommendedPlanId: '', plan_force_json.detail) + LEN(''recommendedPlanId: ''),
11112+
IIF
11113+
(
11114+
CHARINDEX('','', plan_force_json.detail, CHARINDEX(''recommendedPlanId: '', plan_force_json.detail) + LEN('','')) = 0,
11115+
LEN(plan_force_json.detail),
11116+
CHARINDEX('','', plan_force_json.detail, CHARINDEX(''recommendedPlanId: '', plan_force_json.detail) + LEN('',''))
11117+
)
11118+
- LEN(''recommendedPlanId: '') - CHARINDEX(''recommendedPlanId: '', plan_force_json.detail)
11119+
)
11120+
) AS bigint
1110911121
)
1111011122
FROM
1111111123
(
@@ -11127,7 +11139,7 @@ WHERE EXISTS
1112711139
SELECT
1112811140
1/0
1112911141
FROM #query_store_plan AS qsp
11130-
WHERE TRY_CAST(plan_force_flat.regressed_plan_id AS bigint) = qsp.plan_id
11142+
WHERE plan_force_flat.regressed_plan_id = qsp.plan_id
1113111143
)
1113211144
OPTION(RECOMPILE);' + @nc10;
1113311145

0 commit comments

Comments
 (0)