Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtp (Exim 4.80) (envelope-from ) id 1ZNgaR-0007Bj-06 for pgsql-bugs@arkaria.postgresql.org; Fri, 07 Aug 2015 12:17:23 +0000 Received: from localhost ([127.0.0.1] helo=postgresql.org) by malur.postgresql.org with smtp (Exim 4.84) (envelope-from ) id 1ZNgaP-0005NL-J4 for pgsql-bugs@arkaria.postgresql.org; Fri, 07 Aug 2015 12:17:21 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.84) (envelope-from ) id 1ZNgaO-0005NC-5K for pgsql-bugs@postgresql.org; Fri, 07 Aug 2015 12:17:20 +0000 Received: from wrigleys.postgresql.org ([204.145.124.246]) by magus.postgresql.org with esmtp (Exim 4.84) (envelope-from ) id 1ZNgaB-0008Sz-0g for pgsql-bugs@postgresql.org; Fri, 07 Aug 2015 12:17:19 +0000 MIME-Version: 1.0 Subject: BUG #13541: There is a visibility issue when run some DDL and Query. The time window is very shot To: pgsql-bugs@postgresql.org From: beijing_pg@163.com Date: Fri, 07 Aug 2015 12:16:43 +0000 Message-ID: <20150807121643.32633.60549@wrigleys.postgresql.org> X-Pg-Spam-Score: -1.9 (-) Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit List-Archive: List-Help: List-ID: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: X-Mailing-List: pgsql-bugs Precedence: bulk Sender: pgsql-bugs-owner@postgresql.org The following bug has been logged on the website: Bug reference: 13541 Logged by: zhangjinyu Email address: beijing_pg@163.com PostgreSQL version: 9.2.13 Operating system: suse Description: There is a visibility issue when run some DDL and Query. The time window is very shot. Postgres is to hold relation lock after getsnapshot. Before a query holds relation lock, if another session run a DDL(alter table alter column set datatype), Once this DDL committed, select query will return zero row, because the DDL(alter table alter column set datatype) will rewrite all tuples with new transaction id. We can use the following test case to repro the issue. we add sleep(40) after GetTransactionSnapshot (in function exec_simple_query) to enlarge the time window. Step1: session1: select * from t; (return 3 row) set enable_sleep30_after_getsnapshot=on; select * from t; Step2: session2: begin transaction; alter table t alter c1 set type char(10); commit; we can see session1 "select * from t" return 0 row. ====================================== session1: select * from t; (it returns 3 rows) set enable_sleep30_after_getsnapshot=on; select * from t; (it returns 0 row) session2: start transaction; alter table t alter c1 set type char(10); end; -- Sent via pgsql-bugs mailing list (pgsql-bugs@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-bugs