Microsoft KB Archive/106279

{| = FIX: SQL SELECT Can Cause Extra Output =
 * width="100%"|

ID: Q106279

2.50   | 2.50 WINDOWS | MS-DOS kbprg kbfixlist kbbuglist The information in this article applies to:


 * Microsoft FoxPro for Windows, version 2.5
 * Microsoft FoxPro for MS-DOS, version 2.5

SYMPTOMS
Under certain circumstances, a Structured Query Language (SQL) SELECT command can return extra output.

NOTE: This problem does not occur on all hardware.

STATUS
Microsoft has confirmed this to be a problem in FoxPro 2.5 for MS-DOS and FoxPro 2.5 for Windows. This problem was corrected in FoxPro 2.5a for MS-DOS and FoxPro 2.5a for Windows.

Steps to Reproduce Problem
Create and run a program with the following code:

* Create A_FILE, B_FILE, and A_B_XREF, which is an x-ref file that * sets up a many-to-many relationship between A_FILE and B_FILE. CREATE TABLE a_file   (     a_code     C(1),      ;      a_name     C(10)     )

CREATE TABLE a_b_xref (     a_code     C(1),      ;      b_code     C(1)      )

CREATE TABLE b_file   (     b_code     C(1),      ;      b_name     C(10)     )

CLOSE DATABASES

* Note that some of the A_CODE values are in  * the nonprintable range below ASCII code 32. INSERT INTO a_file VALUES(CHR(29),"A_NAME a29") INSERT INTO a_file VALUES(CHR(30),"A_NAME a30") INSERT INTO a_file VALUES(CHR(31),"A_NAME a31") INSERT INTO a_file VALUES(CHR(32),"A_NAME a32") INSERT INTO a_file VALUES(CHR(33),"A_NAME a33")

INSERT INTO a_b_xref VALUES(CHR(30),"1") INSERT INTO a_b_xref VALUES(CHR(31),"1") INSERT INTO a_b_xref VALUES(CHR(29),"2") INSERT INTO a_b_xref VALUES(CHR(32),"2") INSERT INTO a_b_xref VALUES(CHR(33),"2")

INSERT INTO b_file VALUES("1","B_NAME 1") INSERT INTO b_file VALUES("2","B_NAME 2")

CLOSE DATABASES

* Index fields SELECT 0 USE a_file INDEX ON a_code TAG a_code INDEX ON a_name TAG a_name USE

SELECT 0 USE a_b_xref INDEX ON a_code TAG a_code INDEX ON b_code TAG b_code USE

SELECT 0 USE b_file INDEX ON b_code TAG b_code INDEX ON b_name TAG b_name USE

SELECT ; DISTINCT ; a_file.a_name,b_file.b_name ; FROM a_file,a_b_xref,b_file ; WHERE a_file.a_code==a_b_xref.a_code AND ; b_file.b_code==a_b_xref.b_code AND ; b_file.b_name="B_NAME 1" This program displays a Browse window containing three records. It should display only two records. Additional reference words: FoxDos FoxWin 2.50 buglist2.50 fixlist2.50a KBCategory: kbprg kbfixlist kbbuglist KBSubcategory: FxprgSql Solution Type : kbfix
 * }