>Description:

When joining tables using a SELECT statement and using the DISTINCTROW modifier, I 
noticed a difference in the resultset by adding the ORDER BY directive on the end of 
the SQL command on a column that is not included in the result.  If no join is 
performed and the DISTINCTROW/ORDER BY combination is used, the results remain 
correct; however, by joining the tables by a common ID, all rows with a different 
value in the column being ORDERed BY are returned.  I have also repeated this bug on 
MySQL 3.23.49a on RedHat 7.2 using the official build on InnoDB tables.
>How-To-Repeat:
        
# ----------------------------
# Creating tables for the test
# ----------------------------

CREATE TABLE table1 (email varchar(50), infoID BIGINT, dateentered DATETIME);
CREATE TABLE table2 (infoID BIGINT, shipcode varchar(10));

# -----------------
# Populating table1
# -----------------

INSERT INTO table1(email, infoID, dateentered) VALUES
        ('[EMAIL PROTECTED]', 1, '2002-07-30 22:56:38'),
        ('[EMAIL PROTECTED]', 1, '2002-07-27 22:58:16'),
        ('[EMAIL PROTECTED]', 1, '2002-06-19 15:22:19'),
        ('[EMAIL PROTECTED]', 2, '2002-06-18 14:23:47'),
        ('[EMAIL PROTECTED]', 1, '2002-05-19 22:17:32');

INSERT INTO table2(infoID, shipcode) VALUES
        (1, 'Z001'),
        (2, 'R002');

# ------------------------------
# Reading out correct statements
# ------------------------------

SELECT DISTINCTROW email, shipcode FROM table1, table2 WHERE 
table1.infoID=table2.infoID;
SELECT DISTINCTROW email FROM table1 ORDER BY dateentered DESC;

# -----------------------------
# Reading out erratic statement
# -----------------------------

SELECT DISTINCTROW email, shipcode FROM table1, table2 WHERE 
table1.infoID=table2.infoID
        ORDER BY dateentered DESC;

# -----------
# Cleaning up
# -----------

DROP TABLE table1;
DROP TABLE table2;

>Fix:

If you do not use ORDER BY, the correct resultset is returned, just not in any 
particular order. ;)

>Submitter-Id:  [EMAIL PROTECTED]
>Originator:    Stephen Cuppett
>Organization: IBM, eServer zSeries development
>MySQL support: none
>Synopsis:      JOIN-like SELECT with DISTINCTROW AND ORDER BY produces erratic results
>Severity:      serious
>Priority:      medium
>Category:      mysql
>Class:         sw-bug
>Release:       mysql-3.23.51 (Official MySQL RPM)
>Server: /usr/bin/mysqladmin  Ver 8.23 Distrib 3.23.51, for pc-linux-gnu on i686
Copyright (C) 2000 MySQL AB & MySQL Finland AB & TCX DataKonsult AB
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL license

Server version          3.23.51-Max
Protocol version        10
Connection              Localhost via UNIX socket
UNIX socket             /var/lib/mysql/mysql.sock
Uptime:                 24 min 55 sec

Threads: 1  Questions: 25  Slow queries: 0  Opens: 14  Flush tables: 1  Open tables: 2 
Queries per second avg: 0.017
>Environment:
        
System: Linux cuppett.endicott.ibm.com 2.4.18-3 #1 Thu Apr 18 07:37:53 EDT 2002 i686 
unknown
Architecture: i686

Some paths:  /usr/bin/perl /usr/bin/make /usr/bin/gmake /usr/bin/gcc /usr/bin/cc
GCC: Reading specs from /usr/lib/gcc-lib/i386-redhat-linux/2.96/specs
gcc version 2.96 20000731 (Red Hat Linux 7.3 2.96-112)
Compilation info: CC='gcc'  CFLAGS='-O6 -fno-omit-frame-pointer -mpentium'  CXX='gcc'  
CXXFLAGS='-O6 -fno-omit-frame-pointer              -felide-constructors 
-fno-exceptions -fno-rtti -mpentium'  LDFLAGS=''
LIBC: 
lrwxrwxrwx    1 root     root           13 Jul 29 07:00 /lib/libc.so.6 -> libc-2.2.5.so
-rwxr-xr-x    1 root     root      1260480 Jul  9 11:58 /lib/libc-2.2.5.so
-rw-r--r--    1 root     root      2312370 Jul  9 11:25 /usr/lib/libc.a
-rw-r--r--    1 root     root          178 Jul  9 11:19 /usr/lib/libc.so
Configure command: ./configure --disable-shared --with-mysqld-ldflags=-all-static 
--with-client-ldflags=-all-static --with-other-libc=/usr/local/mysql-glibc 
--without-berkeley-db --without-innodb --enable-assembler --enable-local-infile 
--with-mysqld-user=mysql --with-unix-socket-path=/var/lib/mysql/mysql.sock --prefix=/ 
--with-extra-charsets=complex --exec-prefix=/usr --libexecdir=/usr/sbin 
--sysconfdir=/etc --datadir=/usr/share --localstatedir=/var/lib/mysql 
--infodir=/usr/info --includedir=/usr/include --mandir=/usr/man 
'--with-comment=Official MySQL RPM' CC=gcc 'CFLAGS=-O6 -fno-omit-frame-pointer 
-mpentium' 'CXXFLAGS=-O6 -fno-omit-frame-pointer                  -felide-constructors 
-fno-exceptions -fno-rtti -mpentium' CXX=gcc


---------------------------------------------------------------------
Before posting, please check:
   http://www.mysql.com/manual.php   (the manual)
   http://lists.mysql.com/           (the list archive)

To request this thread, e-mail <[EMAIL PROTECTED]>
To unsubscribe, e-mail <[EMAIL PROTECTED]>
Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php

Reply via email to