Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1h3hNX-0001jx-7S for pgsql-hackers@arkaria.postgresql.org; Tue, 12 Mar 2019 13:23:35 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.89) (envelope-from ) id 1h3hNW-0005Vz-2E for pgsql-hackers@arkaria.postgresql.org; Tue, 12 Mar 2019 13:23:34 +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_SHA1:256) (Exim 4.89) (envelope-from ) id 1h3hNV-0005Vs-Qo for pgsql-hackers@lists.postgresql.org; Tue, 12 Mar 2019 13:23:33 +0000 Received: from mail-qt1-f194.google.com ([209.85.160.194]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1h3hNS-0004t1-Vw for pgsql-hackers@postgresql.org; Tue, 12 Mar 2019 13:23:33 +0000 Received: by mail-qt1-f194.google.com with SMTP id v20so2401774qtv.12 for ; Tue, 12 Mar 2019 06:23:29 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:reply-to:subject:to:cc:references:from :organization:message-id:date:user-agent:mime-version:in-reply-to :content-language; bh=drSgn62GBwgTdl1qK0MPEBEenUBeoktN+fI/o7MXBmc=; b=j55QdTptGQ0yhkIaEoIPN9nv1V+wvBtTeqvmJxHK0e/JrMEj+N2JjLUR5muPoGtjJl Q+lIvhGmzW6sAV/RqGUn4ILVOdrWwPF3D63cZiFSB+YSWgSvWePsKh6/Ux1cJkN7Yn0Q S+rxkFqLdm+oL6yqHMlTpVP35FnsEoMazDDTiEAiS4dQmIaWwXCUWFsFL2RbL9jio2/W rFb0lYQzE7aWsDZGNOQrUiEQ33bZymEtyQpNdpz9pNcwre56hI0nItMUTxDM/l9NyWob K3deJr/InukBUSjovUaTRADu4tiLGydYmRnvOWvaG4V3xlcx7raX/1kXzc7u6UG2vhVb 6dNQ== X-Gm-Message-State: APjAAAWQrvEBkn6xSh95gN16ElQ6sPw57gCm6e201qLULFjTJcNH/J9P 1IQldtTAdu6ev89Ma/qjbZO2lMndbjw= X-Google-Smtp-Source: APXvYqwkT7lr/76LvCXNhUL9GrWvnhiAnIl0EuCWRG4ZRftxsoU8GOeESQUvfjDuo425vTM9sjRsXw== X-Received: by 2002:ac8:2a7b:: with SMTP id l56mr30377875qtl.270.1552397007793; Tue, 12 Mar 2019 06:23:27 -0700 (PDT) Received: from localhost.localdomain (c-24-61-8-151.hsd1.ma.comcast.net. [24.61.8.151]) by smtp.gmail.com with ESMTPSA id b10sm5901475qtb.93.2019.03.12.06.23.26 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 12 Mar 2019 06:23:26 -0700 (PDT) Reply-To: jesper.pedersen@redhat.com Subject: Re: speeding up planning with partitions To: Amit Langote Cc: "Imai, Yoshikazu" , 'Amit Langote' , Tom Lane , David Rowley , Alvaro Herrera , Justin Pryzby , Pg Hackers References: <7453.1550518972@sss.pgh.pa.us> <0a70234e-b2e6-debc-2fb5-e8fd927caa00@lab.ntt.co.jp> <1002.1550596071@sss.pgh.pa.us> <30961.1550609873@sss.pgh.pa.us> <250c61bc-479c-92f4-d19d-d768e3bcdcbc@lab.ntt.co.jp> <13510.1550677844@sss.pgh.pa.us> <35b02675-83c2-a12b-961a-fec249b06f35@lab.ntt.co.jp> <20190222165932.GG28750@telsasoft.com> <0F97FA9ABBDBE54F91744A9B37151A51293422@g01jpexmbkw24> <8098beec-fc04-303d-55b9-73c3d94ba1ea@lab.ntt.co.jp> <80afef3f-1870-5cb3-eeaf-7d8ecb41994c@lab.ntt.co.jp> From: Jesper Pedersen Organization: Red Hat Message-ID: Date: Tue, 12 Mar 2019 09:23:25 -0400 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.4.0 MIME-Version: 1.0 In-Reply-To: Content-Type: multipart/mixed; boundary="------------A9864800F19A99C1FB2CE2AB" Content-Language: en-US List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk This is a multi-part message in MIME format. --------------A9864800F19A99C1FB2CE2AB Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Hi Amit, On 3/12/19 4:22 AM, Amit Langote wrote: > I wrestled with this idea a bit and concluded that we don't have to > postpone *all* of preprocess_targetlist() processing to query_planner, > only the part that adds row mark "junk" Vars, because only those matter > for the problem being solved. To recap, the problem is that delaying > adding inheritance children (and hence their row marks if any) means we > can't add "junk" columns needed to implement row marks, because which ones > to add is not clear until we've seen all the children. > > I propose that we delay the addition of "junk" Vars to query_planner() so > that it doesn't stand in the way of deferring inheritance expansion to > query_planner() too. That means the order of reltarget expressions for > row-marked rels will change, but I assume that's OK. At least it will be > consistent for both non-inherited baserels and inherited ones. > > Attached updated version of the patches with the above proposal > implemented by patch 0002. To summarize, the patches are as follows: > > 0001: make building of "other rels" a separate step that runs after > deconstruct_jointree(), implemented by a new subroutine of query_planner > named add_other_rels_to_query() > > 0002: delay adding "junk" Vars to after add_other_rels_to_query() > > 0003: delay inheritance expansion to add_other_rels_to_query() > > 0004, 0005: adjust inheritance_planner() to account for the fact that > inheritance is now expanded by query_planner(), not subquery_planner() > > 0006: perform partition pruning while inheritance is being expanded, > instead of during set_append_append_rel_size() > > 0007: add a 'live_parts' field to RelOptInfo to store partition indexes > (not RT indexes) of unpruned partitions, which speeds up looping over > part_rels array of the partitioned parent > > 0008: avoid copying PartitionBoundInfo struct for planning > After applying 0004 check-world fails with the attached. CFBot agrees [1]. [1] https://travis-ci.org/postgresql-cfbot/postgresql/builds/505107884 Best regards, Jesper --------------A9864800F19A99C1FB2CE2AB Content-Type: text/plain; charset=UTF-8; name="regression.diff.txt" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="regression.diff.txt" ZGlmZiAtVTMgL2hvbWUvanBlZGVyc2VuL1Bvc3RncmVTUUwvcG9zdGdyZXNxbC9jb250cmli L3Bvc3RncmVzX2Zkdy9leHBlY3RlZC9wb3N0Z3Jlc19mZHcub3V0IC9ob21lL2pwZWRlcnNl bi9Qb3N0Z3JlU1FML3Bvc3RncmVzcWwvY29udHJpYi9wb3N0Z3Jlc19mZHcvcmVzdWx0cy9w b3N0Z3Jlc19mZHcub3V0Ci0tLSAvaG9tZS9qcGVkZXJzZW4vUG9zdGdyZVNRTC9wb3N0Z3Jl c3FsL2NvbnRyaWIvcG9zdGdyZXNfZmR3L2V4cGVjdGVkL3Bvc3RncmVzX2Zkdy5vdXQJMjAx OS0wMy0xMiAwNzo0NjowOC40MzA2OTAyMjkgLTA0MDAKKysrIC9ob21lL2pwZWRlcnNlbi9Q b3N0Z3JlU1FML3Bvc3RncmVzcWwvY29udHJpYi9wb3N0Z3Jlc19mZHcvcmVzdWx0cy9wb3N0 Z3Jlc19mZHcub3V0CTIwMTktMDMtMTIgMDc6NTk6MDEuMTM0Mjg1MTU5IC0wNDAwCkBAIC03 MTkwLDggKzcxOTAsOCBAQAogLS0gQ2hlY2sgVVBEQVRFIHdpdGggaW5oZXJpdGVkIHRhcmdl dCBhbmQgYW4gaW5oZXJpdGVkIHNvdXJjZSB0YWJsZQogZXhwbGFpbiAodmVyYm9zZSwgY29z dHMgb2ZmKQogdXBkYXRlIGJhciBzZXQgZjIgPSBmMiArIDEwMCB3aGVyZSBmMSBpbiAoc2Vs ZWN0IGYxIGZyb20gZm9vKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQogIFVwZGF0ZSBvbiBwdWJsaWMuYmFyCiAgICBVcGRhdGUgb24gcHVibGljLmJh cgogICAgRm9yZWlnbiBVcGRhdGUgb24gcHVibGljLmJhcjIKQEAgLTcyMTQsMjIgKzcyMTQs MjIgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogZm9vMi5m MSwgZm9vMi5jdGlkLCBmb28yLiosIGZvbzIudGFibGVvaWQKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFJlbW90ZSBTUUw6IFNFTEVDVCBmMSwgZjIsIGYzLCBjdGlkIEZS T00gcHVibGljLmxvY3QxCiAgICAtPiAgSGFzaCBKb2luCi0gICAgICAgICBPdXRwdXQ6IGJh cjIuZjEsIChiYXIyLmYyICsgMTAwKSwgYmFyMi5mMywgYmFyMi5jdGlkLCBmb28uY3RpZCwg Zm9vLiosIGZvby50YWJsZW9pZAorICAgICAgICAgT3V0cHV0OiBiYXIyLmYxLCAoYmFyMi5m MiArIDEwMCksIGJhcjIuZjMsIGJhcjIuY3RpZCwgZm9vLmN0aWQsIGZvby4qCiAgICAgICAg ICBJbm5lciBVbmlxdWU6IHRydWUKICAgICAgICAgIEhhc2ggQ29uZDogKGJhcjIuZjEgPSBm b28uZjEpCiAgICAgICAgICAtPiAgRm9yZWlnbiBTY2FuIG9uIHB1YmxpYy5iYXIyCiAgICAg ICAgICAgICAgICBPdXRwdXQ6IGJhcjIuZjEsIGJhcjIuZjIsIGJhcjIuZjMsIGJhcjIuY3Rp ZAogICAgICAgICAgICAgICAgUmVtb3RlIFNRTDogU0VMRUNUIGYxLCBmMiwgZjMsIGN0aWQg RlJPTSBwdWJsaWMubG9jdDIgRk9SIFVQREFURQogICAgICAgICAgLT4gIEhhc2gKLSAgICAg ICAgICAgICAgIE91dHB1dDogZm9vLmYxLCBmb28uY3RpZCwgZm9vLiosIGZvby50YWJsZW9p ZAorICAgICAgICAgICAgICAgT3V0cHV0OiBmb28uZjEsIGZvby5jdGlkLCBmb28uKgogICAg ICAgICAgICAgICAgLT4gIEhhc2hBZ2dyZWdhdGUKLSAgICAgICAgICAgICAgICAgICAgIE91 dHB1dDogZm9vLmYxLCBmb28uY3RpZCwgZm9vLiosIGZvby50YWJsZW9pZAorICAgICAgICAg ICAgICAgICAgICAgT3V0cHV0OiBmb28uZjEsIGZvby5jdGlkLCBmb28uKgogICAgICAgICAg ICAgICAgICAgICAgR3JvdXAgS2V5OiBmb28uZjEKICAgICAgICAgICAgICAgICAgICAgIC0+ ICBBcHBlbmQKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBw dWJsaWMuZm9vCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IGZv by5mMSwgZm9vLmN0aWQsIGZvby4qLCBmb28udGFibGVvaWQKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIE91dHB1dDogZm9vLmYxLCBmb28uY3RpZCwgZm9vLioKICAgICAg ICAgICAgICAgICAgICAgICAgICAgIC0+ICBGb3JlaWduIFNjYW4gb24gcHVibGljLmZvbzIK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogZm9vMi5mMSwgZm9v Mi5jdGlkLCBmb28yLiosIGZvbzIudGFibGVvaWQKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIE91dHB1dDogZm9vMi5mMSwgZm9vMi5jdGlkLCBmb28yLioKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFJlbW90ZSBTUUw6IFNFTEVDVCBmMSwgZjIsIGYz LCBjdGlkIEZST00gcHVibGljLmxvY3QxCiAoMzkgcm93cykKIAo= --------------A9864800F19A99C1FB2CE2AB--