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 1qvXAK-005lCB-35 for pgsql-hackers@arkaria.postgresql.org; Wed, 25 Oct 2023 06:14:52 +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 1qvXAI-00HI3m-Ge for pgsql-hackers@arkaria.postgresql.org; Wed, 25 Oct 2023 06:14:50 +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 1qvXAH-00HI3e-VX for pgsql-hackers@lists.postgresql.org; Wed, 25 Oct 2023 06:14:50 +0000 Received: from mail-vs1-xe2e.google.com ([2607:f8b0:4864:20::e2e]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1qvXAE-002BzU-Pt for pgsql-hackers@lists.postgresql.org; Wed, 25 Oct 2023 06:14:48 +0000 Received: by mail-vs1-xe2e.google.com with SMTP id ada2fe7eead31-457ee0df54eso2231926137.0 for ; Tue, 24 Oct 2023 23:14:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1698214486; x=1698819286; darn=lists.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=G4SHZt0hChKXvPLUNi5lD9HXnob14zkdmPgah3OvcD0=; b=Gp2l2Qiw/BrDNWAlH4OCVunTvxr0bX6j7fKfG6vqSGEUyl1bDoVl80nN1QsoqwVwGp AvD30r87UEqjVofRCsbVhwXFHSH5KUbyGDJcnqzS2isosMhpYm0zRgbRd3vBogj2y9PQ 7d3hRdWsKBq0gpvPlKa373SxtZzrd4ydHjO5EL0HmS80qNAl+7i1mhPAAkeXDtSUUA+S qQUml9gOt3Fil2aIOXpGIqbj0JJpvOAv7E1qOfmJ1+5FlcVvoP36ulp3TuT+je4apoUE 3yw0u0uk7F4rIzNrtlLnjGXjgJaeM2ei435XafIZwvnWLM1Iq0yc+vDkHT6LVrH8wMck IRFQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1698214486; x=1698819286; 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=G4SHZt0hChKXvPLUNi5lD9HXnob14zkdmPgah3OvcD0=; b=MfSkKqogth0++Tm3eCV24MMNtlPeJ1trnvbDy4R6azNKbhxtw8tpZRsijbcmciiyzL UpraUJxFlanIHT2q6wXGuzLdEF3GiqnD675gqjzcvZAZY/or+JK+94+CiC3ZUrJlzRM4 0WcV26/New2UJgBFcc7GdVG6XiZfvczy1WqoSVkVOD+UQZvpDsyZeOLXm1Ke6r9eM5RM nW0T3AhrFpQBxqARt0aN959szN005mW1PMi43mDzQA5Bcyd2A3mlm03gYY6CdqSQC3bY p0LZv7T5uZpPtWA1OKkzQ8ivX3HtGQY09agw5VnCpmDMMK2Pnx72cWDOLugJIVOfKh+z WCnQ== X-Gm-Message-State: AOJu0YxADPpUIEMPQwS3D8mzMdqMMxK9K+/fWZAFCieCavO3lpWNq0GP /rKudqOv8nN9ldaWJ4fpEGmvmnQz3Zv1edQM3SDxGx9sntK6r8jk X-Google-Smtp-Source: AGHT+IHIwejyhgweXG9euBIvOM4A/SDhA00f91snKs2ipe2nxlchT7FbdY3w4uuBrtYc+ey8NZNZPkfZ9dPlY8Dpc7w= X-Received: by 2002:a05:6102:2005:b0:45a:a174:8db5 with SMTP id p5-20020a056102200500b0045aa1748db5mr4336912vsr.30.1698214485616; Tue, 24 Oct 2023 23:14:45 -0700 (PDT) MIME-Version: 1.0 References: <6f010a6e-8e20-658b-dc05-dc9033a694da@eisentraut.org> <7d44dade-ff31-5eef-80ac-78ed838066f6@postgresfriends.org> <88dadcc1-6652-ff7d-264d-73906a53dee9@illuminatedcomputing.com> <5157e85a-6007-27a7-853a-5601d9c3722f@illuminatedcomputing.com> <5a16a59a-d497-7d72-07aa-0afc09d5193a@illuminatedcomputing.com> <1106ff18-b607-7ff3-e4ab-a3c6e1d46fc7@eisentraut.org> In-Reply-To: From: jian he Date: Wed, 25 Oct 2023 14:14:34 +0800 Message-ID: Subject: Re: SQL:2011 application time To: Paul Jungwirth Cc: Peter Eisentraut , PostgreSQL Hackers Content-Type: multipart/mixed; boundary="0000000000002b41e50608845fe4" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000002b41e50608845fe4 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Wed, Oct 11, 2023 at 12:47=E2=80=AFPM Paul Jungwirth wrote: > > On 9/25/23 14:00, Peter Eisentraut wrote: > > Looking through the tests in v16-0001: > > > > +-- PK with no columns just WITHOUT OVERLAPS: > > +CREATE TABLE temporal_rng ( > > + valid_at tsrange, > > + CONSTRAINT temporal_rng_pk PRIMARY KEY (valid_at WITHOUT OVERLA= PS) > > +); > > +ERROR: syntax error at or near "WITHOUT" > > +LINE 3: CONSTRAINT temporal_rng_pk PRIMARY KEY (valid_at WITHOUT OV..= . > > + ^ > > > > I think this error is confusing. The SQL standard requires at least on= e > > non-period column in a PK. I don't know why that is or why we should > > implement it. But if we want to implement it, maybe we should enforce > > that in parse analysis rather than directly in the parser, to be able t= o > > produce a more friendly error message. > > Okay. > > (I think the reason the standard requires one non-period column is to > identify the "entity". If philosophically the row is an Aristotelian > proposition about that thing, the period qualifies it as true just > during some time span. So the scalar part is doing the work that a PK > conventionally does, and the period part does something else. Perhaps a > PK/UNIQUE constraint with no scalar part would still be useful, but not > very often I think, and I'm not sure it makes sense to call it PK/UNIQUE.= ) > > > +-- PK with a range column/PERIOD that isn't there: > > +CREATE TABLE temporal_rng ( > > + id INTEGER, > > + CONSTRAINT temporal_rng_pk PRIMARY KEY (id, valid_at WITHOUT > > OVERLAPS) > > +); > > +ERROR: range or PERIOD "valid_at" in WITHOUT OVERLAPS does not exist > > > > I think here we should just produce a "column doesn't exist" error > > message, the same as if the "id" column was invalid. We don't need to > > get into the details of what kind of column it should be. That is done > > in the next test > > I'll change it. The reason for the different wording is that it might > not be a column at all. It might be a PERIOD. So what about just "column > or PERIOD doesn't exist"? (Your suggestion is fine too though.) > > > +ERROR: column "valid_at" in WITHOUT OVERLAPS is not a range type > > > > Also, in any case it would be nice to have a location pointer here (for > > both cases). > > Agreed. > I refactored findNeworOldColumn to better handle error reports. please check the attached. --0000000000002b41e50608845fe4 Content-Type: text/x-patch; charset="US-ASCII"; name="v1-0001-refactor-findNewOrOldColumn.patch" Content-Disposition: attachment; filename="v1-0001-refactor-findNewOrOldColumn.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lo5d1kyu0 RnJvbSA4MWE1ZWFiMjU5NmMwZTMyMmRlZTgxNjVhZDczMzQzMzI4ZjQ5NmVkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBwZ2FkZGljdCA8amlhbi51bml2ZXJzYWxpdHlAZ21haWwuY29t PgpEYXRlOiBXZWQsIDI1IE9jdCAyMDIzIDEzOjUwOjM4ICswODAwClN1YmplY3Q6IFtQQVRDSCB2 MSAxLzFdIHJlZmFjdG9yIGZpbmROZXdPck9sZENvbHVtbi4KCnJlZmF0b3IgZmluZE5ld29yT2xk Q29sdW1uIHRvIHZhbGlkYXRlIFdJVEhPVVQgT1ZFUkxBUCBjb25zdHJhaW50CmFzc29jaWF0ZWQg a2V5IGNvbHVtbiBleGlzdHMgYW5kIGl0J3MgYSByYW5nZSBkYXRhIHR5cGUuCgpjcmVhdGUvYWx0 ZXIgdGFibGUgYWRkIHdpdGhvdXQgb3ZlcmxhcCBjb25zdHJhaW50OgppZiB0aGUga2V5IGNvbHVt biBub3QgZXhpc3RzLAppdCB3aWxsIHJlcG9ydCB0aGUgc2FtZSBhcyBubyAid2l0aG91dCBvdmVy bGFwIiBub3JtYWwgY2FzZS4KCmNyZWF0ZSB0YWJsZSBhZGQgd2l0aG91dCBvdmVybGFwIGNvbnN0 cmFpbnQ6CmlmIG92ZXJsYXAgY29uc3RyYWludCBhc3NvY2lhdGVkIGNvbHVtbidzIGRhdGEgdHlw ZSBpcyBub3QgcmFuZ2UsCml0IHdpbGwgcmVwb3J0IGl0J3Mgbm90IGEgcmFuZ2UgZXJyb3IsIGFs c28gcHJpbnQgb3V0IHRoZQpwYXJzZXIgcG9zaXRpb24uCgphbHRlciB0YWJsZSBhZGQgd2l0aG91 dCBvdmVybGFwIGNvbnN0cmFpbnQ6CmlmIG92ZXJsYXAgY29uc3RyYWludCBhc3NvY2lhdGVkIGNv bHVtbidzIGRhdGEgdHlwZSBpcyBub3QgcmFuZ2UsCml0IHdpbGwgcmVwb3J0IG5vdCBhIHJhbmdl IGRhdGEgdHlwZSBlcnJvci4KaXQgd2lsbCBub3QgcHJpbnQgb3V0IHBhcnNlciBwb3NpdGlvbiAo SSBkb24ndCBrbm93IGhvdyB0byBkbyB0aGF0KS4KLS0tCiBzcmMvYmFja2VuZC9wYXJzZXIvcGFy c2VfdXRpbGNtZC5jICAgICAgICAgICAgfCA4MSArKysrKysrKysrLS0tLS0tLS0tCiAuLi4vcmVn cmVzcy9leHBlY3RlZC93aXRob3V0X292ZXJsYXBzLm91dCAgICAgfCAgOCArLQogMiBmaWxlcyBj aGFuZ2VkLCA0NyBpbnNlcnRpb25zKCspLCA0MiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdXRpbGNtZC5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3Bh cnNlX3V0aWxjbWQuYwppbmRleCBlMTk1NDEwYy4uZjQ0ZGU1OTEgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3BhcnNlci9wYXJzZV91dGlsY21kLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3Bh cnNlX3V0aWxjbWQuYwpAQCAtMTI0LDggKzEyNCw3IEBAIHN0YXRpYyBMaXN0ICpnZXRfb3BjbGFz cyhPaWQgb3BjbGFzcywgT2lkIGFjdHVhbF9kYXRhdHlwZSk7CiBzdGF0aWMgdm9pZCB0cmFuc2Zv cm1JbmRleENvbnN0cmFpbnRzKENyZWF0ZVN0bXRDb250ZXh0ICpjeHQpOwogc3RhdGljIEluZGV4 U3RtdCAqdHJhbnNmb3JtSW5kZXhDb25zdHJhaW50KENvbnN0cmFpbnQgKmNvbnN0cmFpbnQsCiAJ CQkJCQkJCQkJICAgQ3JlYXRlU3RtdENvbnRleHQgKmN4dCk7Ci1zdGF0aWMgYm9vbCBmaW5kTmV3 T3JPbGRDb2x1bW4oQ3JlYXRlU3RtdENvbnRleHQgKmN4dCwgY2hhciAqY29sbmFtZSwgY2hhciAq KnR5cG5hbWUsCi0JCQkJCQkJICAgT2lkICp0eXBpZCk7CitzdGF0aWMgdm9pZCB2YWxpZGF0ZV93 aXRob3V0X292ZXJsYXBzKENyZWF0ZVN0bXRDb250ZXh0ICpjeHQsIGNoYXIgKmNvbG5hbWUpOwog c3RhdGljIHZvaWQgdHJhbnNmb3JtRXh0ZW5kZWRTdGF0aXN0aWNzKENyZWF0ZVN0bXRDb250ZXh0 ICpjeHQpOwogc3RhdGljIHZvaWQgdHJhbnNmb3JtRktDb25zdHJhaW50cyhDcmVhdGVTdG10Q29u dGV4dCAqY3h0LAogCQkJCQkJCQkgICBib29sIHNraXBWYWxpZGF0aW9uLApAQCAtMjY5OCwzNCAr MjY5NywxOSBAQCB0cmFuc2Zvcm1JbmRleENvbnN0cmFpbnQoQ29uc3RyYWludCAqY29uc3RyYWlu dCwgQ3JlYXRlU3RtdENvbnRleHQgKmN4dCkKIAkJICogQW55dGhpbmcgaW4gd2l0aG91dF9vdmVy bGFwcyBzaG91bGQgYmUgaW5jbHVkZWQsCiAJCSAqIGJ1dCB3aXRoIHRoZSBvdmVybGFwcyBvcGVy YXRvciAoJiYpIGluc3RlYWQgb2YgZXF1YWxpdHkuCiAJCSAqLwotCQlpZiAoY29uc3RyYWludC0+ d2l0aG91dF9vdmVybGFwcyAhPSBOVUxMKSB7CisJCWlmIChjb25zdHJhaW50LT53aXRob3V0X292 ZXJsYXBzICE9IE5VTEwpCisJCXsKIAkJCWNoYXIgKndpdGhvdXRfb3ZlcmxhcHNfc3RyID0gc3Ry VmFsKGNvbnN0cmFpbnQtPndpdGhvdXRfb3ZlcmxhcHMpOwogCQkJSW5kZXhFbGVtICppcGFyYW0g PSBtYWtlTm9kZShJbmRleEVsZW0pOwotCQkJY2hhciAgICp0eXBuYW1lOwotCQkJT2lkCQl0eXBp ZDsKIAogCQkJLyoKIAkJCSAqIEl0ZXJhdGUgdGhyb3VnaCB0aGUgdGFibGUncyBjb2x1bW5zCiAJ CQkgKiAobGlrZSBqdXN0IGEgbGl0dGxlIGJpdCBhYm92ZSkuCiAJCQkgKiBJZiB3ZSBmaW5kIG9u ZSB3aG9zZSBuYW1lIGlzIHRoZSBzYW1lIGFzIHdpdGhvdXRfb3ZlcmxhcHMsCiAJCQkgKiB2YWxp ZGF0ZSB0aGF0IGl0J3MgYSByYW5nZSB0eXBlLgotCQkJICoKLQkJCSAqIE90aGVyd2lzZSByZXBv cnQgYW4gZXJyb3IuCisJCQkgKiBpZiBpdCBjYW5ub3QgZm91bmQsIHJhaXNlIGFuIGVycm9yLgog CQkJICovCi0KLQkJCWlmIChmaW5kTmV3T3JPbGRDb2x1bW4oY3h0LCB3aXRob3V0X292ZXJsYXBz X3N0ciwgJnR5cG5hbWUsICZ0eXBpZCkpCi0JCQl7Ci0JCQkJaWYgKCF0eXBlX2lzX3JhbmdlKHR5 cGlkKSkKLQkJCQkJZXJlcG9ydChFUlJPUiwKLQkJCQkJCQkoZXJyY29kZShFUlJDT0RFX0RBVEFU WVBFX01JU01BVENIKSwKLQkJCQkJCQkgZXJybXNnKCJjb2x1bW4gXCIlc1wiIGluIFdJVEhPVVQg T1ZFUkxBUFMgaXMgbm90IGEgcmFuZ2UgdHlwZSIsCi0JCQkJCQkJCQl3aXRob3V0X292ZXJsYXBz X3N0cikpKTsKLQkJCX0KLQkJCWVsc2UKLQkJCQllcmVwb3J0KEVSUk9SLAotCQkJCQkJKGVycmNv ZGUoRVJSQ09ERV9VTkRFRklORURfQ09MVU1OKSwKLQkJCQkJCSBlcnJtc2coInJhbmdlIG9yIFBF UklPRCBcIiVzXCIgaW4gV0lUSE9VVCBPVkVSTEFQUyBkb2VzIG5vdCBleGlzdCIsCi0JCQkJCQkJ CXdpdGhvdXRfb3ZlcmxhcHNfc3RyKSkpOworCQkJdmFsaWRhdGVfd2l0aG91dF9vdmVybGFwcyhj eHQsIHdpdGhvdXRfb3ZlcmxhcHNfc3RyKTsKIAogCQkJaXBhcmFtLT5uYW1lID0gcHN0cmR1cCh3 aXRob3V0X292ZXJsYXBzX3N0cik7CiAJCQlpcGFyYW0tPmV4cHIgPSBOVUxMOwpAQCAtMjc0NCw2 ICsyNzI4LDkgQEAgdHJhbnNmb3JtSW5kZXhDb25zdHJhaW50KENvbnN0cmFpbnQgKmNvbnN0cmFp bnQsIENyZWF0ZVN0bXRDb250ZXh0ICpjeHQpCiAJCQl7CiAJCQkJLyoKIAkJCQkgKiBGb3JjZSB0 aGUgY29sdW1uIHRvIE5PVCBOVUxMIHNpbmNlIGl0IGlzIHBhcnQgb2YgdGhlIHByaW1hcnkga2V5 LgorCQkJCSAqIHByaW9yIGxvb3AgZm9yZWFjaChsYywgY29uc3RyYWludC0+a2V5cykgZG9lcyBu b3QgbG9vcCBvdmVyCisJCQkJICogd2l0aG91dF9vdmVybGFwIGtleXMuIFNvIHdlIG5lZWQgbWFu dWFsbHkgYWRkIGhlcmUuCisJCQkJICoKIAkJCQkgKi8KIAkJCQlBbHRlclRhYmxlQ21kICpub3Ru dWxsY21kID0gbWFrZU5vZGUoQWx0ZXJUYWJsZUNtZCk7CiAKQEAgLTI4NzIsMzEgKzI4NTksMzcg QEAgdHJhbnNmb3JtSW5kZXhDb25zdHJhaW50KENvbnN0cmFpbnQgKmNvbnN0cmFpbnQsIENyZWF0 ZVN0bXRDb250ZXh0ICpjeHQpCiB9CiAKIC8qCi0gKiBUcmllcyB0byBmaW5kIGEgY29sdW1uIGJ5 IG5hbWUgYW1vbmcgdGhlIGV4aXN0aW5nIG9uZXMgKGlmIGl0J3MgYW4gQUxURVIgVEFCTEUpCi0g KiBhbmQgdGhlIG5ldyBvbmVzLiBTZXRzIHR5cG5hbWUgYW5kIHR5cGlkIGlmIG9uZSBpcyBmb3Vu ZC4gUmV0dXJucyBmYWxzZSBpZiB3ZQotICogY291bGRuJ3QgZmluZCBhIG1hdGNoLgorICogVHJp ZXMgdG8gZmluZCBhbmQgdmFsaWRhdGUgdGhlIHR5cGlkIGFzc29jaWF0ZWQKKyAqIHdpdGggYSB3 aXRob3V0X292ZXJsYXBzIGNvbHVtbiBuYW1lLCBldmVuIGluIEFMVEVSIFRBQkxFIGNhc2UuCisg KiBBZnRlciBjaGVjaywgd2l0aG91dF9vdmVybGFwcyBjb2x1bW4gc2hvdWxkIGV4aXN0LCBhbmQg aXQncyBhIHJhbmdlIHR5cGUuCisgKgogICovCi1zdGF0aWMgYm9vbAotZmluZE5ld09yT2xkQ29s dW1uKENyZWF0ZVN0bXRDb250ZXh0ICpjeHQsIGNoYXIgKmNvbG5hbWUsIGNoYXIgKip0eXBuYW1l LCBPaWQgKnR5cGlkKQorc3RhdGljIHZvaWQKK3ZhbGlkYXRlX3dpdGhvdXRfb3ZlcmxhcHMoQ3Jl YXRlU3RtdENvbnRleHQgKmN4dCwgY2hhciAqY29sbmFtZSkKIHsKIAkvKiBDaGVjayB0aGUgbmV3 IGNvbHVtbnMgZmlyc3QgaW4gY2FzZSB0aGVpciB0eXBlIGlzIGNoYW5naW5nLiAqLwotCiAJQ29s dW1uRGVmICAqY29sdW1uID0gTlVMTDsKIAlMaXN0Q2VsbCAgICpjb2x1bW5zOworCU9pZAkJCXR5 cGlkOworCWJvb2wJCWZvdW5kCT0gZmFsc2U7CiAKIAlmb3JlYWNoKGNvbHVtbnMsIGN4dC0+Y29s dW1ucykKIAl7CiAJCWNvbHVtbiA9IGxmaXJzdF9ub2RlKENvbHVtbkRlZiwgY29sdW1ucyk7CiAJ CWlmIChzdHJjbXAoY29sdW1uLT5jb2xuYW1lLCBjb2xuYW1lKSA9PSAwKQogCQl7Ci0JCQkqdHlw aWQgPSB0eXBlbmFtZVR5cGVJZChOVUxMLCBjb2x1bW4tPnR5cGVOYW1lKTsKLQkJCSp0eXBuYW1l ID0gVHlwZU5hbWVUb1N0cmluZyhjb2x1bW4tPnR5cGVOYW1lKTsKLQkJCXJldHVybiB0cnVlOwor CQkJdHlwaWQgPSB0eXBlbmFtZVR5cGVJZChOVUxMLCBjb2x1bW4tPnR5cGVOYW1lKTsKKwkJCWlm ICghdHlwZV9pc19yYW5nZSh0eXBpZCkpCisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCShlcnJj b2RlKEVSUkNPREVfREFUQVRZUEVfTUlTTUFUQ0gpLAorCQkJCQkJIGVycm1zZygiY29sdW1uIFwi JXNcIiBpbiBXSVRIT1VUIE9WRVJMQVBTIGlzIG5vdCBhIHJhbmdlIHR5cGUiLGNvbG5hbWUpLAor CQkJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihjeHQtPnBzdGF0ZSwgY29sdW1uLT5sb2NhdGlvbikp KTsKKwkJCWZvdW5kID0gdHJ1ZTsKKwkJCWJyZWFrOwogCQl9CiAJfQogCiAJLyogTG9vayB1cCBj b2x1bW5zIG9uIGV4aXN0aW5nIHRhYmxlLiAqLwotCiAJaWYgKGN4dC0+aXNhbHRlcikKIAl7CiAJ CVJlbGF0aW9uIHJlbCA9IGN4dC0+cmVsOwpAQCAtMjkwNSwyMiArMjg5OCwzMCBAQCBmaW5kTmV3 T3JPbGRDb2x1bW4oQ3JlYXRlU3RtdENvbnRleHQgKmN4dCwgY2hhciAqY29sbmFtZSwgY2hhciAq KnR5cG5hbWUsIE9pZCAqdAogCQkJRm9ybV9wZ19hdHRyaWJ1dGUgYXR0ciA9IFR1cGxlRGVzY0F0 dHIocmVsLT5yZF9hdHQsIGkpOwogCQkJY29uc3QgY2hhciAqYXR0bmFtZTsKIAotCQkJaWYgKGF0 dHItPmF0dGlzZHJvcHBlZCkKLQkJCQljb250aW51ZTsKLQogCQkJYXR0bmFtZSA9IE5hbWVTdHIo YXR0ci0+YXR0bmFtZSk7CiAJCQlpZiAoc3RyY21wKGF0dG5hbWUsIGNvbG5hbWUpID09IDApCiAJ CQl7Ci0JCQkJVHlwZSB0eXBlID0gdHlwZWlkVHlwZShhdHRyLT5hdHR0eXBpZCk7Ci0JCQkJKnR5 cGlkID0gYXR0ci0+YXR0dHlwaWQ7Ci0JCQkJKnR5cG5hbWUgPSBwc3RyZHVwKHR5cGVUeXBlTmFt ZSh0eXBlKSk7Ci0JCQkJUmVsZWFzZVN5c0NhY2hlKHR5cGUpOwotCQkJCXJldHVybiB0cnVlOwor CQkJCXR5cGlkID0gYXR0ci0+YXR0dHlwaWQ7CisKKwkJCQlpZiAoYXR0ci0+YXR0aXNkcm9wcGVk KQorCQkJCXsKKwkJCQkJZm91bmQgPSBmYWxzZTsKKwkJCQkJYnJlYWs7CisJCQkJfQorCQkJCWlm ICghdHlwZV9pc19yYW5nZSh0eXBpZCkpCisJCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkJKGVy cmNvZGUoRVJSQ09ERV9EQVRBVFlQRV9NSVNNQVRDSCksCisJCQkJCQkJIGVycm1zZygiY29sdW1u IFwiJXNcIiBpbiBXSVRIT1VUIE9WRVJMQVBTIGlzIG5vdCBhIHJhbmdlIHR5cGUiLCBjb2xuYW1l KSkpOworCQkJCWZvdW5kID0gdHJ1ZTsKKwkJCQlicmVhazsKIAkJCX0KIAkJfQogCX0KIAotCXJl dHVybiBmYWxzZTsKKwlpZiAoIWZvdW5kKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2Rl KEVSUkNPREVfVU5ERUZJTkVEX0NPTFVNTiksCisJCQkJIGVycm1zZygiY29sdW1uIFwiJXNcIiBu YW1lZCBpbiBrZXkgZG9lcyBub3QgZXhpc3QiLGNvbG5hbWUpKSk7CiB9CiAKIC8qCmRpZmYgLS1n aXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3dpdGhvdXRfb3ZlcmxhcHMub3V0IGIvc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC93aXRob3V0X292ZXJsYXBzLm91dAppbmRleCA0YjhhYmIw OC4uYTkxNmU1NmEgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvd2l0aG91 dF9vdmVybGFwcy5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC93aXRob3V0X292 ZXJsYXBzLm91dApAQCAtMTksNyArMTksNyBAQCBDUkVBVEUgVEFCTEUgdGVtcG9yYWxfcm5nICgK IAlpZCBJTlRFR0VSLAogCUNPTlNUUkFJTlQgdGVtcG9yYWxfcm5nX3BrIFBSSU1BUlkgS0VZIChp ZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKICk7Ci1FUlJPUjogIHJhbmdlIG9yIFBFUklP RCAidmFsaWRfYXQiIGluIFdJVEhPVVQgT1ZFUkxBUFMgZG9lcyBub3QgZXhpc3QKK0VSUk9SOiAg Y29sdW1uICJ2YWxpZF9hdCIgbmFtZWQgaW4ga2V5IGRvZXMgbm90IGV4aXN0CiAtLSBQSyB3aXRo IGEgbm9uLXJhbmdlIGNvbHVtbjoKIENSRUFURSBUQUJMRSB0ZW1wb3JhbF9ybmcgKAogCWlkIElO VEVHRVIsCkBAIC0yNyw2ICsyNyw4IEBAIENSRUFURSBUQUJMRSB0ZW1wb3JhbF9ybmcgKAogCUNP TlNUUkFJTlQgdGVtcG9yYWxfcm5nX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9V VCBPVkVSTEFQUykKICk7CiBFUlJPUjogIGNvbHVtbiAidmFsaWRfYXQiIGluIFdJVEhPVVQgT1ZF UkxBUFMgaXMgbm90IGEgcmFuZ2UgdHlwZQorTElORSAzOiAgdmFsaWRfYXQgVEVYVCwKKyAgICAg ICAgIF4KIC0tIFBLIHdpdGggb25lIGNvbHVtbiBwbHVzIGEgcmFuZ2U6CiBDUkVBVEUgVEFCTEUg dGVtcG9yYWxfcm5nICgKIAktLSBTaW5jZSB3ZSBjYW4ndCBkZXBlbmQgb24gaGF2aW5nIGJ0cmVl X2dpc3QgaGVyZSwKQEAgLTExMCw3ICsxMTIsNyBAQCBDUkVBVEUgVEFCTEUgdGVtcG9yYWxfcm5n MiAoCiAJaWQgSU5URUdFUiwKIAlDT05TVFJBSU5UIHRlbXBvcmFsX3JuZzJfdXEgVU5JUVVFIChp ZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKICk7Ci1FUlJPUjogIHJhbmdlIG9yIFBFUklP RCAidmFsaWRfYXQiIGluIFdJVEhPVVQgT1ZFUkxBUFMgZG9lcyBub3QgZXhpc3QKK0VSUk9SOiAg Y29sdW1uICJ2YWxpZF9hdCIgbmFtZWQgaW4ga2V5IGRvZXMgbm90IGV4aXN0CiAtLSBVTklRVUUg d2l0aCBhIG5vbi1yYW5nZSBjb2x1bW46CiBDUkVBVEUgVEFCTEUgdGVtcG9yYWxfcm5nMiAoCiAJ aWQgSU5URUdFUiwKQEAgLTExOCw2ICsxMjAsOCBAQCBDUkVBVEUgVEFCTEUgdGVtcG9yYWxfcm5n MiAoCiAJQ09OU1RSQUlOVCB0ZW1wb3JhbF9ybmcyX3VxIFVOSVFVRSAoaWQsIHZhbGlkX2F0IFdJ VEhPVVQgT1ZFUkxBUFMpCiApOwogRVJST1I6ICBjb2x1bW4gInZhbGlkX2F0IiBpbiBXSVRIT1VU IE9WRVJMQVBTIGlzIG5vdCBhIHJhbmdlIHR5cGUKK0xJTkUgMzogIHZhbGlkX2F0IFRFWFQsCisg ICAgICAgICBeCiAtLSBVTklRVUUgd2l0aCBvbmUgY29sdW1uIHBsdXMgYSByYW5nZToKIENSRUFU RSBUQUJMRSB0ZW1wb3JhbF9ybmcyICgKIAktLSBTaW5jZSB3ZSBjYW4ndCBkZXBlbmQgb24gaGF2 aW5nIGJ0cmVlX2dpc3QgaGVyZSwKLS0gCjIuMzQuMQoK --0000000000002b41e50608845fe4--