@@ -209,6 +209,7 @@ CREATE TABLE ##bou_BlitzCacheProcs (
209209 is_spool_more_rows BIT ,
210210 estimated_rows FLOAT ,
211211 is_bad_estimate BIT ,
212+ is_paul_white_electric BIT ,
212213 SetOptions VARCHAR (MAX ),
213214 Warnings VARCHAR (MAX )
214215 );
@@ -889,6 +890,7 @@ BEGIN
889890 is_spool_more_rows BIT ,
890891 estimated_rows FLOAT ,
891892 is_bad_estimate BIT ,
893+ is_paul_white_electric BIT ,
892894 SetOptions VARCHAR (MAX ),
893895 Warnings VARCHAR (MAX )
894896 );
@@ -2806,6 +2808,24 @@ WHERE SPID = @@SPID
28062808OPTION (RECOMPILE );
28072809END
28082810
2811+
2812+ RAISERROR (N ' Is Paul White Electric?' , 0 , 1 ) WITH NOWAIT ;
2813+ WITH XMLNAMESPACES(' http://schemas.microsoft.com/sqlserver/2004/07/showplan' AS p),
2814+ is_paul_white_electric AS (
2815+ SELECT 1 AS [is_paul_white_electric],
2816+ r .SqlHandle
2817+ FROM #relop AS r
2818+ CROSS APPLY r .relop .nodes (' //p:RelOp' ) c(n)
2819+ WHERE c .n .exist(' @PhysicalOp[.="Switch"]' ) = 1
2820+ )
2821+ UPDATE b
2822+ SET b .is_paul_white_electric = ipwe .is_paul_white_electric
2823+ FROM ##bou_BlitzCacheProcs AS b
2824+ JOIN is_paul_white_electric ipwe
2825+ ON ipwe .SqlHandle = b .SqlHandle
2826+ WHERE b .SPID = @@SPID
2827+ OPTION (RECOMPILE );
2828+
28092829IF @SkipAnalysis = 1
28102830 BEGIN
28112831 RAISERROR (N ' Skipping analysis, going to results' , 0 , 1 ) WITH NOWAIT ;
@@ -3022,7 +3042,8 @@ SET Warnings = SUBSTRING(
30223042 CASE WHEN is_adaptive = 1 THEN + ' , Adaptive Joins' ELSE ' ' END +
30233043 CASE WHEN is_spool_expensive = 1 THEN + ' , Expensive Index Spool' ELSE ' ' END +
30243044 CASE WHEN is_spool_more_rows = 1 THEN + ' , Large Index Row Spool' ELSE ' ' END +
3025- CASE WHEN is_bad_estimate = 1 THEN + ' , Row estimate mismatch' ELSE ' ' END
3045+ CASE WHEN is_bad_estimate = 1 THEN + ' , Row estimate mismatch' ELSE ' ' END +
3046+ CASE WHEN is_paul_white_electric = 1 THEN ' , SWITCH!' ELSE ' ' END
30263047 , 2 , 200000 )
30273048WHERE SPID = @@SPID
30283049OPTION (RECOMPILE ) ;
@@ -3089,7 +3110,8 @@ SELECT DISTINCT
30893110 CASE WHEN is_adaptive = 1 THEN + ' , Adaptive Joins' ELSE ' ' END +
30903111 CASE WHEN is_spool_expensive = 1 THEN + ' , Expensive Index Spool' ELSE ' ' END +
30913112 CASE WHEN is_spool_more_rows = 1 THEN + ' , Large Index Row Spool' ELSE ' ' END +
3092- CASE WHEN is_bad_estimate = 1 THEN + ' , Row estimate mismatch' ELSE ' ' END
3113+ CASE WHEN is_bad_estimate = 1 THEN + ' , Row estimate mismatch' ELSE ' ' END +
3114+ CASE WHEN is_paul_white_electric = 1 THEN ' , SWITCH!' ELSE ' ' END
30933115 , 2 , 200000 )
30943116FROM ##bou_BlitzCacheProcs b
30953117WHERE SPID = @@SPID
@@ -3467,7 +3489,8 @@ BEGIN
34673489 CASE WHEN is_adaptive = 1 THEN '' , 53'' ELSE '' '' END +
34683490 CASE WHEN is_spool_expensive = 1 THEN + '' , 54'' ELSE '' '' END +
34693491 CASE WHEN is_spool_more_rows = 1 THEN + '' , 55'' ELSE '' '' END +
3470- CASE WHEN is_bad_estimate = 1 THEN + '' , 56'' ELSE '' '' END
3492+ CASE WHEN is_bad_estimate = 1 THEN + '' , 56'' ELSE '' '' END +
3493+ CASE WHEN b.is_paul_white_electric = 1 THEN '' , 57'' ELSE '' '' END
34713494 , 2, 200000) AS opserver_warning , ' + @nl ;
34723495 END
34733496
@@ -4255,7 +4278,20 @@ BEGIN
42554278 ' Potentially bad cardinality estimates' ,
42564279 ' Estimated rows are different from average rows by a factor of 10000' ,
42574280 ' No URL yet' ,
4258- ' This may indicate a performance problem if mismatches occur regularly' ) ;
4281+ ' This may indicate a performance problem if mismatches occur regularly' ) ;
4282+
4283+ IF EXISTS (SELECT 1 / 0
4284+ FROM ##bou_BlitzCacheProcs p
4285+ WHERE p .is_paul_white_electric = 1
4286+ )
4287+ INSERT INTO ##bou_BlitzCacheResults (SPID, CheckID, Priority, FindingsGroup, Finding, URL , Details)
4288+ VALUES (@@SPID ,
4289+ 998 ,
4290+ 200 ,
4291+ ' Is Paul White Electric?' ,
4292+ ' This query has a Switch operator in it!' ,
4293+ ' http://sqlblog.com/blogs/paul_white/archive/2013/06/11/hello-operator-my-switch-is-bored.aspx' ,
4294+ ' You should email this query plan to Paul: SQLkiwi at gmail dot com' ) ;
42594295
42604296 IF @v >= 14
42614297 BEGIN
0 commit comments