Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtp (Exim 4.84_2) (envelope-from ) id 1eKNbB-0006WO-VV for pgsql-hackers@arkaria.postgresql.org; Thu, 30 Nov 2017 12:05:50 +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 1eKNbB-0000Ln-FV for pgsql-hackers@arkaria.postgresql.org; Thu, 30 Nov 2017 12:05:49 +0000 Received: from makus.postgresql.org ([2001:4800:1501:1::229]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1eKNbB-0000Ld-5e for pgsql-hackers@lists.postgresql.org; Thu, 30 Nov 2017 12:05:49 +0000 Received: from smtprelay0060.b.hostedemail.com ([64.98.42.60] helo=smtprelay.b.hostedemail.com) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.89) (envelope-from ) id 1eKNb8-00085P-7B for pgsql-hackers@postgresql.org; Thu, 30 Nov 2017 12:05:48 +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 39EAB8D01E; Thu, 30 Nov 2017 12:05:44 +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:2693:2828:2859:2933:2937:2939:2942:2945:2947:2951:2954:3022:3138:3139:3140:3141:3142:3353:3865:3866:3867:3868:3870:3871:3872:3873:3874:3934:3936:3938:3941:3944:3947:3950:3953:3956:3959:4605:5007:6261:8957:9010:9025:9121:10004:10400:10450:10455:10848:11026:11232:11658:11914:12043:12438:12663:13069:13161:13229:13311:13357:13439:13894:13895:14721:14764:19904:19999:21080:21394:21433:21627:30012:30041: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:2,LUA_SUMMARY:none X-HE-Tag: birth07_4f1beafe94644 X-Filterd-Recvd-Size: 2675 Received: from alvin.alvh.no-ip.org (unknown [163.247.79.155]) (Authenticated sender: alvherre@alvh.no-ip.org) by omf12.b.hostedemail.com (Postfix) with ESMTPA; Thu, 30 Nov 2017 12:05:43 +0000 (UTC) Received: by alvin.alvh.no-ip.org (Postfix, from userid 1000) id F362E90F; Thu, 30 Nov 2017 09:02:36 -0300 (-03) Date: Thu, 30 Nov 2017 09:02:36 -0300 From: Alvaro Herrera To: David Rowley Cc: Simon Riggs , Robert Haas , Pg Hackers , Maksim Milyutin Subject: Re: [HACKERS] Proposal: Local indexes for partitioned table Message-ID: <20171130120236.supr6fgshq7zf5j5@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 David Rowley wrote: > I wonder if it should be this patches job to alter the code in > get_relation_info() which causes the indexes not to be loaded for > partitioned tables: > > /* > * Make list of indexes. Ignore indexes on system catalogs if told to. > * Don't bother with indexes for an inheritance parent, either. > */ > if (inhparent || > (IgnoreSystemIndexes && IsSystemRelation(relation))) > hasindex = false; > else > hasindex = relation->rd_rel->relhasindex; > > A partitioned table will always go into the hasindex = false code path. > > I'm kind of thinking this patch should change that, even if the patch is > not making use of the indexes, you could argue that something > using set_rel_pathlist_hook might want to do something there, although, > there's likely a bunch of counter arguments too. > > What do you think? Great question. So you're thinking that the planner might have an interest in knowing what indexes are defined at the parent table level for planning purposes; but for that to actually have any effect we would need to change the planner and executor also. And one more point, also related to something you said before: we currently (I mean after my patch) don't mark partitioned-table-level indexes as valid or not valid depending on whether all its children exist, so trying to use that in the planner without having a flag could cause invalid plans to be generated (i.e. ones that would cause nonexistent indexes to be referenced). -- Álvaro Herrera https://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services