Thread: BUG #10207: Simple select query returns duplicate row - Critical issue

BUG #10207: Simple select query returns duplicate row - Critical issue

From
vetri_2020@yahoo.com
Date:
The following bug has been logged on the website:

Bug reference:      10207
Logged by:          Vetri
Email address:      vetri_2020@yahoo.com
PostgreSQL version: 9.2.4
Operating system:   Windows 7
Description:

I'd encountered an issue in select query when using order by and limit.

When I sort by a column which have same values for some data,then the row
that appears in first page also appears in next page.

For example,

select * from table order by col2 limit 10;

| col1                                   | col2   |
+----------------------------------------+--------+
| {74414578-F65E-48D1-BB4A-8350A6688989} | test1  |
| {B2695B59-FE6D-4CA3-AB6C-CB773FF02A34} | test10 |
| {11239516-1A8B-4028-AA54-0E1F091F439E} | test10 |
| {CE68934B-72C7-4D5A-99F3-819A5293785F} | test13 |
| {BDAFF881-CA4A-4F0F-85AF-36B7C2200A9D} | test13 |
| {6C5EC468-25C9-49AC-8FFA-F27DB2DACDF3} | test13 |
| {B87C76A9-F450-47FC-8727-8C7F3657F885} | test13 |
| {811B5B81-4D75-4B6E-91E7-E791E56A223C} | test2  |
| {2A6C9270-ADC5-4059-A0A1-677D27E26AB9} | test3  |
| {A2F91E6F-7589-4239-BDF8-C90B11E35487} | test4  |
| {B435F056-59FE-46F3-9CE0-7C9019F38885} | test4  |
| {4EDAC233-BA9C-4058-80E0-374E02B36D06} | test5  |
| {A28B6BC7-BAED-4C7E-90E1-06A253B83D20} | test7  |
| {B8201EF9-DCEC-407E-A8E2-775CB246A0BE} | test8  |
| {1D0A1EB4-9DCD-4CAE-B66C-13EE853E41D7} | test9  |
+----------------------------------------+--------+

returns 10 rows correctly where 5th and 6th row contains same data for
col2.

Now, when I execute this query ,

select * from testsort order by col2 limit 5
;

+----------------------------------------+--------+
| col1                                   | col2   |
+----------------------------------------+--------+
| {74414578-F65E-48D1-BB4A-8350A6688989} | test1  |
| {B2695B59-FE6D-4CA3-AB6C-CB773FF02A34} | test10 |
| {11239516-1A8B-4028-AA54-0E1F091F439E} | test10 |
| {6C5EC468-25C9-49AC-8FFA-F27DB2DACDF3} | test13 |
| {BDAFF881-CA4A-4F0F-85AF-36B7C2200A9D} | test13 |
+----------------------------------------+--------+

And when I execute the below query, the issue occurs.

+----------------------------------------+--------+
| col1                                   | col2   |
+----------------------------------------+--------+
| {6C5EC468-25C9-49AC-8FFA-F27DB2DACDF3} | test13 |
| {B87C76A9-F450-47FC-8727-8C7F3657F885} | test13 |
| {811B5B81-4D75-4B6E-91E7-E791E56A223C} | test2  |
| {2A6C9270-ADC5-4059-A0A1-677D27E26AB9} | test3  |
| {A2F91E6F-7589-4239-BDF8-C90B11E35487} | test4  |
+----------------------------------------+--------+

Look at the results.This row '{6C5EC468-25C9-49AC-8FFA-F27DB2DACDF3}' occurs
two times..One in first page and also in next page.

This key '{CE68934B-72C7-4D5A-99F3-819A5293785F}' is missing in results.

Appreciate your prompt response !

Col datatype - citext

Re: BUG #10207: Simple select query returns duplicate row - Critical issue

From
Marko Tiikkaja
Date:
On 5/3/14, 1:04 PM, vetri_2020@yahoo.com wrote:
> I'd encountered an issue in select query when using order by and limit.
>
> When I sort by a column which have same values for some data,then the row
> that appears in first page also appears in next page.

This is not a bug.  The sort order of identical values is undefined
unless disambiguated by adding more sort expressions.

> And when I execute the below query, the issue occurs.

You didn't show the query you used here, but I'm assuming it had OFFSET
5 or something similar.  And yes, that's still undefined behaviour, and
not a bug.



Regards,
Marko Tiikkaja
Marko Tiikkaja <marko@joh.to> writes:
> On 5/3/14, 1:04 PM, vetri_2020@yahoo.com wrote:
>> I'd encountered an issue in select query when using order by and limit.
>>
>> When I sort by a column which have same values for some data,then the row
>> that appears in first page also appears in next page.

> This is not a bug.  The sort order of identical values is undefined
> unless disambiguated by adding more sort expressions.

Somebody else asked this identical question just a couple days ago:

http://www.postgresql.org/message-id/flat/20140428192320.2661.1832@wrigleys.postgresql.org

It's not random in the sense of having any indeterminate behavior,
but the output ordering of equal-keyed elements *can* change depending
on the LIMIT value.

            regards, tom lane

Re: BUG #10207: Simple select query returns duplicate row - Critical issue

From
David G Johnston
Date:
The fact that two executions of a query can return the same data is not
anything like what your subject describes.  Now, if a single execution
returned a duplicate row (based on a PK) then what you said would be true.

If you need definite order you need to sort on a primary key - or something
equivalent.

David J.



--
View this message in context:
http://postgresql.1045698.n5.nabble.com/BUG-10207-Simple-select-query-returns-duplicate-row-Critical-issue-tp5802310p5802319.html
Sent from the PostgreSQL - bugs mailing list archive at Nabble.com.