Thread: [BUGS] BUG #14476: crosstabview reports mistaken location

[BUGS] BUG #14476: crosstabview reports mistaken location

From
t.katsumata1122@gmail.com
Date:
The following bug has been logged on the website:

Bug reference:      14476
Logged by:          Tomonari Katsumata
Email address:      t.katsumata1122@gmail.com
PostgreSQL version: 9.6.1
Operating system:   macOS Sierra 10.12.1
Description:

Hi,

I'm playing with crosstabview, PostgreSQL9.6 new feature.
And I noticed the error message is not correct when it has duplicate data.

-- How to reproduce -----
create table ctv(x int, y int, v text);
insert into ctv values (1, generate_series(1,10), '*');
insert into ctv values (1, 10, '*'); -- duplicate data
select * from ctv;
\crosstabview
-------------------------

The last 2 statements work like below.

postgres=# select * from ctv;
 x | y  | v
---+----+---
 1 |  1 | *
 1 |  2 | *
 1 |  3 | *
 1 |  4 | *
 1 |  5 | *
 1 |  6 | *
 1 |  7 | *
 1 |  8 | *
 1 |  9 | *
 1 | 10 | *
 1 | 10 | *
(11 rows)

postgres=# \crosstabview
\crosstabview: query result contains multiple data values for row "1",
column "9"


In above case, although there is duplicate data on row(x):1 and
column(y):10,
row(x):1 and column(y):9 is not duplicate.

So I think it should be the message say
  \crosstabview: query result contains multiple data values for row "1",
column "10"


It seems this problem is reproduced when number of row is higher than 10.
Could you check this, please?

Best regards,
-------
Tomonari Katsumata



--
Sent via pgsql-bugs mailing list (pgsql-bugs@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-bugs

Re: [BUGS] BUG #14476: crosstabview reports mistaken location

From
Tom Lane
Date:
t.katsumata1122@gmail.com writes:
> I'm playing with crosstabview, PostgreSQL9.6 new feature.
> And I noticed the error message is not correct when it has duplicate data.

Yup, you're right.

> It seems this problem is reproduced when number of row is higher than 10.

It looks to me like the triggering condition is that the data values
aren't in ASCII (strcmp()) order.  As long as they are, the "pivot value"
array order matches the rank order and so the error message accidentally
selects the appropriate array entries.

Fix pushed, thanks for the report!

            regards, tom lane


-- 
Sent via pgsql-bugs mailing list (pgsql-bugs@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-bugs