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 1syT34-0006tm-Vq for pgsql-hackers@arkaria.postgresql.org; Wed, 09 Oct 2024 09:32:04 +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 1syT33-0007sA-Mh for pgsql-hackers@arkaria.postgresql.org; Wed, 09 Oct 2024 09:32:02 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1syT33-0007ry-9j for pgsql-hackers@lists.postgresql.org; Wed, 09 Oct 2024 09:32:01 +0000 Received: from mail-pf1-x42c.google.com ([2607:f8b0:4864:20::42c]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1syT2z-0008O7-TK for pgsql-hackers@lists.postgresql.org; Wed, 09 Oct 2024 09:32:00 +0000 Received: by mail-pf1-x42c.google.com with SMTP id d2e1a72fcca58-71df2de4ed4so477806b3a.0 for ; Wed, 09 Oct 2024 02:31:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1728466316; x=1729071116; darn=lists.postgresql.org; h=in-reply-to:from:content-language:references:cc:to:subject :user-agent:mime-version:date:message-id:from:to:cc:subject:date :message-id:reply-to; bh=DBtBTE8bJWTFbJ9fVzSQRTfb+bijl2DpCx2FIWmjehQ=; b=LoMndITtGdBDIHc6Uwj39pJqIRNE/RPYVVLKyPPfFngSr/b2uLb7WVb6TN4tnrw+Ul Wi8GgUlIsCW72UHbUItujRirla7byh2kjAEFA342uctruPWOzLdKsKkZ06eeGUfXsl2w SlUR5jG0wiZWQEwwGItPDMtn5FeLu2BIOPXE0ML7SqiwlgBUAA/hz6narz+p21U/la3o g7HOBSY3h1XhtklCkZf3LQj6ggI5sog9cBoxXCxGZwIKZtVZ4gtkkLRNT6icmuEWYjJ1 J3ZRIk76vAUFS+zY3XFndkgQh9va2jiE7jMfOx7VGfgLX8YQpK+xuHFVehih7dfN+1dI Xb8w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1728466316; x=1729071116; h=in-reply-to:from:content-language:references:cc:to:subject :user-agent:mime-version:date:message-id:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=DBtBTE8bJWTFbJ9fVzSQRTfb+bijl2DpCx2FIWmjehQ=; b=dpBGz/89ZXi9DRViJHHgMNjkcNPBphKs0zFQ0BlM61AD7xJsUbgqJbF/wC24/ZzW2l KKhhKiVhIVXSTmkejpjGvFYApwX48uIQEkfcht1n6DnvJUrDuKaow2HfjZ6wrnfwc5Hu m/iflnK+JfgcHfCgLwLIsHEfm9Rzpea2bUh09rqXrFerSha7ev/z34ymnn13w+droOpX p7Dke7Op7adQfrb1/GLICbXflkkObDtsLPmO7isgzRjypfCV554Rd6I/x55eaDBU7iOl D5BR4KWqNquKEUe5IjuKNDLSSHTy3hPBOi2NRPzz+7hOkWyL2AvL1xv1DlULd1oaJFP+ 6KWw== X-Forwarded-Encrypted: i=1; AJvYcCW7SAjfC0crp0iyZOWbz3ilmsqgxmVyWi2ykuyXG7DApMjR1TFTWQw4RsMEzvqU+hd/KY7Ywyltoriw4up+@lists.postgresql.org X-Gm-Message-State: AOJu0Yy/tPEiOeW0iGaFz8J+h9/8FeNx7IWgGwh2Yd4VnDcDCAh9BjHA SNjZDvfWIls2cGm30PVFsZ/rY6etHZb4Nzo5cVIlluwGOYIf4bTO X-Google-Smtp-Source: AGHT+IHlBhKpnYDie6mIR2P0HkO81p9/+axqO7md05JRNdf2S3o4u1ISp33rIgAZfuGJvsQ9rGB0qA== X-Received: by 2002:a05:6a00:2d09:b0:71e:190:c131 with SMTP id d2e1a72fcca58-71e10545b4dmr10984601b3a.13.1728466315902; Wed, 09 Oct 2024 02:31:55 -0700 (PDT) Received: from [10.10.20.99] (node-c9q.pool-101-109.dynamic.totinternet.net. [101.109.62.30]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-71df0ce5d40sm7630646b3a.92.2024.10.09.02.31.51 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 09 Oct 2024 02:31:55 -0700 (PDT) Content-Type: multipart/mixed; boundary="------------eQ1K3Q1qMUPF67wWQTLOGbpy" Message-ID: <5d7a66e7-b256-41a7-905a-728c7ae54bce@gmail.com> Date: Wed, 9 Oct 2024 16:31:49 +0700 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: POC, WIP: OR-clause support for indexes To: Robert Haas , Alexander Korotkov Cc: Alena Rybakina , jian he , Nikolay Shaplov , pgsql-hackers@lists.postgresql.org, pgsql-hackers@postgresql.org, Peter Geoghegan , Marcos Pegoraro , teodor@sigaev.ru, Peter Eisentraut , Ranier Vilela References: <567ED6CA.2040504@sigaev.ru> <65bfdcb6-0f0c-4d4c-a721-cb38a0ba91c7@postgrespro.ru> <670d1dc2-a280-4cf6-bc29-e2eafb107081@gmail.com> <93464dd6-d484-4021-b71f-e82928bf6758@gmail.com> <63617a30-6078-4e86-b44b-6364e04e210d@postgrespro.ru> <21752e9e-26fb-4665-bfcc-090bf4093e5a@postgrespro.ru> <9ac6480d-6686-4c3a-9149-ba66df4f88ad@gmail.com> Content-Language: en-AU From: Andrei Lepikhov In-Reply-To: List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------eQ1K3Q1qMUPF67wWQTLOGbpy Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit On 10/4/24 20:34, Robert Haas wrote: > On Mon, Sep 23, 2024 at 7:11 AM Alexander Korotkov wrote: >> Makes sense. Please, check the attached patch freeing the consts list >> while returning NULL from match_orclause_to_indexcol(). > More generally, many of the comments in this patch seem to just > explain what the code does, and I'd like to reiterate my usual > complaint: as far as possible, comments should explain WHY the code > does what it does. Certainly, in some cases there's nothing to be said > about that e.g. /* Lookup for operator to fetch necessary information > for the SAOP node */ isn't really saying anything non-obvious but it's > reasonable to have the comment here anyway. However, when there is > something more interesting to be said, then we should do that rather > than just reiterate what the reader who knows C can anyway see. For > instance, the lengthy comment beginning with "Iterate over OR > entries." could either be shorter and recapitulate less of the code > that follows, or it could say something more interesting about why > we're doing it like that. While I know Alexander is already working on this issue, the variants provided in the attachment could offer some valuable insights (see 0001 and 0002). > > + /* We allow constant to be Const or Param */ > + if (!IsA(constExpr, Const) && !IsA(constExpr, Param)) > + break; > > This restriction is a lot tighter than the one mentioned in the header > comment of match_clause_to_indexcol ("Our definition of const is > exceedingly liberal"). If there's a reason for that, the comments > should talk about it. If there isn't, it's better to be consistent.If we know the type of result we don't really need this additional restriction. The only reason I had here is to avoid some strange and ineffective cases like: SELECT oid,typname FROM pg_type t1 WHERE typtypmod = ANY (ARRAY [1, 1+( SELECT max(typtypmod) FROM pg_type t2 WHERE t1.typtypmod = t2.typtypmod)]); QUERY PLAN ------------------------------------------------------------ Seq Scan on pg_type t1 Filter: (typtypmod = ANY (ARRAY[1, (1 + (SubPlan 2))])) SubPlan 2 -> Result InitPlan 1 -> Limit -> Seq Scan on pg_type t2 Filter: (t1.typtypmod = typtypmod) So, it is mostly about trade-off between benefit expected and planning complexity. See a sketch of comment in 0003. > I'm unclear what the current thinking is about the performance of this > patch, both as to planning and as to execution. Do we believe that > this transformation is a categorical win at execution-time? In theory, > OR format alllows for short-circuit execution, but because of the > Const-or-Param restriction above, I don't think that's mostly a > non-issue. But maybe not completely, because I can see from the > regression test changes that it's possible for us to apply this > transformation when the Param is set by an InitPlan or SubPlan. If we > have something like WHERE tenthous = 1 OR tenthous = > (very_expensive_computation() + 1), maybe the patch could lose, > because we'll have to do the very expensive calculation to evaluate > the SAOP, and the OR could stop as soon as we establish that tenthous > != 1. If we only did the transformation when the Param is an external > parameter, then we wouldn't have this issue. Maybe this isn't worth > worrying about; I'm not sure. Are there any other cases where the > transformation can produce something that executes more slowly? I have a couple of user reports in my pocket where changing the position of the OR clause drastically (2-3 times) altered query execution time. However, I think it is not a good way to optimise SQL queries the way we use when coding in C. -- regards, Andrei Lepikhov --------------eQ1K3Q1qMUPF67wWQTLOGbpy Content-Type: text/x-patch; charset=UTF-8; name="0001-Comments-for-the-0001-patch.patch" Content-Disposition: attachment; filename="0001-Comments-for-the-0001-patch.patch" Content-Transfer-Encoding: base64 RnJvbSBhZTI3OWMyYmVmOGIwYjExNzM5Zjc5YjQ5ZDY4MzE5ODk0YzYzYWE5IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiAiQW5kcmVpIFYuIExlcGlraG92IiA8bGVwaWhvdkBn bWFpbC5jb20+CkRhdGU6IFdlZCwgOSBPY3QgMjAyNCAxNDowNToyNSArMDcwMApTdWJqZWN0 OiBbUEFUQ0ggMS8zXSBDb21tZW50cyBmb3IgdGhlIDAwMDEgcGF0Y2gKCi0tLQogc3JjL2Jh Y2tlbmQvb3B0aW1pemVyL3BhdGgvaW5keHBhdGguYyB8IDUyICsrKysrKysrKysrKysrKyst LS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDMxIGluc2VydGlvbnMoKyksIDIxIGRlbGV0 aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wYXRoL2luZHhw YXRoLmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9pbmR4cGF0aC5jCmluZGV4IDQ2 ZDU3NmEwYzIuLjYwMjE0MTkxMWQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXpl ci9wYXRoL2luZHhwYXRoLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvaW5k eHBhdGguYwpAQCAtMjU1Nyw2ICsyNTU3LDEwIEBAIG1hdGNoX2NsYXVzZV90b19pbmRleChQ bGFubmVySW5mbyAqcm9vdCwKICAqCSAgSXQgaXMgYWxzbyBwb3NzaWJsZSB0byBtYXRjaCBT Y2FsYXJBcnJheU9wRXhwciBjbGF1c2VzIHRvIGluZGV4ZXMsIHdoZW4KICAqCSAgdGhlIGNs YXVzZSBpcyBvZiB0aGUgZm9ybSAiaW5kZXhrZXkgb3AgQU5ZIChhcnJheWNvbnN0KSIuCiAg KgorICoJICBJdCBpcyBhbHNvIHBvc3NpYmxlIHRvIG1hdGNoIGEgbGlzdCBvZiBPUiBjbGF1 c2VzIGlmIGl0IG1heSBiZSB0cmFuc2Zvcm1lZAorICoJICBpbnRvIHNpbmdsZSBTY2FsYXJB cnJheU9wRXhwciBjbGF1c2UuIE9uIHN1Y2Nlc3MsIHJldHVybmluZyBpbmRleCBjbGF1c2UK KyAqCSAgd2lsbCBjb250YWluIHRyYXNmb3JtZWQgY2xhdXNlLgorICoKICAqCSAgRm9yIGJv b2xlYW4gaW5kZXhlcywgaXQgaXMgYWxzbyBwb3NzaWJsZSB0byBtYXRjaCB0aGUgY2xhdXNl IGRpcmVjdGx5CiAgKgkgIHRvIHRoZSBpbmRleGtleTsgb3IgcGVyaGFwcyB0aGUgY2xhdXNl IGlzIChOT1QgaW5kZXhrZXkpLgogICoKQEAgLTMxNTcsNiArMzE2MSwxMCBAQCBtYXRjaF9y b3djb21wYXJlX3RvX2luZGV4Y29sKFBsYW5uZXJJbmZvICpyb290LAogICogbWF0Y2hfb3Jj bGF1c2VfdG9faW5kZXhjb2woKQogICoJICBIYW5kbGVzIHRoZSBPUi1leHByIGNhc2UgZm9y IG1hdGNoX2NsYXVzZV90b19pbmRleGNvbCgpIGluIHRoZSBjYXNlCiAgKgkgIHdoZW4gaXQg Y291bGQgYmUgdHJhbnNmb3JtZWQgdG8gU2NhbGFyQXJyYXlPcEV4cHIuCisgKgorICoJICBH aXZlbiBhIGxpc3Qgb2YgYW4gT1ItY2xhdXNlIGFyZ3MsIGF0dGVtcHRzIHRvIHRyYW5zZm9y bSB0aGlzIEJvb2xFeHByCisgKgkgIGludG8gc2luZ2xlIFNBT1AgZXhwcmVzc2lvbi4gT24g c3VjY2VzcywgcmV0dXJucyBJbmRleENsYXVzZSwgY29udGFpbmluZworICoJICB0cmFuc2Zv cm1lZCBleHByZXNzaW9uIG9yIE5VTEwsIGlmIGZhaWxlZC4KICAqLwogc3RhdGljIEluZGV4 Q2xhdXNlICoKIG1hdGNoX29yY2xhdXNlX3RvX2luZGV4Y29sKFBsYW5uZXJJbmZvICpyb290 LApAQCAtMzE4NCwxMSArMzE5MiwxMiBAQCBtYXRjaF9vcmNsYXVzZV90b19pbmRleGNvbChQ bGFubmVySW5mbyAqcm9vdCwKIAlBc3NlcnQob3JjbGF1c2UtPmJvb2xvcCA9PSBPUl9FWFBS KTsKIAogCS8qCi0JICogSXRlcmF0ZSBvdmVyIE9SIGVudHJpZXMuICBDaGVjayB0aGF0IGVh Y2ggT1IgZW50cnkgaXMgb2YgdGhlIGZvcm06Ci0JICogKGluZGV4a2V5IG9wZXJhdG9yIGNv bnN0YW50KSBvciAoY29uc3RhbnQgb3BlcmF0b3IgaW5kZXhrZXkpLiBPcGVyYXRvcnMKLQkg KiBvZiBhbGwgdGhlIGVudHJpZXMgbXVzdCBtYXRjaC4gIENvbnN0YW50IG1pZ2h0IGJlIGVp dGhlciBDb25zdCBvcgotCSAqIFBhcmFtLiAgRXhpdCB3aXRoIE5VTEwgb24gZmlyc3Qgbm9u LW1hdGNoaW5nIGVudHJ5LiAgRXhpdCBpcwotCSAqIGltcGxlbWVudGVkIGFzIGEgYnJlYWsg ZnJvbSB0aGUgbG9vcCwgd2hpY2ggaXMgY2F0Y2hlZCBhZnRlcndhcmRzLgorCSAqIFRyeSB0 byBjb252ZXJ0IGxpc3Qgb2YgT1ItY2xhdXNlcyB0byBzaW5nbGUgU0FPUCBleHByZXNzaW9u LiBFYWNoIE9SCisJICogZW50cnkgbXVzdCBiZSBpbiB0aGUgZm9ybTogKGluZGV4a2V5IG9w ZXJhdG9yIGNvbnN0YW50KSBvciAoY29uc3RhbnQKKwkgKiBvcGVyYXRvciBpbmRleGtleSku IE9wZXJhdG9ycyBvZiBhbGwgdGhlIGVudHJpZXMgbXVzdCBtYXRjaC4gQ29uc3RhbnQKKwkg KiBtaWdodCBiZSBlaXRoZXIgQ29uc3Qgb3IgUGFyYW0uIFRvIGJlIGVmZmVjdGl2ZSwgZ2l2 ZSB1cCBvbiBmaXJzdAorCSAqIG5vbi1tYXRjaGluZyBlbnRyeS4gRXhpdCBpcyBpbXBsZW1l bnRlZCBhcyBhIGJyZWFrIGZyb20gdGhlIGxvb3AsIHdoaWNoCisJICogaXMgY2F0Y2hlZCBh ZnRlcndhcmRzLgogCSAqLwogCWZvcmVhY2gobGMsIG9yY2xhdXNlLT5hcmdzKQogCXsKQEAg LTMyODYsOCArMzI5NSw4IEBAIG1hdGNoX29yY2xhdXNlX3RvX2luZGV4Y29sKFBsYW5uZXJJ bmZvICpyb290LAogCQkJYnJlYWs7CiAKIAkJLyoKLQkJICogRm9yIHRoZSBmaXJzdCBtYXRj aGluZyBxdWFsLCBzYXZlIGluZm9ybWF0aW9uIGFib3V0IG9wZXJhdG9yLCB0eXBlCi0JCSAq IGFuZCBjb2xsYXRpb24uICBGb3IgdGhlIG90aGVyIHF1YWxzIGp1c3QgY2hlY2sgdGhlIG1h dGNoIHdpdGggdGhlCisJCSAqIFNhdmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIG9wZXJhdG9y LCB0eXBlLCBhbmQgY29sbGF0aW9uIGZvciB0aGUKKwkJICogZmlyc3QgbWF0Y2hpbmcgcXVh bC4gVGhlbiwgY2hlY2sgdGhhdCBzdWJzZXF1ZW50IHF1YWxzIG1hdGNoIHRoZQogCQkgKiBm aXJzdC4KIAkJICovCiAJCWlmIChmaXJzdFRpbWUpCkBAIC0zMjk4LDkgKzMzMDcsOSBAQCBt YXRjaF9vcmNsYXVzZV90b19pbmRleGNvbChQbGFubmVySW5mbyAqcm9vdCwKIAkJCWlucHV0 Y29sbGlkID0gc3ViQ2xhdXNlLT5pbnB1dGNvbGxpZDsKIAogCQkJLyoKLQkJCSAqIENoZWNr IG9wZXJhdG9yIGlzIHByZXNlbnQgaW4gdGhlIG9wZmFtaWx5LCBleHByZXNzaW9uIGNvbGxh dGlvbgotCQkJICogbWF0Y2hlcyBpbmRleCBjb2xsYXRpb24uICBBbHNvLCB0aGVyZSBtdXN0 IGJlIGFuIGFycmF5IHR5cGUgaW4KLQkJCSAqIG9yZGVyIHRvIGNvbnN0cnVjdCBhbiBhcnJh eSBsYXRlci4KKwkJCSAqIENoZWNrIG9wZXJhdG9yIGlzIHByZXNlbnRlZCBpbiB0aGUgb3Bm YW1pbHkgYW5kIGV4cHJlc3Npb24KKwkJCSAqIGNvbGxhdGlvbiBtYXRjaGVzIGluZGV4IGNv bGxhdGlvbi4gQWxzbywgdGhlcmUgbXVzdCBiZSBhbiBhcnJheQorCQkJICogdHlwZSB0byBj b25zdHJ1Y3QgYW4gYXJyYXkgbGF0ZXIuCiAJCQkgKi8KIAkJCWlmICghSW5kZXhDb2xsTWF0 Y2hlc0V4cHJDb2xsKGluZGV4LT5pbmRleGNvbGxhdGlvbnNbaW5kZXhjb2xdLCBpbnB1dGNv bGxpZCkgfHwKIAkJCQkhb3BfaW5fb3BmYW1pbHkobWF0Y2hPcG5vLCBpbmRleC0+b3BmYW1p bHlbaW5kZXhjb2xdKSB8fApAQCAtMzMzMiwxMiArMzM0MSwxNCBAQCBtYXRjaF9vcmNsYXVz ZV90b19pbmRleGNvbChQbGFubmVySW5mbyAqcm9vdCwKIAkJcmV0dXJuIE5VTEw7CiAJfQog CisJLyoKKwkgKiBBc3NlbWJsZSBhbiBhcnJheSBmcm9tIHRoZSBsaXN0IG9mIGNvbnN0YW50 cy4gSXQgc2VlbXMgbW9yZSBwcm9maXRhYmxlIHRvCisJICogYnVpbGQgYSBjb25zdCBhcnJh eS4gQnV0IGluIHByZXNlbmNlIG9mIHBhcmFtZXRlcnMgd2UgZG9uJ3QgaGF2ZSBzcGVjaWZp YworCSAqIHZhbHVlIGhlcmUgYW5kIG11c3QgZW1wbG95IGFuIEFycmF5RXhwciBpbnN0ZWFk LgorCSAqLworCiAJaWYgKGhhdmVfcGFyYW0pCiAJewotCQkvKgotCQkgKiBXZSBuZWVkIHRv IGNvbnN0cnVjdCBhbiBBcnJheUV4cHIgZ2l2ZW4gd2UgaGF2ZSBQYXJhbSdzIG5vdCBqdXN0 Ci0JCSAqIENvbnN0J3MuCi0JCSAqLwogCQlBcnJheUV4cHIgICphcnJheUV4cHIgPSBtYWtl Tm9kZShBcnJheUV4cHIpOwogCiAJCS8qIGFycmF5X2NvbGxpZCB3aWxsIGJlIHNldCBieSBw YXJzZV9jb2xsYXRlLmMgKi8KQEAgLTMzNTEsMTAgKzMzNjIsNiBAQCBtYXRjaF9vcmNsYXVz ZV90b19pbmRleGNvbChQbGFubmVySW5mbyAqcm9vdCwKIAl9CiAJZWxzZQogCXsKLQkJLyoK LQkJICogV2UgaGF2ZSBvbmx5IENvbnN0J3MuICBJbiB0aGlzIGNhc2Ugd2UgY2FuIGNvbnN0 cnVjdCBhbiBhcnJheQotCQkgKiBkaXJlY3RseS4KLQkJICovCiAJCWludDE2CQl0eXBsZW47 CiAJCWJvb2wJCXR5cGJ5dmFsOwogCQljaGFyCQl0eXBhbGlnbjsKQEAgLTMzODMsOCArMzM5 MCw3IEBAIG1hdGNoX29yY2xhdXNlX3RvX2luZGV4Y29sKFBsYW5uZXJJbmZvICpyb290LAog CX0KIAogCS8qIExvb2t1cCBmb3Igb3BlcmF0b3IgdG8gZmV0Y2ggbmVjZXNzYXJ5IGluZm9y bWF0aW9uIGZvciB0aGUgU0FPUCBub2RlICovCi0Jb3BlcnR1cCA9IFNlYXJjaFN5c0NhY2hl MShPUEVST0lELAotCQkJCQkJCSAgT2JqZWN0SWRHZXREYXR1bShtYXRjaE9wbm8pKTsKKwlv cGVydHVwID0gU2VhcmNoU3lzQ2FjaGUxKE9QRVJPSUQsIE9iamVjdElkR2V0RGF0dW0obWF0 Y2hPcG5vKSk7CiAJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKG9wZXJ0dXApKQogCQllbG9nKEVS Uk9SLCAiY2FjaGUgbG9va3VwIGZhaWxlZCBmb3Igb3BlcmF0b3IgJXUiLCBtYXRjaE9wbm8p OwogCkBAIC0zNDA0LDcgKzM0MTAsMTEgQEAgbWF0Y2hfb3JjbGF1c2VfdG9faW5kZXhjb2wo UGxhbm5lckluZm8gKnJvb3QsCiAJUmVsZWFzZVN5c0NhY2hlKG9wZXJ0dXApOwogCiAJLyoK LQkgKiBGaW5hbGx5IGJ1aWxkIGFuIEluZGV4Q2xhdXNlIGJhc2VkIG9uIHRoZSBTQU9QIG5v ZGUuCisJICogRmluYWxseSBidWlsZCBhbiBJbmRleENsYXVzZSBiYXNlZCBvbiB0aGUgU0FP UCBub2RlLiBVc2UKKwkgKiBtYWtlX3NpbXBsZV9yZXN0cmljdGluZm8gdG8gZ2V0IFJlc3Ry aWN0SW5mbyB3aXRoIGNsZWFuIHNlbGVjdGl2aXR5CisJICogZXN0aW1hdGlvbnMgYmVjYXVz ZSBpdCBtYXkgZGlmZmVyIGZyb20gZXN0aW1hdGlvbiBtYWRlIGZvciBhbiBPUiBjbGF1c2Uu CisJICogQWx0aG91Z2ggaXQgaXMgbm90IGEgbG9zc3kgZXhwcmVzc2lvbiwga2VlcCBvbGQg dmVyc2lvbiBvZiByaW5mbyBpbgorCSAqIGljbGF1c2UtPnJpbmZvIHRvIGRldGVjdCBkdXBs aWNhdGVzIGFuZCByZWNoZWNrIG9yaWdpbmFsIGNsYXVzZS4KIAkgKi8KIAlpY2xhdXNlID0g bWFrZU5vZGUoSW5kZXhDbGF1c2UpOwogCWljbGF1c2UtPnJpbmZvID0gcmluZm87Ci0tIAoy LjM5LjUKCg== --------------eQ1K3Q1qMUPF67wWQTLOGbpy Content-Type: text/x-patch; charset=UTF-8; name="0002-Comments-for-0002-patch.patch" Content-Disposition: attachment; filename="0002-Comments-for-0002-patch.patch" Content-Transfer-Encoding: base64 RnJvbSBkMGRmYjA2NDFlYzEwMGFhZmYyYzNhN2NmMGNlZmEyZTU1YmU3YmViIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiAiQW5kcmVpIFYuIExlcGlraG92IiA8bGVwaWhvdkBn bWFpbC5jb20+CkRhdGU6IFdlZCwgOSBPY3QgMjAyNCAxNTo0Mjo1NCArMDcwMApTdWJqZWN0 OiBbUEFUQ0ggMi8zXSBDb21tZW50cyBmb3IgMDAwMiBwYXRjaAoKLS0tCiBzcmMvYmFja2Vu ZC9vcHRpbWl6ZXIvcGF0aC9pbmR4cGF0aC5jIHwgMjUgKysrKysrKysrKysrKysrKysrLS0t LS0tLQogMSBmaWxlIGNoYW5nZWQsIDE4IGluc2VydGlvbnMoKyksIDcgZGVsZXRpb25zKC0p CgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvaW5keHBhdGguYyBi L3NyYy9iYWNrZW5kL29wdGltaXplci9wYXRoL2luZHhwYXRoLmMKaW5kZXggNjAyMTQxOTEx ZC4uYTJkZGZiMmJiOSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgv aW5keHBhdGguYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9pbmR4cGF0aC5j CkBAIC0xMTc0LDkgKzExNzQsMTAgQEAgYnVpbGRfcGF0aHNfZm9yX09SKFBsYW5uZXJJbmZv ICpyb290LCBSZWxPcHRJbmZvICpyZWwsCiB9CiAKIC8qCi0gKiBEYXRhIHN0cnVjdHVyZSBy ZXByZXNlbnRpbmcgaW5mb3JtYXRpb24gYWJvdXQgT1ItY2xhdXNlIGFyZ3VtZW50IGFuZCBp dHMKLSAqIG1hdGNoaW5nIGluZGV4IGtleS4gIFVzZWQgZm9yIGdyb3VwaW5nIG9mIHNpbWls YXIgT1ItY2xhdXNlIGFyZ3VtZW50cyBpbgorICogVXRpbGl0eSBzdHJ1Y3R1cmUgdXNlZCB0 byBncm91cCBzaW1pbGFyIE9SLWNsYXVzZSBhcmd1bWVudHMgaW4KICAqIGdyb3VwX3NpbWls YXJfb3JfYXJncygpLgorICogSXQgcmVwcmVzZW50cyBpbmZvcm1hdGlvbiBhYm91dCBPUi1j bGF1c2UgYXJndW1lbnQgYW5kIGl0cworICogbWF0Y2hpbmcgaW5kZXgga2V5LgogICovCiB0 eXBlZGVmIHN0cnVjdAogewpAQCAtMTIyOCwxMiArMTIyOSwxNyBAQCBvcl9hcmdfaW5kZXhf bWF0Y2hfY21wKGNvbnN0IHZvaWQgKmEsIGNvbnN0IHZvaWQgKmIpCiAKIC8qCiAgKiBncm91 cF9zaW1pbGFyX29yX2FyZ3MKLSAqCQlHcm91cCBzaW1pbGFyIE9SLWFyZ3VtZW50cyBpbnRv IGRlZGljYXRlZCBSZXN0cmljdEluZm9zLiAgUHJvY2VzcwotICoJCWFyZ3VtZW50cyBvZiAn cmluZm8nIGNsYXVzZSwgcmV0dXJucyB0aGUgcHJvY2Vzc2VkIGxpc3Qgb2YgYXJndW1lbnRz LgorICoJCVRyYW5zZm9ybSBpbmNvbWluZyBPUi1yZXN0cmljdGluZm8gaW50byBhIGxpc3Qg b2Ygc3ViLXJlc3RyaWN0aW5mb3MsCisgKgkJZWFjaCBvZiB0aGVtIGNvbnRhaW4gYSBzdWJz ZXQgb2YgT1ItY2xhdXNlcyBmcm9tIHRoZSBzb3VyY2UgcmluZm8KKyAqCQltYXRjaGluZyB0 aGUgc2FtZSBpbmRleCBjb2x1bW4gd2l0aCB0aGUgc2FtZSBvcGVyYXRvciBhbmQgY29sbGF0 aW9uLAorICoJCUl0IG1heSBiZSBlbXBsb3llZCBsYXRlciwgZHVyaW5nIHRoZSBtYXRjaF9j bGF1c2VfdG9faW5kZXhjb2wgdG8KKyAqCQl0cmFuc2Zvcm0gd2hvbGUgT1Itc3ViLXJpbmZv IHRvIGEgU0FPUCBjbGF1c2UuCiAgKgogICogU2ltaWxhciBhcmd1bWVudHMgY2xhdXNlcyBv ZiBmb3JtICJpbmRleGtleSBvcCBjb25zdGFudCIgaGF2aW5nIHNhbWUKICAqIGluZGV4a2V5 LCBvcGVyYXRvciwgYW5kIGNvbGxhdGlvbi4gIENvbnN0YW50IG1heSBjb21wcmlzZSBlaXRo ZXIgQ29uc3QKICAqIG9yIFBhcmFtLgorICoKKyAqIFJldHVybnMgdGhlIHByb2Nlc3NlZCBs aXN0IG9mIGFyZ3VtZW50cy4KICAqLwogc3RhdGljIExpc3QgKgogZ3JvdXBfc2ltaWxhcl9v cl9hcmdzKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpyZWwsIFJlc3RyaWN0SW5m byAqcmluZm8pCkBAIC0xMjUyLDggKzEyNTgsOSBAQCBncm91cF9zaW1pbGFyX29yX2FyZ3Mo UGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKnJlbCwgUmVzdHJpY3RJbmZvICpyaW5m bykKIAluID0gbGlzdF9sZW5ndGgob3JhcmdzKTsKIAogCS8qCi0JICogQWxsb2NhdGUgYW5k IGZpbGwgT3JBcmdJbmRleE1hdGNoIHN0cnVjdCBmb3IgZWFjaCBjbGF1c2UgaW4gdGhlCi0J ICogYXJndW1lbnQgbGlzdC4KKwkgKiBUbyBhdm9pZCBOXjIgYmVoYXZpb3VyLCB0YWtlIHV0 aWxpdHkgcGFzcyBhbG9uZyB0aGUgbGlzdCBvZiBPUi1jbGF1c2UKKwkgKiBhcmd1bWVudHMu IEZvciBlYWNoIGFyZ3VtZW50IGZpbGwgdGhlIE9yQXJnSW5kZXhNYXRjaCBzdHJ1Y3R1cmUg d2hpY2gKKwkgKiB3aWxsIGJlIHVzZWQgdG8gc29ydCB0aGVzZSBhcmd1bWVudHMgYXQgdGhl IG5leHQgc3RlcC4KIAkgKi8KIAlpID0gLTE7CiAJbWF0Y2hlcyA9IChPckFyZ0luZGV4TWF0 Y2ggKikgcGFsbG9jKHNpemVvZihPckFyZ0luZGV4TWF0Y2gpICogbik7CkBAIC0xMzY4LDcg KzEzNzUsMTEgQEAgZ3JvdXBfc2ltaWxhcl9vcl9hcmdzKFBsYW5uZXJJbmZvICpyb290LCBS ZWxPcHRJbmZvICpyZWwsIFJlc3RyaWN0SW5mbyAqcmluZm8pCiAJLyogU29ydCBjbGF1c2Vz IHRvIG1ha2Ugc2ltaWxhciBjbGF1c2VzIGdvIHRvZ2V0aGVyICovCiAJcXNvcnQobWF0Y2hl cywgbiwgc2l6ZW9mKE9yQXJnSW5kZXhNYXRjaCksIG9yX2FyZ19pbmRleF9tYXRjaF9jbXAp OwogCi0JLyogR3JvdXAgc2ltaWxhciBjbGF1c2VzIGludG8gKi8KKwkvKgorCSAqIEdyb3Vw IHNpbWlsYXIgY2xhdXNlcyBpbnRvIHNpbmdsZSBzdWItcmVzdHJpY3RpbmZvLgorCSAqIFNp ZGUgZWZmZWN0OiByZXN1bHRpbmcgbGlzdCBvZiByZXN0cmljdGlvbnMgd2lsbCBiZSBzb3J0 ZWQgYnkgaW5kZXhudW0KKwkgKiBhbmQgY29sbnVtLiBDYW4gd2UgZW1wbG95IGl0IHNvbWVo b3cgbGF0ZXI/CisJICovCiAJZ3JvdXBfc3RhcnQgPSAwOwogCWZvciAoaSA9IDE7IGkgPD0g bjsgaSsrKQogCXsKLS0gCjIuMzkuNQoK --------------eQ1K3Q1qMUPF67wWQTLOGbpy Content-Type: text/x-patch; charset=UTF-8; name="0003-Comment-on-restriction-of-OR-SAOP-element-type.patch" Content-Disposition: attachment; filename*0="0003-Comment-on-restriction-of-OR-SAOP-element-type.patch" Content-Transfer-Encoding: base64 RnJvbSBmYWJiOTcwZjBhY2RiMWJiM2I3MjgwZjA1ZmZjZTlmYWNmODlhZjQ0IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiAiQW5kcmVpIFYuIExlcGlraG92IiA8bGVwaWhvdkBn bWFpbC5jb20+CkRhdGU6IFdlZCwgOSBPY3QgMjAyNCAxNjoxNzoyNyArMDcwMApTdWJqZWN0 OiBbUEFUQ0ggMy8zXSBDb21tZW50IG9uIHJlc3RyaWN0aW9uIG9mIE9SLT5TQU9QIGVsZW1l bnQgdHlwZQoKLS0tCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9pbmR4cGF0aC5jIHwg NSArKysrLQogMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigt KQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wYXRoL2luZHhwYXRoLmMg Yi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9pbmR4cGF0aC5jCmluZGV4IGEyZGRmYjJi YjkuLmM4NjI1YTMyZDQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wYXRo L2luZHhwYXRoLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvaW5keHBhdGgu YwpAQCAtMjUzOCw3ICsyNTM4LDEwIEBAIG1hdGNoX2NsYXVzZV90b19pbmRleChQbGFubmVy SW5mbyAqcm9vdCwKICAqCSAgKDMpICBtdXN0IG1hdGNoIHRoZSBjb2xsYXRpb24gb2YgdGhl IGluZGV4LCBpZiBjb2xsYXRpb24gaXMgcmVsZXZhbnQuCiAgKgogICoJICBPdXIgZGVmaW5p dGlvbiBvZiAiY29uc3QiIGlzIGV4Y2VlZGluZ2x5IGxpYmVyYWw6IHdlIGFsbG93IGFueXRo aW5nIHRoYXQKLSAqCSAgZG9lc24ndCBpbnZvbHZlIGEgdm9sYXRpbGUgZnVuY3Rpb24gb3Ig YSBWYXIgb2YgdGhlIGluZGV4J3MgcmVsYXRpb24uCisgKgkgIGRvZXNuJ3QgaW52b2x2ZSBh IHZvbGF0aWxlIGZ1bmN0aW9uIG9yIGEgVmFyIG9mIHRoZSBpbmRleCdzIHJlbGF0aW9uCisg KgkgIGV4Y2VwdCBmb3IgYSBib29sZWFuIE9SIGV4cHJlc3Npb24gaW5wdXQ6IGR1ZSB0byB0 cmFkZS1vZmYgYmV0d2VlbgorICoJICBleHBlY3RlZCBleGVjdXRpb24gc3BlZWR1cCBwbGFu bmluZyBjb21wbGV4aXR5LCB3ZSBsaW1pdCBvci0+c2FvcAorICoJICB0cmFuc2Zvcm1hdGlv biBieSBvYnZpb3VzIGNhc2VzIHdoZW4gYW4gaW5kZXggc2NhbiBjYW4gZ2V0IGEgcHJvZml0 LgogICoJICBJbiBwYXJ0aWN1bGFyLCBWYXJzIGJlbG9uZ2luZyB0byBvdGhlciByZWxhdGlv bnMgb2YgdGhlIHF1ZXJ5IGFyZQogICoJICBhY2NlcHRlZCBoZXJlLCBzaW5jZSBhIGNsYXVz ZSBvZiB0aGF0IGZvcm0gY2FuIGJlIHVzZWQgaW4gYQogICoJICBwYXJhbWV0ZXJpemVkIGlu ZGV4c2Nhbi4gIEl0J3MgdGhlIHJlc3BvbnNpYmlsaXR5IG9mIGhpZ2hlciBjb2RlIGxldmVs cwotLSAKMi4zOS41Cgo= --------------eQ1K3Q1qMUPF67wWQTLOGbpy--