Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1roqSa-003goK-SF for pgsql-hackers@arkaria.postgresql.org; Mon, 25 Mar 2024 19:58:21 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1roqSZ-007Rli-FD for pgsql-hackers@arkaria.postgresql.org; Mon, 25 Mar 2024 19:58:19 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1roqSY-007Rl4-T0 for pgsql-hackers@lists.postgresql.org; Mon, 25 Mar 2024 19:58:19 +0000 Received: from mail-lj1-x22b.google.com ([2a00:1450:4864:20::22b]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1roqST-006O8X-Ck for pgsql-hackers@postgresql.org; Mon, 25 Mar 2024 19:58:16 +0000 Received: by mail-lj1-x22b.google.com with SMTP id 38308e7fff4ca-2d4a901e284so93892451fa.1 for ; Mon, 25 Mar 2024 12:58:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1711396693; x=1712001493; darn=postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=h2TczqIrbxGo0DtQYWTmaVYhOq8QRTqK29ijRFSVCxI=; b=ZLtdlF9zNmSK6SX/Ch0Ie4+iciLf7Ztaa0tXBR6aiwxdFa6o8NzF4bm42dJRU9Kj3v +IRbHZTqLOpwoNYgZJRWgByHjg9dSsNgRLBO1bVxyvsTWy4sdR3O6zZiQgTp93J9mdDe slEOaZaazKDNMycnfiFT/ss80GLelV8/7YlgUYpyVnwqHGPSt6S5OpwMzjrfjPnZtitQ yDOU0ZHy2cnKnzBjJLNhV4EHG8uIejqU+hsgF2hjgEnA5z9+PPOkHadYjUEhu/VKxT72 WvbDQva4218GLb5NrmGH72NqX8fPyS+OGJn34ZB8369KVrxbcoF2kolCcgUtAlq3KSaH fK/Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1711396693; x=1712001493; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=h2TczqIrbxGo0DtQYWTmaVYhOq8QRTqK29ijRFSVCxI=; b=RgkrmJ3wIESvTC9SkZ9h2MsI4fw5u1DuZZZe5jbbv/ftubJ2KbR96B3tZZ9z3HXgiS /J2EGjDS94vrRLZXDA/4C4zvnagNLTb+7bhdbJZUkK1hNPHAsPO4NQ16djxJ0nfg1g5h zfa33Nxbp5rI0yM0sZUxz8/V8Nm1oESlSuzS7pxmKJqpZMr6mvJ8FcSDBOBLaha7HTE3 RvP+NGG3OGsaYjJr6oyGrD7yEYej6jlSl6GN6+6OFngYqWgY2BqHhHURY8lldXuBEYu5 c2gpjxliQ6PRJ/X2bPwSMfv6gmyZZ+XtcIgT7MWKbjQR0jc/e8Zt0g3AmIJ/LqvoqpA9 8yNg== X-Forwarded-Encrypted: i=1; AJvYcCXPlabuf5Yh7LKpTZ7PoAzJsezJoBJjwlFcuCKP9VT2mxgKGRbC6fetUGbJ2y/ob5OtqLP/8l/PjDVqME7WkDfD51pMGFqth4NiHWex X-Gm-Message-State: AOJu0Yzqd/uQHv1EGWuj77+UuTU0cw7lRyQreVRZCdkoIP7WbMmPNXSq 1UfwLDrUwu4fidBkBzY/2miJQuOAjcU4e9ne6VflYeBXECtwtdYhNoF3HmwtYRFlkvtn6Qdkahy NzXA38ROCqhH7M4wYlbsyTbVG3uI= X-Google-Smtp-Source: AGHT+IE2Hs8iaesL0LiEY+qZiC80Q+etrl5ef0pDXO1KXAT3rxYO1pB4UX3n9AkO/Tpwy3CLjdX/KW0Vb09WLs3zEOs= X-Received: by 2002:a05:651c:1501:b0:2d4:707d:8b3c with SMTP id e1-20020a05651c150100b002d4707d8b3cmr8597862ljf.18.1711396692564; Mon, 25 Mar 2024 12:58:12 -0700 (PDT) MIME-Version: 1.0 References: <20230603223824.o7iyochli2dwwi7k@alap3.anarazel.de> <6be6f58815dc0844fbe058edf56b4e735a6efc1c.camel@j-davis.com> In-Reply-To: <6be6f58815dc0844fbe058edf56b4e735a6efc1c.camel@j-davis.com> From: Bharath Rupireddy Date: Tue, 26 Mar 2024 01:28:00 +0530 Message-ID: Subject: Re: New Table Access Methods for Multi and Single Inserts To: Jeff Davis Cc: Masahiko Sawada , PostgreSQL-development , Andres Freund , Dilip Kumar , Luc Vlaming , Justin Pryzby , Michael Paquier , Matthias van de Meent Content-Type: multipart/mixed; boundary="000000000000ee3c070614819712" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000ee3c070614819712 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Sat, Mar 23, 2024 at 5:47=E2=80=AFAM Jeff Davis wrot= e: > > Comments: Thanks for looking into it. > * Do I understand correctly that CMV, RMV, and CTAS experience a > performance benefit, but COPY FROM does not? And is that because COPY > already used table_multi_insert, whereas CMV and RMV did not? Yes, that's right. COPY FROM is already optimized with multi inserts. I now have a feeling that I need to simplify the patches. I'm thinking of dropping the COPY FROM patch using the new multi insert API for the following reasons: 1. We can now remove some of the new APIs (table_multi_insert_slots and table_multi_insert_next_free_slot) that were just invented for COPY FROM. 2. COPY FROM is already optimized with multi inserts, so no real gain is expected with the new multi insert API. 3. As we are inching towards feature freeze, simplifying the patches by having only the necessary things increases the probability of getting this in. 4. The real benefit of this whole new multi insert API is seen if used for the commands CMV, RMV, CTAS. These commands got faster by 62.54%, 68.87%, 74.31% or 2.67, 3.21, 3.89 times respectively. 5. This leaves with really simple APIs. No need for callback stuff for dealing with indexes, triggers etc. as CMV, RMV, CTAS cannot have any of them. The new APIs are more extensible, memory management is taken care of by AM, and with TableModifyState as the structure name and more meaningful API names. The callback for triggers/indexes etc. aren't taken care of as I'm now only focusing on CTAS, CMV, RMV optimizations. Please see the attached v14 patches. -- Bharath Rupireddy PostgreSQL Contributors Team RDS Open Source Databases Amazon Web Services: https://aws.amazon.com --000000000000ee3c070614819712 Content-Type: application/x-patch; name="v14-0001-Introduce-table-modify-access-methods.patch" Content-Disposition: attachment; filename="v14-0001-Introduce-table-modify-access-methods.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lu7c9f2u0 RnJvbSAyZGU4OTcwNWM2YjJkMDMwMjA5ODhkYjBjYzg4NTdhMGJmMTliMzhlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBCaGFyYXRoIFJ1cGlyZWRkeSA8YmhhcmF0aC5ydXBpcmVkZHlm b3Jwb3N0Z3Jlc0BnbWFpbC5jb20+CkRhdGU6IE1vbiwgMjUgTWFyIDIwMjQgMDc6MDk6MjUgKzAw MDAKU3ViamVjdDogW1BBVENIIHYxNCAxLzNdIEludHJvZHVjZSB0YWJsZSBtb2RpZnkgYWNjZXNz IG1ldGhvZHMKCi0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMgICAgICAgICB8 IDE2MyArKysrKysrKysrKysrKysrKysrKysrKwogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVh cGFtX2hhbmRsZXIuYyB8ICAgNiArCiBzcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmggICAgICAg ICAgICAgIHwgIDQ4ICsrKysrKysKIHNyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFtLmggICAgICAg ICAgICAgfCAxMDMgKysrKysrKysrKysrKysKIHNyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5s aXN0ICAgICAgICAgfCAgIDQgKwogNSBmaWxlcyBjaGFuZ2VkLCAzMjQgaW5zZXJ0aW9ucygrKQoK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jIGIvc3JjL2JhY2tl bmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMKaW5kZXggMzRiYzYwZjYyNS4uZDFlZjI0NjRlZiAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMKKysrIGIvc3JjL2JhY2tl bmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMKQEAgLTY0LDYgKzY0LDcgQEAKICNpbmNsdWRlICJzdG9y YWdlL3N0YW5kYnkuaCIKICNpbmNsdWRlICJ1dGlscy9kYXR1bS5oIgogI2luY2x1ZGUgInV0aWxz L2ludmFsLmgiCisjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKICNpbmNsdWRlICJ1dGlscy9y ZWxjYWNoZS5oIgogI2luY2x1ZGUgInV0aWxzL3NuYXBtZ3IuaCIKICNpbmNsdWRlICJ1dGlscy9z cGNjYWNoZS5oIgpAQCAtMjQ0Miw2ICsyNDQzLDE2OCBAQCBoZWFwX211bHRpX2luc2VydChSZWxh dGlvbiByZWxhdGlvbiwgVHVwbGVUYWJsZVNsb3QgKipzbG90cywgaW50IG50dXBsZXMsCiAJcGdz dGF0X2NvdW50X2hlYXBfaW5zZXJ0KHJlbGF0aW9uLCBudHVwbGVzKTsKIH0KIAorLyoKKyAqIElu aXRpYWxpemUgaGVhcCBtb2RpZnkgc3RhdGUuCisgKi8KK1RhYmxlTW9kaWZ5U3RhdGUgKgoraGVh cF9tb2RpZnlfYmVnaW4oVGFibGVNb2RpZnlLaW5kIGtpbmQsIFJlbGF0aW9uIHJlbCwgaW50IGZs YWdzKQoreworCVRhYmxlTW9kaWZ5U3RhdGUgKnN0YXRlOworCU1lbW9yeUNvbnRleHQgY29udGV4 dDsKKwlNZW1vcnlDb250ZXh0IG9sZGNvbnRleHQ7CisKKwljb250ZXh0ID0gQWxsb2NTZXRDb250 ZXh0Q3JlYXRlKEN1cnJlbnRNZW1vcnlDb250ZXh0LAorCQkJCQkJCQkJImhlYXBfbW9kaWZ5IG1l bW9yeSBjb250ZXh0IiwKKwkJCQkJCQkJCUFMTE9DU0VUX0RFRkFVTFRfU0laRVMpOworCisJb2xk Y29udGV4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhjb250ZXh0KTsKKworCXN0YXRlID0gcGFs bG9jMChzaXplb2YoVGFibGVNb2RpZnlTdGF0ZSkpOworCXN0YXRlLT5raW5kID0ga2luZDsKKwlz dGF0ZS0+cmVsID0gcmVsOworCXN0YXRlLT5mbGFncyA9IGZsYWdzOworCXN0YXRlLT5tY3R4ID0g Y29udGV4dDsKKworCWlmIChraW5kID09IFRNX0tJTkRfSU5TRVJUKQorCXsKKwkJSGVhcEluc2Vy dFN0YXRlICppc3RhdGU7CisKKwkJaXN0YXRlID0gKEhlYXBJbnNlcnRTdGF0ZSAqKSBwYWxsb2Mw KHNpemVvZihIZWFwSW5zZXJ0U3RhdGUpKTsKKwkJaXN0YXRlLT5iaXN0YXRlID0gTlVMTDsKKwkJ aXN0YXRlLT5taXN0YXRlID0gTlVMTDsKKwkJc3RhdGUtPmRhdGEgPSBpc3RhdGU7CisKKwkJaWYg KChmbGFncyAmIFRNX0ZMQUdfTVVMVElfSU5TRVJUUykgIT0gMCkKKwkJeworCQkJSGVhcE11bHRp SW5zZXJ0U3RhdGUgKm1pc3RhdGU7CisKKwkJCW1pc3RhdGUgPSAoSGVhcE11bHRpSW5zZXJ0U3Rh dGUgKikgcGFsbG9jMChzaXplb2YoSGVhcE11bHRpSW5zZXJ0U3RhdGUpKTsKKwkJCW1pc3RhdGUt PnNsb3RzID0gKFR1cGxlVGFibGVTbG90ICoqKSBwYWxsb2MwKHNpemVvZihUdXBsZVRhYmxlU2xv dCAqKSAqIEhFQVBfTUFYX0JVRkZFUkVEX1NMT1RTKTsKKwkJCWlzdGF0ZS0+bWlzdGF0ZSA9IG1p c3RhdGU7CisJCX0KKworCQlpZiAoKGZsYWdzICYgVE1fRkxBR19CQVNfQlVMS1dSSVRFKSAhPSAw KQorCQkJaXN0YXRlLT5iaXN0YXRlID0gR2V0QnVsa0luc2VydFN0YXRlKCk7CisJfQorCisJTWVt b3J5Q29udGV4dFN3aXRjaFRvKG9sZGNvbnRleHQpOworCisJcmV0dXJuIHN0YXRlOworfQorCisv KgorICogU3RvcmUgcGFzc2VkLWluIHR1cGxlIGludG8gaW4tbWVtb3J5IGJ1ZmZlcmVkIHNsb3Rz LiBXaGVuIGZ1bGwsIGluc2VydAorICogbXVsdGlwbGUgdHVwbGVzIGZyb20gdGhlIGJ1ZmZlcnMg aW50byBoZWFwLgorICovCit2b2lkCitoZWFwX21vZGlmeV9idWZmZXJfaW5zZXJ0KFRhYmxlTW9k aWZ5U3RhdGUgKnN0YXRlLCBDb21tYW5kSWQgY2lkLAorCQkJCQkJICBpbnQgb3B0aW9ucywgVHVw bGVUYWJsZVNsb3QgKnNsb3QpCit7CisJVHVwbGVUYWJsZVNsb3QgKmRzdHNsb3Q7CisJSGVhcElu c2VydFN0YXRlICppc3RhdGU7CisJSGVhcE11bHRpSW5zZXJ0U3RhdGUgKm1pc3RhdGU7CisJTWVt b3J5Q29udGV4dCBvbGRjb250ZXh0OworCisJQXNzZXJ0KHN0YXRlLT5raW5kID09IFRNX0tJTkRf SU5TRVJUKTsKKwlpc3RhdGUgPSAoSGVhcEluc2VydFN0YXRlICopIHN0YXRlLT5kYXRhOworCUFz c2VydChpc3RhdGUtPm1pc3RhdGUgIT0gTlVMTCk7CisJbWlzdGF0ZSA9IGlzdGF0ZS0+bWlzdGF0 ZTsKKwlBc3NlcnQoaXN0YXRlLT5iaXN0YXRlICE9IE5VTEwpOworCisJb2xkY29udGV4dCA9IE1l bW9yeUNvbnRleHRTd2l0Y2hUbyhzdGF0ZS0+bWN0eCk7CisKKwlkc3RzbG90ID0gbWlzdGF0ZS0+ c2xvdHNbbWlzdGF0ZS0+Y3VyX3Nsb3RzXTsKKwlpZiAoZHN0c2xvdCA9PSBOVUxMKQorCXsKKwkJ LyoKKwkJICogV2UgdXNlIHZpcnR1YWwgdHVwbGUgc2xvdHMgYnVmZmVyZWQgc2xvdHMgZm9yIGxl dmVyYWdpbmcgdGhlCisJCSAqIG9wdGltaXphdGlvbiBpdCBwcm92aWRlcyB0byBtaW5pbWl6ZSBw aHlzaWNhbCBkYXRhIGNvcHlpbmcuIFRoZQorCQkgKiB2aXJ0dWFsIHNsb3QgZ2V0cyBtYXRlcmlh bGl6ZWQgd2hlbiB3ZSBjb3B5ICh2aWEgYmVsb3cKKwkJICogRXhlY0NvcHlTbG90KSB0aGUgdHVw bGVzIGZyb20gdGhlIHNvdXJjZSBzbG90IHdoaWNoIGNhbiBiZSBvZiBhbnkKKwkJICogdHlwZS4g VGhpcyB3YXksIGl0IGlzIGVuc3VyZWQgdGhhdCB0aGUgdHVwbGUgc3RvcmFnZSBkb2Vzbid0IGRl cGVuZAorCQkgKiBvbiBleHRlcm5hbCBtZW1vcnksIGJlY2F1c2UgYWxsIHRoZSBkYXR1bXMgdGhh dCBhcmVuJ3QgcGFzc2VkIGJ5CisJCSAqIHZhbHVlIGFyZSBjb3BpZWQgaW50byB0aGUgc2xvdCdz IG1lbW9yeSBjb250ZXh0LgorCQkgKi8KKwkJZHN0c2xvdCA9IE1ha2VUdXBsZVRhYmxlU2xvdChS ZWxhdGlvbkdldERlc2NyKHN0YXRlLT5yZWwpLAorCQkJCQkJCQkJICZUVFNPcHNWaXJ0dWFsKTsK KwkJbWlzdGF0ZS0+c2xvdHNbbWlzdGF0ZS0+Y3VyX3Nsb3RzXSA9IGRzdHNsb3Q7CisJfQorCisJ RXhlY0NsZWFyVHVwbGUoZHN0c2xvdCk7CisJRXhlY0NvcHlTbG90KGRzdHNsb3QsIHNsb3QpOwor CisJbWlzdGF0ZS0+Y3VyX3Nsb3RzKys7CisKKwkvKgorCSAqIE1lbW9yeSBhbGxvY2F0ZWQgZm9y IHRoZSB3aG9sZSB0dXBsZSBpcyBpbiBzbG90J3MgbWVtb3J5IGNvbnRleHQsIHNvCisJICogdXNl IGl0IGtlZXAgdHJhY2sgb2YgdGhlIHRvdGFsIHNwYWNlIG9jY3VwaWVkIGJ5IGFsbCBidWZmZXJl ZCB0dXBsZXMuCisJICovCisJaWYgKFRUU19TSE9VTERGUkVFKGRzdHNsb3QpKQorCQltaXN0YXRl LT5jdXJfc2l6ZSArPSBNZW1vcnlDb250ZXh0TWVtQWxsb2NhdGVkKGRzdHNsb3QtPnR0c19tY3h0 LCBmYWxzZSk7CisKKwlpZiAobWlzdGF0ZS0+Y3VyX3Nsb3RzID49IEhFQVBfTUFYX0JVRkZFUkVE X1NMT1RTIHx8CisJCW1pc3RhdGUtPmN1cl9zaXplID49IEhFQVBfTUFYX0JVRkZFUkVEX0JZVEVT KQorCQloZWFwX21vZGlmeV9idWZmZXJfZmx1c2goc3RhdGUsIGNpZCwgb3B0aW9ucyk7CisKKwlN ZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY29udGV4dCk7Cit9CisKKy8qCisgKiBJbnNlcnQgbXVs dGlwbGUgdHVwbGVzIGZyb20gaW4tbWVtb3J5IGJ1ZmZlcmVkIHNsb3RzIGludG8gaGVhcC4KKyAq Lwordm9pZAoraGVhcF9tb2RpZnlfYnVmZmVyX2ZsdXNoKFRhYmxlTW9kaWZ5U3RhdGUgKnN0YXRl LCBDb21tYW5kSWQgY2lkLAorCQkJCQkJIGludCBvcHRpb25zKQoreworCUhlYXBJbnNlcnRTdGF0 ZSAqaXN0YXRlOworCUhlYXBNdWx0aUluc2VydFN0YXRlICptaXN0YXRlOworCU1lbW9yeUNvbnRl eHQgb2xkY29udGV4dDsKKworCUFzc2VydChzdGF0ZS0+a2luZCA9PSBUTV9LSU5EX0lOU0VSVCk7 CisJaXN0YXRlID0gKEhlYXBJbnNlcnRTdGF0ZSAqKSBzdGF0ZS0+ZGF0YTsKKwlBc3NlcnQoaXN0 YXRlLT5taXN0YXRlICE9IE5VTEwpOworCW1pc3RhdGUgPSBpc3RhdGUtPm1pc3RhdGU7CisJQXNz ZXJ0KGlzdGF0ZS0+YmlzdGF0ZSAhPSBOVUxMKTsKKworCW9sZGNvbnRleHQgPSBNZW1vcnlDb250 ZXh0U3dpdGNoVG8oc3RhdGUtPm1jdHgpOworCisJaGVhcF9tdWx0aV9pbnNlcnQoc3RhdGUtPnJl bCwgbWlzdGF0ZS0+c2xvdHMsIG1pc3RhdGUtPmN1cl9zbG90cywKKwkJCQkJICBjaWQsIG9wdGlv bnMsIGlzdGF0ZS0+YmlzdGF0ZSk7CisKKwltaXN0YXRlLT5jdXJfc2xvdHMgPSAwOworCW1pc3Rh dGUtPmN1cl9zaXplID0gMDsKKworCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjb250ZXh0KTsK K30KKworLyoKKyAqIENsZWFuIGhlYXAgbW9kaWZ5IHN0YXRlLgorICovCit2b2lkCitoZWFwX21v ZGlmeV9lbmQoVGFibGVNb2RpZnlTdGF0ZSAqc3RhdGUpCit7CisJaWYgKHN0YXRlLT5raW5kID09 IFRNX0tJTkRfSU5TRVJUKQorCXsKKwkJSGVhcEluc2VydFN0YXRlICppc3RhdGUgPSAoSGVhcElu c2VydFN0YXRlICopIHN0YXRlLT5kYXRhOworCisJCWlmIChpc3RhdGUtPm1pc3RhdGUgIT0gTlVM TCkKKwkJeworCQkJSGVhcE11bHRpSW5zZXJ0U3RhdGUgKm1pc3RhdGUgPSBpc3RhdGUtPm1pc3Rh dGU7CisKKwkJCUFzc2VydChtaXN0YXRlLT5jdXJfc2xvdHMgPT0gMCAmJgorCQkJCSAgIG1pc3Rh dGUtPmN1cl9zaXplID09IDApOworCisJCQlmb3IgKGludCBpID0gMDsgaSA8IEhFQVBfTUFYX0JV RkZFUkVEX1NMT1RTICYmIG1pc3RhdGUtPnNsb3RzW2ldICE9IE5VTEw7IGkrKykKKwkJCQlFeGVj RHJvcFNpbmdsZVR1cGxlVGFibGVTbG90KG1pc3RhdGUtPnNsb3RzW2ldKTsKKwkJfQorCisJCWlm IChpc3RhdGUtPmJpc3RhdGUgIT0gTlVMTCkKKwkJCUZyZWVCdWxrSW5zZXJ0U3RhdGUoaXN0YXRl LT5iaXN0YXRlKTsKKwl9CisKKwlNZW1vcnlDb250ZXh0RGVsZXRlKHN0YXRlLT5tY3R4KTsKK30K KwogLyoKICAqCXNpbXBsZV9oZWFwX2luc2VydCAtIGluc2VydCBhIHR1cGxlCiAgKgpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYyBiL3NyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMKaW5kZXggMmI3YzcwMjY0Mi4uNDQzNzQy NWRlOSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIu YworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jCkBAIC0yNTY0 LDYgKzI1NjQsMTIgQEAgc3RhdGljIGNvbnN0IFRhYmxlQW1Sb3V0aW5lIGhlYXBhbV9tZXRob2Rz ID0gewogCS50dXBsZV9pbnNlcnRfc3BlY3VsYXRpdmUgPSBoZWFwYW1fdHVwbGVfaW5zZXJ0X3Nw ZWN1bGF0aXZlLAogCS50dXBsZV9jb21wbGV0ZV9zcGVjdWxhdGl2ZSA9IGhlYXBhbV90dXBsZV9j b21wbGV0ZV9zcGVjdWxhdGl2ZSwKIAkubXVsdGlfaW5zZXJ0ID0gaGVhcF9tdWx0aV9pbnNlcnQs CisKKwkudHVwbGVfbW9kaWZ5X2JlZ2luID0gaGVhcF9tb2RpZnlfYmVnaW4sCisJLnR1cGxlX21v ZGlmeV9idWZmZXJfaW5zZXJ0ID0gaGVhcF9tb2RpZnlfYnVmZmVyX2luc2VydCwKKwkudHVwbGVf bW9kaWZ5X2J1ZmZlcl9mbHVzaCA9IGhlYXBfbW9kaWZ5X2J1ZmZlcl9mbHVzaCwKKwkudHVwbGVf bW9kaWZ5X2VuZCA9IGhlYXBfbW9kaWZ5X2VuZCwKKwogCS50dXBsZV9kZWxldGUgPSBoZWFwYW1f dHVwbGVfZGVsZXRlLAogCS50dXBsZV91cGRhdGUgPSBoZWFwYW1fdHVwbGVfdXBkYXRlLAogCS50 dXBsZV9sb2NrID0gaGVhcGFtX3R1cGxlX2xvY2ssCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9h Y2Nlc3MvaGVhcGFtLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmgKaW5kZXggNGIxMzNm Njg1OS4uMmI1MjY1NTBkZiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5o CisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaApAQCAtMjI1LDYgKzIyNSwzOCBAQCBo dHN2X2dldF92YWxpZF9zdGF0dXMoaW50IHN0YXR1cykKIAlyZXR1cm4gKEhUU1ZfUmVzdWx0KSBz dGF0dXM7CiB9CiAKKy8qCisgKiBNYXhpbXVtIG51bWJlciBvZiBzbG90cyB0aGF0IG11bHRpLWlu c2VydCBidWZmZXJzIGNhbiBob2xkLgorICoKKyAqIENhdXRpb246IERvbid0IG1ha2UgdGhpcyB0 b28gYmlnLCBhcyB3ZSBjb3VsZCBlbmQgdXAgd2l0aCB0aGlzIG1hbnkgdHVwbGVzCisgKiBzdG9y ZWQgaW4gbXVsdGkgaW5zZXJ0IGJ1ZmZlci4gRm9yIGluc3RhbmNlLCBpbmNyZWFzaW5nIHRoaXMg Y2FuIGNhdXNlCisgKiBxdWFkcmF0aWMgZ3Jvd3RoIGluIG1lbW9yeSByZXF1aXJlbWVudHMgZHVy aW5nIGNvcGllcyBpbnRvIHBhcnRpdGlvbmVkCisgKiB0YWJsZXMgd2l0aCBhIGxhcmdlIG51bWJl ciBvZiBwYXJ0aXRpb25zLgorICovCisjZGVmaW5lIEhFQVBfTUFYX0JVRkZFUkVEX1NMT1RTCQkx MDAwCisKKy8qIE1heGltdW0gc2l6ZSBvZiBhbGwgdHVwbGVzIHRoYXQgbXVsdGktaW5zZXJ0IGJ1 ZmZlcnMgY2FuIGhvbGQgKi8KKyNkZWZpbmUgSEVBUF9NQVhfQlVGRkVSRURfQllURVMJCTY1NTM1 CisKK3R5cGVkZWYgc3RydWN0IEhlYXBNdWx0aUluc2VydFN0YXRlCit7CisJLyogQXJyYXkgb2Yg YnVmZmVyZWQgc2xvdHMgKi8KKwlUdXBsZVRhYmxlU2xvdCAqKnNsb3RzOworCisJLyogTnVtYmVy IG9mIGJ1ZmZlcmVkIHNsb3RzIGN1cnJlbnRseSBoZWxkICovCisJaW50CQkJY3VyX3Nsb3RzOwor CisJLyogQXBwcm94aW1hdGUgc2l6ZSBvZiBhbGwgdHVwbGVzIGN1cnJlbnRseSBoZWxkIGluIGJ1 ZmZlcmVkIHNsb3RzICovCisJU2l6ZQkJY3VyX3NpemU7Cit9IEhlYXBNdWx0aUluc2VydFN0YXRl OworCit0eXBlZGVmIHN0cnVjdCBIZWFwSW5zZXJ0U3RhdGUKK3sKKwlzdHJ1Y3QgQnVsa0luc2Vy dFN0YXRlRGF0YSAqYmlzdGF0ZTsKKwlIZWFwTXVsdGlJbnNlcnRTdGF0ZSAqbWlzdGF0ZTsKK30g SGVhcEluc2VydFN0YXRlOworCisKIC8qIC0tLS0tLS0tLS0tLS0tLS0KICAqCQlmdW5jdGlvbiBw cm90b3R5cGVzIGZvciBoZWFwIGFjY2VzcyBtZXRob2QKICAqCkBAIC0yNzUsNiArMzA3LDIyIEBA IGV4dGVybiB2b2lkIGhlYXBfaW5zZXJ0KFJlbGF0aW9uIHJlbGF0aW9uLCBIZWFwVHVwbGUgdHVw LCBDb21tYW5kSWQgY2lkLAogZXh0ZXJuIHZvaWQgaGVhcF9tdWx0aV9pbnNlcnQoUmVsYXRpb24g cmVsYXRpb24sIHN0cnVjdCBUdXBsZVRhYmxlU2xvdCAqKnNsb3RzLAogCQkJCQkJCSAgaW50IG50 dXBsZXMsIENvbW1hbmRJZCBjaWQsIGludCBvcHRpb25zLAogCQkJCQkJCSAgQnVsa0luc2VydFN0 YXRlIGJpc3RhdGUpOworCitleHRlcm4gVGFibGVNb2RpZnlTdGF0ZSAqaGVhcF9tb2RpZnlfYmVn aW4oVGFibGVNb2RpZnlLaW5kIGtpbmQsCisJCQkJCQkJCQkJICAgUmVsYXRpb24gcmVsLAorCQkJ CQkJCQkJCSAgIGludCBmbGFncyk7CisKK2V4dGVybiB2b2lkIGhlYXBfbW9kaWZ5X2J1ZmZlcl9p bnNlcnQoVGFibGVNb2RpZnlTdGF0ZSAqc3RhdGUsCisJCQkJCQkJCQkgIENvbW1hbmRJZCBjaWQs CisJCQkJCQkJCQkgIGludCBvcHRpb25zLAorCQkJCQkJCQkJICBUdXBsZVRhYmxlU2xvdCAqc2xv dCk7CisKK2V4dGVybiB2b2lkIGhlYXBfbW9kaWZ5X2J1ZmZlcl9mbHVzaChUYWJsZU1vZGlmeVN0 YXRlICpzdGF0ZSwKKwkJCQkJCQkJCSBDb21tYW5kSWQgY2lkLAorCQkJCQkJCQkJIGludCBvcHRp b25zKTsKKworZXh0ZXJuIHZvaWQgaGVhcF9tb2RpZnlfZW5kKFRhYmxlTW9kaWZ5U3RhdGUgKnN0 YXRlKTsKKwogZXh0ZXJuIFRNX1Jlc3VsdCBoZWFwX2RlbGV0ZShSZWxhdGlvbiByZWxhdGlvbiwg SXRlbVBvaW50ZXIgdGlkLAogCQkJCQkJCSBDb21tYW5kSWQgY2lkLCBTbmFwc2hvdCBjcm9zc2No ZWNrLCBib29sIHdhaXQsCiAJCQkJCQkJIHN0cnVjdCBUTV9GYWlsdXJlRGF0YSAqdG1mZCwgYm9v bCBjaGFuZ2luZ1BhcnQpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0u aCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFtLmgKaW5kZXggNjU4MzRjYWViMS4uM2ZjNmQ5 MzU1NSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0uaAorKysgYi9zcmMv aW5jbHVkZS9hY2Nlc3MvdGFibGVhbS5oCkBAIC0yNDcsNiArMjQ3LDMzIEBAIHR5cGVkZWYgc3Ry dWN0IFRNX0luZGV4RGVsZXRlT3AKIAlUTV9JbmRleFN0YXR1cyAqc3RhdHVzOwogfSBUTV9JbmRl eERlbGV0ZU9wOwogCisvKiBIb2xkcyB0YWJsZSBtb2RpZnkga2luZCAqLwordHlwZWRlZiBlbnVt IFRhYmxlTW9kaWZ5S2luZAoreworCVRNX0tJTkRfTk9ORSwKKwlUTV9LSU5EX0lOU0VSVAorfSBU YWJsZU1vZGlmeUtpbmQ7CisKKy8qIFRhYmxlIG1vZGlmeSBmbGFncyAqLworCisvKiBVc2UgbXVs dGkgaW5zZXJ0cywgaS5lLiBidWZmZXIgbXVsdGlwbGUgdHVwbGVzIGFuZCBpbnNlcnQgdGhlbSBh dCBvbmNlICovCisjZGVmaW5lIFRNX0ZMQUdfTVVMVElfSU5TRVJUUwkweDAwMDAwMQorCisvKiBV c2UgQkFTX0JVTEtXUklURSBidWZmZXIgYWNjZXNzIHN0cmF0ZWd5ICovCisjZGVmaW5lIFRNX0ZM QUdfQkFTX0JVTEtXUklURQkweDAwMDAwMgorCisvKiBIb2xkcyB0YWJsZSBtb2RpZnkgc3RhdGUg Ki8KK3R5cGVkZWYgc3RydWN0IFRhYmxlTW9kaWZ5U3RhdGUKK3sKKwlUYWJsZU1vZGlmeUtpbmQg a2luZDsKKwlSZWxhdGlvbglyZWw7CisJaW50CQkJZmxhZ3M7CisJTWVtb3J5Q29udGV4dCBtY3R4 OworCisJLyogVGFibGUgQU0gc3BlY2lmaWMgZGF0YSBzdGFydHMgaGVyZSAqLworCXZvaWQJICAg KmRhdGE7Cit9IFRhYmxlTW9kaWZ5U3RhdGU7CisKIC8qICJvcHRpb25zIiBmbGFnIGJpdHMgZm9y IHRhYmxlX3R1cGxlX2luc2VydCAqLwogLyogVEFCTEVfSU5TRVJUX1NLSVBfV0FMIHdhcyAweDAw MDE7IFJlbGF0aW9uTmVlZHNXQUwoKSBub3cgZ292ZXJucyAqLwogI2RlZmluZSBUQUJMRV9JTlNF UlRfU0tJUF9GU00JCTB4MDAwMgpAQCAtNTIyLDYgKzU0OSwyMSBAQCB0eXBlZGVmIHN0cnVjdCBU YWJsZUFtUm91dGluZQogCXZvaWQJCSgqbXVsdGlfaW5zZXJ0KSAoUmVsYXRpb24gcmVsLCBUdXBs ZVRhYmxlU2xvdCAqKnNsb3RzLCBpbnQgbnNsb3RzLAogCQkJCQkJCQkgQ29tbWFuZElkIGNpZCwg aW50IG9wdGlvbnMsIHN0cnVjdCBCdWxrSW5zZXJ0U3RhdGVEYXRhICpiaXN0YXRlKTsKIAorCVRh YmxlTW9kaWZ5U3RhdGUgKigqdHVwbGVfbW9kaWZ5X2JlZ2luKSAoVGFibGVNb2RpZnlLaW5kIGtp bmQsCisJCQkJCQkJCQkJCSBSZWxhdGlvbiByZWwsCisJCQkJCQkJCQkJCSBpbnQgZmxhZ3MpOwor CisJdm9pZAkJKCp0dXBsZV9tb2RpZnlfYnVmZmVyX2luc2VydCkgKFRhYmxlTW9kaWZ5U3RhdGUg KnN0YXRlLAorCQkJCQkJCQkJCQkgICBDb21tYW5kSWQgY2lkLAorCQkJCQkJCQkJCQkgICBpbnQg b3B0aW9ucywKKwkJCQkJCQkJCQkJICAgVHVwbGVUYWJsZVNsb3QgKnNsb3QpOworCisJdm9pZAkJ KCp0dXBsZV9tb2RpZnlfYnVmZmVyX2ZsdXNoKSAoVGFibGVNb2RpZnlTdGF0ZSAqc3RhdGUsCisJ CQkJCQkJCQkJCSAgQ29tbWFuZElkIGNpZCwKKwkJCQkJCQkJCQkJICBpbnQgb3B0aW9ucyk7CisK Kwl2b2lkCQkoKnR1cGxlX21vZGlmeV9lbmQpIChUYWJsZU1vZGlmeVN0YXRlICpzdGF0ZSk7CisK IAkvKiBzZWUgdGFibGVfdHVwbGVfZGVsZXRlKCkgZm9yIHJlZmVyZW5jZSBhYm91dCBwYXJhbWV0 ZXJzICovCiAJVE1fUmVzdWx0CSgqdHVwbGVfZGVsZXRlKSAoUmVsYXRpb24gcmVsLAogCQkJCQkJ CQkgSXRlbVBvaW50ZXIgdGlkLApAQCAtMTQ2Miw2ICsxNTA0LDY3IEBAIHRhYmxlX211bHRpX2lu c2VydChSZWxhdGlvbiByZWwsIFR1cGxlVGFibGVTbG90ICoqc2xvdHMsIGludCBuc2xvdHMsCiAJ CQkJCQkJCSAgY2lkLCBvcHRpb25zLCBiaXN0YXRlKTsKIH0KIAorc3RhdGljIGlubGluZSBUYWJs ZU1vZGlmeVN0YXRlICoKK3RhYmxlX21vZGlmeV9iZWdpbihUYWJsZU1vZGlmeUtpbmQga2luZCwg UmVsYXRpb24gcmVsLCBpbnQgZmxhZ3MpCit7CisJaWYgKHJlbC0+cmRfdGFibGVhbSAmJiByZWwt PnJkX3RhYmxlYW0tPnR1cGxlX21vZGlmeV9iZWdpbikKKwl7CisJCXJldHVybiByZWwtPnJkX3Rh YmxlYW0tPnR1cGxlX21vZGlmeV9iZWdpbihraW5kLCByZWwsIGZsYWdzKTsKKwl9CisJZWxzZQor CXsKKwkJZWxvZyhFUlJPUiwgInRhYmxlX21vZGlmeV9iZWdpbiBhY2Nlc3MgbWV0aG9kIGlzIG5v dCBpbXBsZW1lbnRlZCBmb3IgcmVsYXRpb24gXCIlc1wiIiwKKwkJCSBSZWxhdGlvbkdldFJlbGF0 aW9uTmFtZShyZWwpKTsKKwkJcmV0dXJuIE5VTEw7CQkJLyoga2VlcCBjb21waWxlciBxdWlldCAq LworCX0KK30KKworc3RhdGljIGlubGluZSB2b2lkCit0YWJsZV9tb2RpZnlfYnVmZmVyX2luc2Vy dChUYWJsZU1vZGlmeVN0YXRlICpzdGF0ZSwgQ29tbWFuZElkIGNpZCwKKwkJCQkJCSAgIGludCBv cHRpb25zLCBUdXBsZVRhYmxlU2xvdCAqc2xvdCkKK3sKKwlpZiAoc3RhdGUtPnJlbC0+cmRfdGFi bGVhbSAmJgorCQlzdGF0ZS0+cmVsLT5yZF90YWJsZWFtLT50dXBsZV9tb2RpZnlfYnVmZmVyX2lu c2VydCkKKwl7CisJCXN0YXRlLT5yZWwtPnJkX3RhYmxlYW0tPnR1cGxlX21vZGlmeV9idWZmZXJf aW5zZXJ0KHN0YXRlLAorCQkJCQkJCQkJCQkJCQkgICBjaWQsCisJCQkJCQkJCQkJCQkJCSAgIG9w dGlvbnMsCisJCQkJCQkJCQkJCQkJCSAgIHNsb3QpOworCX0KKwllbHNlCisJCWVsb2coRVJST1Is ICJ0YWJsZV9tb2RpZnlfYnVmZmVyX2luc2VydCBhY2Nlc3MgbWV0aG9kIGlzIG5vdCBpbXBsZW1l bnRlZCBmb3IgcmVsYXRpb24gXCIlc1wiIiwKKwkJCSBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShz dGF0ZS0+cmVsKSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZAordGFibGVfbW9kaWZ5X2J1ZmZl cl9mbHVzaChUYWJsZU1vZGlmeVN0YXRlICpzdGF0ZSwgQ29tbWFuZElkIGNpZCwKKwkJCQkJCSAg aW50IG9wdGlvbnMpCit7CisJaWYgKHN0YXRlLT5yZWwtPnJkX3RhYmxlYW0gJiYKKwkJc3RhdGUt PnJlbC0+cmRfdGFibGVhbS0+dHVwbGVfbW9kaWZ5X2J1ZmZlcl9mbHVzaCkKKwl7CisJCXN0YXRl LT5yZWwtPnJkX3RhYmxlYW0tPnR1cGxlX21vZGlmeV9idWZmZXJfZmx1c2goc3RhdGUsCisJCQkJ CQkJCQkJCQkJCSAgY2lkLAorCQkJCQkJCQkJCQkJCQkgIG9wdGlvbnMpOworCX0KKwllbHNlCisJ CWVsb2coRVJST1IsICJ0YWJsZV9tb2RpZnlfYnVmZmVyX2ZsdXNoIGFjY2VzcyBtZXRob2QgaXMg bm90IGltcGxlbWVudGVkIGZvciByZWxhdGlvbiBcIiVzXCIiLAorCQkJIFJlbGF0aW9uR2V0UmVs YXRpb25OYW1lKHN0YXRlLT5yZWwpKTsKK30KKworc3RhdGljIGlubGluZSB2b2lkCit0YWJsZV9t b2RpZnlfZW5kKFRhYmxlTW9kaWZ5U3RhdGUgKnN0YXRlKQoreworCWlmIChzdGF0ZS0+cmVsLT5y ZF90YWJsZWFtICYmCisJCXN0YXRlLT5yZWwtPnJkX3RhYmxlYW0tPnR1cGxlX21vZGlmeV9lbmQp CisJeworCQlzdGF0ZS0+cmVsLT5yZF90YWJsZWFtLT50dXBsZV9tb2RpZnlfZW5kKHN0YXRlKTsK Kwl9CisJZWxzZQorCQllbG9nKEVSUk9SLCAidGFibGVfbW9kaWZ5X2VuZCBhY2Nlc3MgbWV0aG9k IGlzIG5vdCBpbXBsZW1lbnRlZCBmb3IgcmVsYXRpb24gXCIlc1wiIiwKKwkJCSBSZWxhdGlvbkdl dFJlbGF0aW9uTmFtZShzdGF0ZS0+cmVsKSk7Cit9CisKIC8qCiAgKiBEZWxldGUgYSB0dXBsZS4K ICAqCmRpZmYgLS1naXQgYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCBiL3NyYy90 b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CmluZGV4IGUyYTA1MjVkZDQuLjgzOTZlYzRmZjAg MTAwNjQ0Ci0tLSBhL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CisrKyBiL3NyYy90 b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CkBAIC0xMTIyLDYgKzExMjIsOCBAQCBIZWFkbGlu ZUpzb25TdGF0ZQogSGVhZGxpbmVQYXJzZWRUZXh0CiBIZWFkbGluZVdvcmRFbnRyeQogSGVhcENo ZWNrQ29udGV4dAorSGVhcEluc2VydFN0YXRlCitIZWFwTXVsdGlJbnNlcnRTdGF0ZQogSGVhcFBh Z2VGcmVlemUKIEhlYXBTY2FuRGVzYwogSGVhcFR1cGxlCkBAIC0yODA4LDYgKzI4MTAsOCBAQCBU YWJsZUZ1bmNTY2FuCiBUYWJsZUZ1bmNTY2FuU3RhdGUKIFRhYmxlSW5mbwogVGFibGVMaWtlQ2xh dXNlCitUYWJsZU1vZGlmeUtpbmQKK1RhYmxlTW9kaWZ5U3RhdGUKIFRhYmxlU2FtcGxlQ2xhdXNl CiBUYWJsZVNjYW5EZXNjCiBUYWJsZVNjYW5EZXNjRGF0YQotLSAKMi4zNC4xCgo= --000000000000ee3c070614819712 Content-Type: application/x-patch; name="v14-0002-Optimize-CREATE-TABLE-AS-with-multi-inserts.patch" Content-Disposition: attachment; filename="v14-0002-Optimize-CREATE-TABLE-AS-with-multi-inserts.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lu7c9h871 RnJvbSA4M2Q0YjI4YzQ0YWEwMmIxYTZhYzQxNDk5ODEyOGIxNGU3ZmI2MTkzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBCaGFyYXRoIFJ1cGlyZWRkeSA8YmhhcmF0aC5ydXBpcmVkZHlm b3Jwb3N0Z3Jlc0BnbWFpbC5jb20+CkRhdGU6IE1vbiwgMjUgTWFyIDIwMjQgMDc6MDk6NDcgKzAw MDAKU3ViamVjdDogW1BBVENIIHYxNCAyLzNdIE9wdGltaXplIENSRUFURSBUQUJMRSBBUyB3aXRo IG11bHRpIGluc2VydHMKCi0tLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvY3JlYXRlYXMuYyB8IDIz ICsrKysrKysrKysrKystLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgMTMgaW5zZXJ0aW9ucygr KSwgMTAgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY3Jl YXRlYXMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NyZWF0ZWFzLmMKaW5kZXggNjIwNTBmNGRj NS4uZTExYWYxNjUyMyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY3JlYXRlYXMu YworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9jcmVhdGVhcy5jCkBAIC01NSw3ICs1NSw3IEBA IHR5cGVkZWYgc3RydWN0CiAJT2JqZWN0QWRkcmVzcyByZWxhZGRyOwkJLyogYWRkcmVzcyBvZiBy ZWwsIGZvciBFeGVjQ3JlYXRlVGFibGVBcyAqLwogCUNvbW1hbmRJZAlvdXRwdXRfY2lkOwkJLyog Y21pbiB0byBpbnNlcnQgaW4gb3V0cHV0IHR1cGxlcyAqLwogCWludAkJCXRpX29wdGlvbnM7CQkv KiB0YWJsZV90dXBsZV9pbnNlcnQgcGVyZm9ybWFuY2Ugb3B0aW9ucyAqLwotCUJ1bGtJbnNlcnRT dGF0ZSBiaXN0YXRlOwkvKiBidWxrIGluc2VydCBzdGF0ZSAqLworCVRhYmxlTW9kaWZ5U3RhdGUg Km1zdGF0ZTsJLyogdGFibGUgaW5zZXJ0IHN0YXRlICovCiB9IERSX2ludG9yZWw7CiAKIC8qIHV0 aWxpdHkgZnVuY3Rpb25zIGZvciBDVEFTIGRlZmluaXRpb24gY3JlYXRpb24gKi8KQEAgLTU2MCw5 ICs1NjAsMTIgQEAgaW50b3JlbF9zdGFydHVwKERlc3RSZWNlaXZlciAqc2VsZiwgaW50IG9wZXJh dGlvbiwgVHVwbGVEZXNjIHR5cGVpbmZvKQogCSAqIGJ1bGsgaW5zZXJ0cyBhcyB0aGVyZSBhcmUg bm8gdHVwbGVzIHRvIGluc2VydC4KIAkgKi8KIAlpZiAoIWludG8tPnNraXBEYXRhKQotCQlteVN0 YXRlLT5iaXN0YXRlID0gR2V0QnVsa0luc2VydFN0YXRlKCk7CisJCW15U3RhdGUtPm1zdGF0ZSA9 IHRhYmxlX21vZGlmeV9iZWdpbihUTV9LSU5EX0lOU0VSVCwKKwkJCQkJCQkJCQkJIGludG9SZWxh dGlvbkRlc2MsCisJCQkJCQkJCQkJCSBUTV9GTEFHX01VTFRJX0lOU0VSVFMgfAorCQkJCQkJCQkJ CQkgVE1fRkxBR19CQVNfQlVMS1dSSVRFKTsKIAllbHNlCi0JCW15U3RhdGUtPmJpc3RhdGUgPSBO VUxMOworCQlteVN0YXRlLT5tc3RhdGUgPSBOVUxMOwogCiAJLyoKIAkgKiBWYWxpZCBzbWdyX3Rh cmdibG9jayBpbXBsaWVzIHNvbWV0aGluZyBhbHJlYWR5IHdyb3RlIHRvIHRoZSByZWxhdGlvbi4K QEAgLTU5MCwxMSArNTkzLDEwIEBAIGludG9yZWxfcmVjZWl2ZShUdXBsZVRhYmxlU2xvdCAqc2xv dCwgRGVzdFJlY2VpdmVyICpzZWxmKQogCQkgKiB3b3VsZCBub3QgYmUgY2hlYXAgZWl0aGVyLiBU aGlzIGFsc28gZG9lc24ndCBhbGxvdyBhY2Nlc3NpbmcgcGVyLUFNCiAJCSAqIGRhdGEgKHNheSBh IHR1cGxlJ3MgeG1pbiksIGJ1dCBzaW5jZSB3ZSBkb24ndCBkbyB0aGF0IGhlcmUuLi4KIAkJICov Ci0JCXRhYmxlX3R1cGxlX2luc2VydChteVN0YXRlLT5yZWwsCi0JCQkJCQkgICBzbG90LAotCQkJ CQkJICAgbXlTdGF0ZS0+b3V0cHV0X2NpZCwKLQkJCQkJCSAgIG15U3RhdGUtPnRpX29wdGlvbnMs Ci0JCQkJCQkgICBteVN0YXRlLT5iaXN0YXRlKTsKKwkJdGFibGVfbW9kaWZ5X2J1ZmZlcl9pbnNl cnQobXlTdGF0ZS0+bXN0YXRlLAorCQkJCQkJCQkgICBteVN0YXRlLT5vdXRwdXRfY2lkLAorCQkJ CQkJCQkgICBteVN0YXRlLT50aV9vcHRpb25zLAorCQkJCQkJCQkgICBzbG90KTsKIAl9CiAKIAkv KiBXZSBrbm93IHRoaXMgaXMgYSBuZXdseSBjcmVhdGVkIHJlbGF0aW9uLCBzbyB0aGVyZSBhcmUg bm8gaW5kZXhlcyAqLwpAQCAtNjEzLDggKzYxNSw5IEBAIGludG9yZWxfc2h1dGRvd24oRGVzdFJl Y2VpdmVyICpzZWxmKQogCiAJaWYgKCFpbnRvLT5za2lwRGF0YSkKIAl7Ci0JCUZyZWVCdWxrSW5z ZXJ0U3RhdGUobXlTdGF0ZS0+YmlzdGF0ZSk7Ci0JCXRhYmxlX2ZpbmlzaF9idWxrX2luc2VydCht eVN0YXRlLT5yZWwsIG15U3RhdGUtPnRpX29wdGlvbnMpOworCQl0YWJsZV9tb2RpZnlfYnVmZmVy X2ZsdXNoKG15U3RhdGUtPm1zdGF0ZSwgbXlTdGF0ZS0+b3V0cHV0X2NpZCwKKwkJCQkJCQkJICBt eVN0YXRlLT50aV9vcHRpb25zKTsKKwkJdGFibGVfbW9kaWZ5X2VuZChteVN0YXRlLT5tc3RhdGUp OwogCX0KIAogCS8qIGNsb3NlIHJlbCwgYnV0IGtlZXAgbG9jayB1bnRpbCBjb21taXQgKi8KLS0g CjIuMzQuMQoK --000000000000ee3c070614819712 Content-Type: application/x-patch; name="v14-0003-Optimize-REFRESH-MATERIALIZED-VIEW-with-multi-in.patch" Content-Disposition: attachment; filename="v14-0003-Optimize-REFRESH-MATERIALIZED-VIEW-with-multi-in.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lu7c9jkh2 RnJvbSAwNTFiNDAxNTk0MjQ3NWI4NGIyMDQ4NDZiMDA5NDFkYzc1Mjk5NWQzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBCaGFyYXRoIFJ1cGlyZWRkeSA8YmhhcmF0aC5ydXBpcmVkZHlm b3Jwb3N0Z3Jlc0BnbWFpbC5jb20+CkRhdGU6IE1vbiwgMjUgTWFyIDIwMjQgMDc6MTA6MDcgKzAw MDAKU3ViamVjdDogW1BBVENIIHYxNCAzLzNdIE9wdGltaXplIFJFRlJFU0ggTUFURVJJQUxJWkVE IFZJRVcgd2l0aCBtdWx0aSBpbnNlcnRzCgotLS0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL21hdHZp ZXcuYyB8IDIzICsrKysrKysrKysrKy0tLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgMTIgaW5z ZXJ0aW9ucygrKSwgMTEgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29t bWFuZHMvbWF0dmlldy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvbWF0dmlldy5jCmluZGV4IDZk MDliNzU1NTYuLmNhYmM1YmM4MGIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL21h dHZpZXcuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9tYXR2aWV3LmMKQEAgLTUwLDcgKzUw LDcgQEAgdHlwZWRlZiBzdHJ1Y3QKIAlSZWxhdGlvbgl0cmFuc2llbnRyZWw7CS8qIHJlbGF0aW9u IHRvIHdyaXRlIHRvICovCiAJQ29tbWFuZElkCW91dHB1dF9jaWQ7CQkvKiBjbWluIHRvIGluc2Vy dCBpbiBvdXRwdXQgdHVwbGVzICovCiAJaW50CQkJdGlfb3B0aW9uczsJCS8qIHRhYmxlX3R1cGxl X2luc2VydCBwZXJmb3JtYW5jZSBvcHRpb25zICovCi0JQnVsa0luc2VydFN0YXRlIGJpc3RhdGU7 CS8qIGJ1bGsgaW5zZXJ0IHN0YXRlICovCisJVGFibGVNb2RpZnlTdGF0ZSAqbXN0YXRlOwkvKiB0 YWJsZSBpbnNlcnQgc3RhdGUgKi8KIH0gRFJfdHJhbnNpZW50cmVsOwogCiBzdGF0aWMgaW50CW1h dHZpZXdfbWFpbnRlbmFuY2VfZGVwdGggPSAwOwpAQCAtNDYwLDcgKzQ2MCwxMCBAQCB0cmFuc2ll bnRyZWxfc3RhcnR1cChEZXN0UmVjZWl2ZXIgKnNlbGYsIGludCBvcGVyYXRpb24sIFR1cGxlRGVz YyB0eXBlaW5mbykKIAlteVN0YXRlLT50cmFuc2llbnRyZWwgPSB0cmFuc2llbnRyZWw7CiAJbXlT dGF0ZS0+b3V0cHV0X2NpZCA9IEdldEN1cnJlbnRDb21tYW5kSWQodHJ1ZSk7CiAJbXlTdGF0ZS0+ dGlfb3B0aW9ucyA9IFRBQkxFX0lOU0VSVF9TS0lQX0ZTTSB8IFRBQkxFX0lOU0VSVF9GUk9aRU47 Ci0JbXlTdGF0ZS0+YmlzdGF0ZSA9IEdldEJ1bGtJbnNlcnRTdGF0ZSgpOworCW15U3RhdGUtPm1z dGF0ZSA9IHRhYmxlX21vZGlmeV9iZWdpbihUTV9LSU5EX0lOU0VSVCwKKwkJCQkJCQkJCQkgdHJh bnNpZW50cmVsLAorCQkJCQkJCQkJCSBUTV9GTEFHX01VTFRJX0lOU0VSVFMgfAorCQkJCQkJCQkJ CSBUTV9GTEFHX0JBU19CVUxLV1JJVEUpOwogCiAJLyoKIAkgKiBWYWxpZCBzbWdyX3RhcmdibG9j ayBpbXBsaWVzIHNvbWV0aGluZyBhbHJlYWR5IHdyb3RlIHRvIHRoZSByZWxhdGlvbi4KQEAgLTQ4 NSwxMiArNDg4LDEwIEBAIHRyYW5zaWVudHJlbF9yZWNlaXZlKFR1cGxlVGFibGVTbG90ICpzbG90 LCBEZXN0UmVjZWl2ZXIgKnNlbGYpCiAJICogY2hlYXAgZWl0aGVyLiBUaGlzIGFsc28gZG9lc24n dCBhbGxvdyBhY2Nlc3NpbmcgcGVyLUFNIGRhdGEgKHNheSBhCiAJICogdHVwbGUncyB4bWluKSwg YnV0IHNpbmNlIHdlIGRvbid0IGRvIHRoYXQgaGVyZS4uLgogCSAqLwotCi0JdGFibGVfdHVwbGVf aW5zZXJ0KG15U3RhdGUtPnRyYW5zaWVudHJlbCwKLQkJCQkJICAgc2xvdCwKLQkJCQkJICAgbXlT dGF0ZS0+b3V0cHV0X2NpZCwKLQkJCQkJICAgbXlTdGF0ZS0+dGlfb3B0aW9ucywKLQkJCQkJICAg bXlTdGF0ZS0+YmlzdGF0ZSk7CisJdGFibGVfbW9kaWZ5X2J1ZmZlcl9pbnNlcnQobXlTdGF0ZS0+ bXN0YXRlLAorCQkJCQkJCSAgIG15U3RhdGUtPm91dHB1dF9jaWQsCisJCQkJCQkJICAgbXlTdGF0 ZS0+dGlfb3B0aW9ucywKKwkJCQkJCQkgICBzbG90KTsKIAogCS8qIFdlIGtub3cgdGhpcyBpcyBh IG5ld2x5IGNyZWF0ZWQgcmVsYXRpb24sIHNvIHRoZXJlIGFyZSBubyBpbmRleGVzICovCiAKQEAg LTUwNSw5ICs1MDYsOSBAQCB0cmFuc2llbnRyZWxfc2h1dGRvd24oRGVzdFJlY2VpdmVyICpzZWxm KQogewogCURSX3RyYW5zaWVudHJlbCAqbXlTdGF0ZSA9IChEUl90cmFuc2llbnRyZWwgKikgc2Vs ZjsKIAotCUZyZWVCdWxrSW5zZXJ0U3RhdGUobXlTdGF0ZS0+YmlzdGF0ZSk7Ci0KLQl0YWJsZV9m aW5pc2hfYnVsa19pbnNlcnQobXlTdGF0ZS0+dHJhbnNpZW50cmVsLCBteVN0YXRlLT50aV9vcHRp b25zKTsKKwl0YWJsZV9tb2RpZnlfYnVmZmVyX2ZsdXNoKG15U3RhdGUtPm1zdGF0ZSwgbXlTdGF0 ZS0+b3V0cHV0X2NpZCwKKwkJCQkJCQkgIG15U3RhdGUtPnRpX29wdGlvbnMpOworCXRhYmxlX21v ZGlmeV9lbmQobXlTdGF0ZS0+bXN0YXRlKTsKIAogCS8qIGNsb3NlIHRyYW5zaWVudHJlbCwgYnV0 IGtlZXAgbG9jayB1bnRpbCBjb21taXQgKi8KIAl0YWJsZV9jbG9zZShteVN0YXRlLT50cmFuc2ll bnRyZWwsIE5vTG9jayk7Ci0tIAoyLjM0LjEKCg== --000000000000ee3c070614819712--