Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtp (Exim 4.84_2) (envelope-from ) id 1eQxsO-0004dv-4e for pgsql-hackers@arkaria.postgresql.org; Mon, 18 Dec 2017 16:02:48 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.84_2) (envelope-from ) id 1eQxsM-0001tw-S0 for pgsql-hackers@arkaria.postgresql.org; Mon, 18 Dec 2017 16:02:46 +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_2) (envelope-from ) id 1eQxsM-0001sy-LW for pgsql-hackers@lists.postgresql.org; Mon, 18 Dec 2017 16:02:46 +0000 Received: from smtprelay0209.b.hostedemail.com ([64.98.42.209] helo=smtprelay.b.hostedemail.com) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.89) (envelope-from ) id 1eQxsH-0002wD-0B for pgsql-hackers@postgresql.org; Mon, 18 Dec 2017 16:02:45 +0000 Received: from filter.hostedemail.com (10.5.19.248.rfc1918.com [10.5.19.248]) by smtprelay06.b.hostedemail.com (Postfix) with ESMTP id DAAED8D013; Mon, 18 Dec 2017 16:02:37 +0000 (UTC) X-Session-Marker: 616C76686572726540616C76682E6E6F2D69702E6F7267 X-Spam-Summary: 50,0,0,,d41d8cd98f00b204,alvherre@alvh.no-ip.org,:::::::::,RULES_HIT:41:355:379:599:967: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:2828:2859:2933:2937:2939:2942:2945:2947:2951:2954:3022:3138:3139:3140:3141:3142:3352:3865:3868:3870:3871:3872:3874:3934:3936:3938:3941:3944:3947:3950:3953:3956:3959:4605:5007:6261:7809:9025:9121:10004:10394:10400:10848:11658:11914:13053:13069:13311:13357:13439:13894:13895:14764:21080:21324:21627:30054:30070,0,RBL:none,CacheIP:none,Bayesian:0.5,0.5,0.5,Netcheck:none,DomainCache:0,MSF:not bulk,SPF:,MSBL:0,DNSBL:none,Custom_rules:0:0:0,LFtime:3,LUA_SUMMARY:none X-HE-Tag: bite47_8b4bd76e1f72b X-Filterd-Recvd-Size: 2084 Received: from alvin.alvh.no-ip.org (unknown [179.57.113.18]) (Authenticated sender: alvherre@alvh.no-ip.org) by omf10.b.hostedemail.com (Postfix) with ESMTPA; Mon, 18 Dec 2017 16:02:37 +0000 (UTC) Received: by alvin.alvh.no-ip.org (Postfix, from userid 1000) id 610F111BE; Mon, 18 Dec 2017 13:02:30 -0300 (-03) Date: Mon, 18 Dec 2017 13:02:30 -0300 From: Alvaro Herrera To: Robert Haas Cc: David Rowley , Simon Riggs , Pg Hackers , Maksim Milyutin Subject: Re: [HACKERS] Proposal: Local indexes for partitioned table Message-ID: <20171218160230.hdq2k23hheud6arv@alvherre.pgsql> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: User-Agent: NeoMutt/20170306-137-4415bd-dirty (1.8.0) List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk After this discussion, this is how I see things working: 1. pg_dump a) creates indexes on partitions normally b) once all existing indexes are done, index on parent is created, with ONLY. No cascading occurs, no indexes are attached. c) ATTACH is run for each existing partition index. After each ATTACH, we check that all indexes exist. If so, the parent is marked valid. d) if not all indexes existed in partitions, index on parent remains invalid. (It was invalid in the dumped database, so this is correct.) 2. other uses Normal CREATE INDEX (without ONLY) recurses and attaches the first matching index it finds (no duplicate indexes are created); partitions without a matching index get one created. 3. ALTER INDEX DETACH is not provided. Therefore: once index is valid, it remains so forever. I think this satisfies all concerns. -- Álvaro Herrera https://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services