FIX: Updates That Use LEFT OUTER JOIN May Not Complete if Parallelism Is Used (266368)



The information in this article applies to:

  • Microsoft SQL Server 7.0 Service Pack 2

This article was previously published under Q266368
BUG #: 58090 (SQLBUG_70)

SYMPTOMS

An UPDATE query that uses a LEFT OUTER JOIN may not complete until the user manually stops the query's execution. To determine if you are encountering this bug, examine the sysprocesses output for the UPDATE query's process ID (SPID) number. It should indicate a waittype of '0x0200', a lastwaittype of 'Exchange', and a status of 'sleeping'. In addition, the waittime should be increasing over time.

This situation may occur on a multiprocessor computer where parallelism is enabled and a parallel query plan has been chosen for the UPDATE query. The same conditions applied to a server with the original version of SQL Server 7.0 or SQL Server 7.0 SP1 do not encounter this bug.

WORKAROUND

To turn off parallelism, do one of the following:
  • Run the following code:
    sp_configure 'max degree of parallelism', 1
    go
    reconfigure with override
    					
    -or-

  • Increase 'cost threshold for parallelism' in sp_configure to reduce the chance of a parallel query plan being chosen for the query. One would have to test and find the minimum value for this setting on your computer to avoid a parallel plan for the query because it is related to both the query and the data in the tables involved in the query.
NOTE: Using the OPTION (MAXDOP 1) query hint does not work for the query reported in this bug. For additional information, click the article number below to view the article in the Microsoft Knowledge Base:

266372 FIX: OPTION (MAXDOP 1) Hint May Not Turn Off Parallel Query

STATUS

Microsoft has confirmed this to be a problem in SQL Server 7.0. This problem has been corrected in U.S. Service Pack 3 for Microsoft SQL Server 7.0. For more information, click the following article number to view the article in the Microsoft Knowledge Base:

274799 INF: How to Obtain Service Pack 3 for Microsoft SQL Server 7.0 and Microsoft Data Engine (MSDE) 1.0

For more information, contact your primary support provider.

MORE INFORMATION

The following is an example of an UPDATE query that is affected by this bug:
UPDATE  tab_x SET 
  c1 = tab1.a
  c2 = tab2.a
FROM 
  tab_y LEFT OUTER JOIN tab1 ON tab_y.b1 = tab1.d 
  tab_y LEFT OUTER JOIN tab2 ON tab_y.b2 = tab2.d
				

Modification Type:MajorLast Reviewed:3/14/2006
Keywords:kbbug kbfix KB266368