FIX: Exception Error Caused by WHERE Clause with OR Logical Operator with Third Party OLEDB Provider (294938)



The information in this article applies to:

  • Microsoft SQL Server 2000 (all editions)

This article was previously published under Q294938
BUG #: 352635 (SHILOH_BUGS)

SYMPTOMS

When you execute a linked server query that contains the OR
logical operator in the WHERE clause, an access violation may occur.

CAUSE

The predicate is being identified as a RangePoint but the copy out
code to handle a RangePoint is missing.

RESOLUTION

To resolve this problem, obtain the latest service pack for SQL Server 2000. For additional information, click the following article number to view the article in the Microsoft Knowledge Base:

290211 INF: How to Obtain the Latest SQL Server 2000 Service Pack

STATUS

Microsoft has confirmed that this is a problem in SQL Server 2000. This problem was first corrected in SQL Server 2000 Service Pack 1.

MORE INFORMATION

For an example, run this code:
Select * from anotherServer.dbname.owner.tablename WHERE ColA = 1 OR ColA = 2
				
Here is the Short Stack Dump (excerpt):

0045B0E8 Module(sqlservr+0005B0E8) (CConvertCtx::CConvertCtx(class CQuery *,class COptContext *,class CTablePlanProperties *,class COptExpr *)+00000058)
005698A6 Module(sqlservr+001698A6) (CConvertCtx::PqteConvertNewChild(class COptExpr *,class CTablePlanProperties *)+00000025)
0057FC54 Module(sqlservr+0017FC54) (CCnjInfo::PriGetSingleInterval(class CQuery *,class CTableMetadata *,unsigned long,class DRgPExpr *,class DRgBool *,class DRgPExpr *,class CValRef *,class CConvertCtx *)+00000122)
0057F787 Module(sqlservr+0017F787) (CCnjInfo::DrgpriStaticIntervals(class CQuery *,class CTableMetadata *,unsigned long,int,enum RANGETYPE,class CConvertCtx *,class COptExpr *,class DRgPExpr *)+00000350)
007771B3 Module(sqlservr+003771B3) (CPhyOp_RmtRange::PqteConvert(class CConvertCtx *)+000000E9)
0045B3FB Module(sqlservr+0005B3FB) (COptExpr::PqteConvert(class CConvertCtx *)+000000C3)
0045D631 Module(sqlservr+0005D631) (CConvertCtx::PqteConvertChild(unsigned long,class COptExpr *)+0000002D)
00776ECA Module(sqlservr+00376ECA) (CPhyOp_RmtFetch::PqteConvert(class CConvertCtx *)+0000003B)
0045B3FB Module(sqlservr+0005B3FB) (COptExpr::PqteConvert(class CConvertCtx *)+000000C3)
0045D631 Module(sqlservr+0005D631) (CConvertCtx::PqteConvertChild(unsigned long,class COptExpr *)+0000002D)

Modification Type:MajorLast Reviewed:10/17/2003
Keywords:kbBug kbfix kbSQLServ2000sp1fix KB294938 kbAudDeveloper