Re: [HACKERS] Query started showing wrong result after Ctrl+c

Поиск
Список
Период
Сортировка
От tushar
Тема Re: [HACKERS] Query started showing wrong result after Ctrl+c
Дата
Msg-id 59524bf8-bc97-acae-1446-0d48298905ac@enterprisedb.com
обсуждение исходный текст
Ответ на Re: [HACKERS] Query started showing wrong result after Ctrl+c  (Marko Tiikkaja <marko@joh.to>)
Ответы Re: [HACKERS] Query started showing wrong result after Ctrl+c  (Tom Lane <tgl@sss.pgh.pa.us>)
Список pgsql-hackers
On 10/12/2017 03:46 PM, Marko Tiikkaja wrote:
> The subquery:
>
>     select n from tv limit 1
>
> could in theory return any row due to the lack of ORDER BY. What I'm 
> guessing happened is that you're seeing a synchronized sequential scan 
> in follow-up queries.  Add an ORDER BY.

Bang on . After adding order by clause - i am getting same result 
consistently. but why i got the  different result after canceling the 
query only?

test=# \c f2
You are now connected to database "f2" as user "centos".
f2=# create table tv(n int,n1 char(100));
CREATE TABLE
f2=# insert into tv values (generate_series(1,1000000),'aaa');
INSERT 0 1000000
f2=# insert into tv values (generate_series(10000,1000000),'a');
INSERT 0 990001
f2=# analyze tv;
ANALYZE
f2=# vacuum tv;
VACUUM
f2=# SELECT  *  FROM ( SELECT n   from  tv  where n= (select * from 
(select n from tv  limit 1) c)) as c  ; n
--- 1
(1 row)

f2=# SELECT  *  FROM ( SELECT n   from  tv  where n= (select * from 
(select n from tv  limit 1) c)) as c  ; n
--- 1
(1 row)

f2=# SELECT  *  FROM ( SELECT n   from  tv  where n= (select * from 
(select n from tv  limit 1) c)) as c  ; n
--- 1
(1 row)

f2=# SELECT  *  FROM ( SELECT n   from  tv  where n= (select * from 
(select n from tv  limit 1) c)) as c  ; n
--- 1
(1 row)

f2=# SELECT  *  FROM ( SELECT n   from  tv  where n= (select * from 
(select n from tv  limit 1) c)) as c  ; n
--- 1
(1 row)

f2=#

even after restarting the server ,  i am getting the same result.

now after canceling the operation , next time - result is coming different ?

f2=# SELECT  *  FROM ( SELECT n   from  tv  where n!=ALL (select * from 
(select n from tv) c)) as c  ;
^CCancel request sent
ERROR:  canceling statement due to user request
f2=# SELECT  *  FROM ( SELECT n   from  tv  where n= (select * from 
(select n from tv  limit 1) c)) as c  ;  n
------ 3713
(1 row)

-- 
regards,tushar
EnterpriseDB  https://www.enterprisedb.com/
The Enterprise PostgreSQL Company



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

В списке pgsql-hackers по дате отправления:

Предыдущее
От: Marko Tiikkaja
Дата:
Сообщение: Re: [HACKERS] Query started showing wrong result after Ctrl+c
Следующее
От: Petr Jelinek
Дата:
Сообщение: Re: [HACKERS] Fix a typo in execReplication.c