Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtp (Exim 4.80) (envelope-from ) id 1X0dLY-00032Z-M9 for pgsql-bugs@arkaria.postgresql.org; Fri, 27 Jun 2014 21:06:12 +0000 Received: from localhost ([127.0.0.1] helo=postgresql.org) by malur.postgresql.org with smtp (Exim 4.80) (envelope-from ) id 1X0dLX-0008U5-FA for pgsql-bugs@arkaria.postgresql.org; Fri, 27 Jun 2014 21:06:11 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.2:DHE_RSA_AES_256_CBC_SHA256:256) (Exim 4.80) (envelope-from ) id 1X0dLW-0008Ty-Fq for pgsql-bugs@postgresql.org; Fri, 27 Jun 2014 21:06:10 +0000 Received: from smtprelay0092.b.hostedemail.com ([64.98.42.92] helo=smtprelay.b.hostedemail.com) by magus.postgresql.org with esmtp (Exim 4.80) (envelope-from ) id 1X0dLS-0004Eh-1r for pgsql-bugs@postgresql.org; Fri, 27 Jun 2014 21:06:09 +0000 Received: from filter.hostedemail.com (b-bigip1 [10.5.19.254]) by smtprelay02.b.hostedemail.com (Postfix) with ESMTP id 3E4CAD3A0B; Fri, 27 Jun 2014 21:06:04 +0000 (UTC) X-Session-Marker: 616C76686572726540616C76682E6E6F2D69702E6F7267 X-Spam-Summary: 30, 2, 0, , d41d8cd98f00b204, alvherre@alvh.no-ip.org, :::::, RULES_HIT:41:355:379:599:967:968:973:988:989:1260:1277:1311:1312:1313:1314:1345:1359:1437:1515:1516:1518:1519:1534:1541:1593:1594:1595:1596:1711:1730:1747:1777:1792:2393:2525:2560:2563:2682:2685:2692:2828:2859:2933:2937:2939:2942:2945:2947:2951:2954:3022:3138:3139:3140:3141:3142:3353:3865:3866:3867:3868:3870:3871:3872:3874:3934:3936:3938:3941:3944:3947:3950:3953:3956:3959:4250:4605:4659:5007:6117:6261:7996:9010:9025:9121:10010:10400:10848:11026:11232:11256:11257:11658:11914:12043:12296:12517:12519:12660:13069:13149:13161:13229:13230:13311:13357:13894:13895:21063:21080, 0, RBL:none, CacheIP:none, Bayesian:0.5, 0.5, 0.5, Netcheck:none, DomainCache:0, MSF:not bulk, SPF:fn, MSBL:0, DNSBL:none, Custom_rules:0:1:0 X-HE-Tag: cub14_17bf4b7f0e730 X-Filterd-Recvd-Size: 2956 Received: from eldon.alvh.no-ip.org (unknown [181.42.248.105]) (Authenticated sender: alvherre@alvh.no-ip.org) by omf03.b.hostedemail.com (Postfix) with ESMTPA; Fri, 27 Jun 2014 21:06:03 +0000 (UTC) Received: by eldon.alvh.no-ip.org (Postfix, from userid 1000) id 2CBB21FCB; Fri, 27 Jun 2014 17:05:21 -0400 (CLT) Date: Fri, 27 Jun 2014 17:05:21 -0400 From: Alvaro Herrera To: Bruce Momjian Cc: Andres Freund , PostgreSQL Bugs Subject: Re: pg_upgrade < 9.3 -> >=9.3 misses a step around multixacts Message-ID: <20140627210520.GP7340@eldon.alvh.no-ip.org> References: <20140619020633.GA20469@momjian.us> <20140619015205.GD3806@momjian.us> <20140619014034.GC3806@momjian.us> <20140619220425.GQ18688@eldon.alvh.no-ip.org> <20140620010653.GS18688@eldon.alvh.no-ip.org> <20140620180725.GD29143@momjian.us> <20140624201346.GB17110@momjian.us> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <20140624201346.GB17110@momjian.us> User-Agent: Mutt/1.5.21 (2010-09-15) X-Pg-Spam-Score: -1.9 (-) 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 Bruce Momjian wrote: > Assuming this is true, here is a query we can put in the next 9.3 minor > release notes to tell users if they need to remove the '0000' file: > > WITH list(file) AS > ( > SELECT * FROM pg_ls_dir('pg_multixact/offsets') > ) > SELECT EXISTS (SELECT * FROM list WHERE file = '0000') AND > NOT EXISTS (SELECT * FROM list WHERE file = '0001') AND > NOT EXISTS (SELECT * FROM list WHERE file = 'FFFF') AND > EXISTS (SELECT * FROM list WHERE file != '0000') > AS file_removal_needed; > > Do they need to remove the members/0000 file too? No, the members file shouldn't be removed; if they have used multixacts at all since upgrading, the members/0000 file contains the members of the first bunch of multis. Removing it would remove valid data. (Also I still think that removing the members/0000 file that initdb creates is a mistake.) I think the query above is correct. One possible quibble is a FFFF segment that isn't allocated in full. I don't think this is a problem, because although the 0000 file would survive deletion, it would be overwritten with zeroes as soon as the counter wraps around. Since 0000 is seen as "in the future" as soon as file 8000 starts being used, it shouldn't be a problem there. Another thing probably worth doing is have pg_upgrade set pg_database.datminmxid to the minimum of pg_class.relminmxid on each database. Right now these values are all initialized to 1, which is a problem. We have set_frozenxids() which appears to be related, although I don't readily understand what that is doing. -- Álvaro Herrera http://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Training & Services -- Sent via pgsql-bugs mailing list (pgsql-bugs@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-bugs