FIX: SELECT INTO with Outer Join Can GP Fault Server
  
PSS ID Number: Q100088
Article last modified on 10-31-1994
 
4.20a
 
OS/2
 

----------------------------------------------------------------------
The information in this article applies to:
 
  - Microsoft SQL Server version 4.2a for OS/2
----------------------------------------------------------------------
 
BUG# OS/2: 1713 (4.2a)
 
SYMPTOMS
========
 
Using the SELECT INTO command with an outer join between at least two
tables and a GROUP BY that includes columns from both tables including a
money type from the second table can cause SQL Server to general protection
fault (GP fault) with the following SYS1943 error message:
 
   A protection violation has occurred.
 
The minimum conditions required for replication are the following:
 
1. The first table has at least three columns, at least two of which
   are VARCHAR or CHAR.
 
2. The first table has at least 580 rows of data.
 
3. The second table has a least one CHAR and a MONEY column, zero or
   more rows of data, and zero or more indexes.
 
4. The table selected into can be either a temp table or permanent.
 
5. The GROUP BY clause must contain at a minimum the two VARCHAR or
   CHAR columns from the first table and the money column from the
   second table.
 
6. There must be an outer join (t1.c1 *= t2.c1) in the WHERE clause,
   but it does not appear to matter which columns it is on.
 
Following is a minimal example of the table structures and query
required to trap the server. You will need to have at least 580 rows
of data in t1 to replicate the error.
 
   /*****************************************************/
   /*  Set up the two tables                            */
   /*****************************************************/
 
   use pubs
   go
 
   drop table t1
   go
 
   create table t1
   (c1        char(2) null,
    c2        varchar(10) null,
    c3        varchar(10) null)
   go
 
   drop table t2
   go
 
   create table t2 (c4 char(2),
                    c5 money)
   go
 
   /**************************************************/
   /*  The query                                     */
   /**************************************************/
   /*  Need to insert data or query will not crash.  */
 
   select c2, c3, c5
   into #temp_snapshot
   from
       t1, t2
   where
       t1.c1 *= t2.c4
   group by
       c2, c3, c5
   go
 
STATUS
======
 
Microsoft has confirmed this to be a problem in SQL Server version
4.2a for OS/2. This problem was corrected in SQL Server version
4.2aK11. For more information, contact your primary support provider.
 
Additional reference words: 4.20a kernel err msg errmsg alert
KBCategory: kbprg kberrmsg
KBSubCategory: SSrvServer SSrvGPF
 
=============================================================================
 
Copyright Microsoft Corporation 1994.
