Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pcq4s-000566-HS for pgsql-hackers@arkaria.postgresql.org; Thu, 16 Mar 2023 16:03:42 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1pcq4r-0007Me-DP for pgsql-hackers@arkaria.postgresql.org; Thu, 16 Mar 2023 16:03:41 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pcq4q-0007Jm-Re for pgsql-hackers@lists.postgresql.org; Thu, 16 Mar 2023 16:03:41 +0000 Received: from mail-yb1-xb2d.google.com ([2607:f8b0:4864:20::b2d]) by makus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1pcq4o-00036w-8l for pgsql-hackers@lists.postgresql.org; Thu, 16 Mar 2023 16:03:39 +0000 Received: by mail-yb1-xb2d.google.com with SMTP id y5so2496680ybu.3 for ; Thu, 16 Mar 2023 09:03:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; t=1678982617; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=XVu9OhTQdQUKjE3LVJ5DhxzJV87Tqxa6R+MhQU+GRLY=; b=H9MaKxMxkxpaFWv6N4LQ60s2soX7EjOVmGc26p1U78f4hAWqC99nV+kRXCyo51MBVV 3VJtZdNym3rDcJEgaVI687fGD5N0yuN8M7juxI2zmK3HS0rQz2gzP9N/V1qEmLIF3eVn aXKuDKENWx8gQM7o8snrL9Bo/3m5cwIuOga322W8+XnTgmwGeYDEB8ZfxBbNmnn0A6xr VfkRZbSmNeMHwRuUYG06EEe8HwNIuc4AXeV3ZGtDdcPm88FIyeVjzciWRGY+/+NVJbH7 gR4y4OFuuK3bRgQsHJecczTAQarxK1rhnNsWVFctdyOkL5YflyWv3LJCJzUN9ZKXTNrS 5c5Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1678982617; 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=XVu9OhTQdQUKjE3LVJ5DhxzJV87Tqxa6R+MhQU+GRLY=; b=Me/zbpsU1Uu06gRZIamfsGzRbK7vPxUTyDGr+ojAVOcc7k69C1ZL015UtF01ykccwP W3Fej2Clgk6CwgGFlTmKooud1e62FXyyBC5PuZSDc72E8kg/Ff42axBAY8ZmSCWHAmYX eF9c//CoY7EibaEMzA894YbbR28Nrk/k89aL/iAN4iGa0JGwzswS6RdEeUeHzNwpOWLe Yl7DEB9CrkGbd8TagGzD0NlR62nxxYrYjiVImUCBQSdygmqaDJNYczcjhMSp6xqa0QHJ eAfw8N0NEC4eLNAPzPW7C7UI24coEGxxfE5geTDVX5EZB1TGM90ApoEkw+/4enRl1wyk gK0Q== X-Gm-Message-State: AO0yUKX18la3Kz4XfZZS2nxrZPber7HaCM0e6Px5wzkgSbsoh4VPOoYu ALo82EP6kW0OcZEGeBvelqV4ObfxHXaUaOZK/wFffwgMV5SBUg== X-Google-Smtp-Source: AK7set9a/bi261QB3+a8BT3yA3/PSYrSBB+epL1y0amOzGr66LX25rHxUnz6hACoGZT04jB4vmKKj8OgrtlsnbmI6Fo= X-Received: by 2002:a25:9c43:0:b0:94a:ebba:cba6 with SMTP id x3-20020a259c43000000b0094aebbacba6mr22776699ybo.9.1678982617449; Thu, 16 Mar 2023 09:03:37 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: =?UTF-8?B?w5ZuZGVyIEthbGFjxLE=?= Date: Thu, 16 Mar 2023 19:03:25 +0300 Message-ID: Subject: Re: Dropped and generated columns might cause wrong data on subs when REPLICA IDENTITY FULL To: "shiy.fnst@fujitsu.com" Cc: Amit Kapila , PostgreSQL Hackers Content-Type: multipart/mixed; boundary="0000000000007fded405f7069af2" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000007fded405f7069af2 Content-Type: multipart/alternative; boundary="0000000000007fded205f7069af0" --0000000000007fded205f7069af0 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi Amit, Shi Yu, > Generated column is introduced in PG12, and I reproduced generated column problem in PG12~PG15. > For dropped column problem, I reproduced it in PG10~PG15. (Logical replication was introduced in PG10) So, I'm planning to split the changes into two commits. The first one fixes for dropped columns, and the second one adds generated columns check/test. Is that the right approach for such a case? > and backpatch the fix for dropped column to PG10. Still, even the first commit fails to apply cleanly to PG12 (and below). What is the procedure here? Should I be creating multiple patches per version? Or does the committer prefer to handle the conflicts? Depending on your reply, I can work on the followup. I'm still attaching the dropped column patch for reference. Thanks, Onder shiy.fnst@fujitsu.com , 16 Mar 2023 Per, 13:38 tarihinde =C5=9Funu yazd=C4=B1: > On Thu, Mar 16, 2023 5:23 PM Amit Kapila wrote: > > > > On Mon, Mar 13, 2023 at 6:26=E2=80=AFPM =C3=96nder Kalac=C4=B1 > > wrote: > > > > > > Attaching v2 > > > > > > > Can we change the comment to: "Ignore dropped and generated columns as > > the publisher doesn't send those."? After your change, att =3D > > TupleDescAttr(slot1->tts_tupleDescriptor, attrnum); is done twice in > > the same function. > > > > In test cases, let's change the comment to: "The bug was that when the > > REPLICA IDENTITY FULL is used with dropped or generated columns, we > > fail to apply updates and deletes.". Also, I think we don't need to > > provide the email link as anyway commit message will have a link to > > the discussion. > > > > Did you check this in the back branches? > > > > I tried to reproduce this bug in backbranch. > > Generated column is introduced in PG12, and I reproduced generated column > problem > in PG12~PG15. > > For dropped column problem, I reproduced it in PG10~PG15. (Logical > replication > was introduced in PG10) > > So I think we should backpatch the fix for generated column to PG12, and > backpatch the fix for dropped column to PG10. > > Regards, > Shi Yu > --0000000000007fded205f7069af0 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi Amit, Shi Yu,

= > Generated column is introduced in PG12, and I reproduced generated col= umn problem
in PG12~PG15.
> For dropped column problem, I reprod= uced it in PG10~PG15. (Logical replication
was introduced in PG10)
=

So, I'm planning to split the changes into two commi= ts. The first one fixes
for dropped columns, and the second one a= dds generated columns check/test.

Is that the righ= t approach for such a case?

>= =C2=A0 and backpatch the fix for dropped column to PG10.

Still, even the first commit fails to apply cleanly to PG= 12 (and below).

What is the procedure here? Should= I be creating multiple patches per version?
Or does the committe= r=C2=A0prefer to handle the conflicts? Depending on your reply,
I= can work on the followup.

I'm still attaching= the dropped column patch for reference.


= Thanks,
Onder


shiy.fnst@fujitsu.com <shiy.fnst@fujitsu.com>, 16= Mar 2023 Per, 13:38 tarihinde =C5=9Funu yazd=C4=B1:
<= div>
On Thu, Mar 16, 2023 5:23 PM Amit Kapila <amit.kapila16@gmail.com> wrote:=
>
> On Mon, Mar 13, 2023 at 6:26=E2=80=AFPM =C3=96nder Kalac=C4=B1 <onderkalaci@gmail.c= om>
> wrote:
> >
> > Attaching v2
> >
>
> Can we change the comment to: "Ignore dropped and generated colum= ns as
> the publisher doesn't send those."? After your change, att = =3D
> TupleDescAttr(slot1->tts_tupleDescriptor, attrnum); is done twice i= n
> the same function.
>
> In test cases, let's change the comment to: "The bug was that= when the
> REPLICA IDENTITY FULL is used with dropped or generated columns, we > fail to apply updates and deletes.". Also, I think we don't n= eed to
> provide the email link as anyway commit message will have a link to > the discussion.
>
> Did you check this in the back branches?
>

I tried to reproduce this bug in backbranch.

Generated column is introduced in PG12, and I reproduced generated column p= roblem
in PG12~PG15.

For dropped column problem, I reproduced it in PG10~PG15. (Logical replicat= ion
was introduced in PG10)

So I think we should backpatch the fix for generated column to PG12, and backpatch the fix for dropped column to PG10.

Regards,
Shi Yu
--0000000000007fded205f7069af0-- --0000000000007fded405f7069af2 Content-Type: application/x-patch; name="v1-0001-Ignore-dropped-columns-when-REPLICA-IDENTITY-FULL.patch" Content-Disposition: attachment; filename="v1-0001-Ignore-dropped-columns-when-REPLICA-IDENTITY-FULL.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lfb9brby0 RnJvbSBkMjViMmZlYWMzYjI2NjQ2MDM0YmYzYWNlNmFiOTMwNTZjM2MyOWFmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBPbmRlciBLYWxhY2kgPG9uZGVya2FsYWNpQGdtYWlsLmNvbT4K RGF0ZTogVGh1LCAxNiBNYXIgMjAyMyAxODowNjo1NCArMDMwMApTdWJqZWN0OiBbUEFUQ0ggdjEg MS8yXSBJZ25vcmUgZHJvcHBlZCBjb2x1bW5zIHdoZW4gUkVQTElDQSBJREVOVElUWSBGVUxMCgpE cm9wcGVkIGNvbHVtbnMgYXJlIGZpbGxlZCB3aXRoIE5VTEwgdmFsdWVzIG9uIHNsb3Rfc3RvcmVf ZGF0YSgpCmJ1dCBub3Qgb24gdGFibGVfc2Nhbl9nZXRuZXh0c2xvdCgpLiBXaXRoIHRoaXMgY29t bWl0LCB3ZSBza2lwCnN1Y2ggY29sdW1ucyB3aGlsZSBjaGVja2luZyB0dXBsZSBlcXVhbGl0eS4K LS0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjUmVwbGljYXRpb24uYyB8ICA5ICsrKystCiBz cmMvdGVzdC9zdWJzY3JpcHRpb24vdC8xMDBfYnVncy5wbCAgICB8IDUxICsrKysrKysrKysrKysr KysrKysrKysrKysrCiAyIGZpbGVzIGNoYW5nZWQsIDU4IGluc2VydGlvbnMoKyksIDIgZGVsZXRp b25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1JlcGxpY2F0aW9u LmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUmVwbGljYXRpb24uYwppbmRleCBmYTg2Mjhl M2UxLi43YzhiMGQyNjY3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUmVw bGljYXRpb24uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUmVwbGljYXRpb24uYwpA QCAtMjg5LDYgKzI4OSwxMyBAQCB0dXBsZXNfZXF1YWwoVHVwbGVUYWJsZVNsb3QgKnNsb3QxLCBU dXBsZVRhYmxlU2xvdCAqc2xvdDIsCiAJCUZvcm1fcGdfYXR0cmlidXRlIGF0dDsKIAkJVHlwZUNh Y2hlRW50cnkgKnR5cGVudHJ5OwogCisJCS8qCisJCSAqIElnbm9yZSBkcm9wcGVkIGNvbHVtbnMg YXMgdGhlIHB1Ymxpc2hlciBkb2Vzbid0IHNlbmQgdGhvc2UKKwkJICovCisJCWF0dCA9IFR1cGxl RGVzY0F0dHIoc2xvdDEtPnR0c190dXBsZURlc2NyaXB0b3IsIGF0dHJudW0pOworCQlpZiAoYXR0 LT5hdHRpc2Ryb3BwZWQpCisJCQljb250aW51ZTsKKwogCQkvKgogCQkgKiBJZiBvbmUgdmFsdWUg aXMgTlVMTCBhbmQgb3RoZXIgaXMgbm90LCB0aGVuIHRoZXkgYXJlIGNlcnRhaW5seSBub3QKIAkJ ICogZXF1YWwKQEAgLTMwMiw4ICszMDksNiBAQCB0dXBsZXNfZXF1YWwoVHVwbGVUYWJsZVNsb3Qg KnNsb3QxLCBUdXBsZVRhYmxlU2xvdCAqc2xvdDIsCiAJCWlmIChzbG90MS0+dHRzX2lzbnVsbFth dHRybnVtXSB8fCBzbG90Mi0+dHRzX2lzbnVsbFthdHRybnVtXSkKIAkJCWNvbnRpbnVlOwogCi0J CWF0dCA9IFR1cGxlRGVzY0F0dHIoc2xvdDEtPnR0c190dXBsZURlc2NyaXB0b3IsIGF0dHJudW0p OwotCiAJCXR5cGVudHJ5ID0gZXFbYXR0cm51bV07CiAJCWlmICh0eXBlbnRyeSA9PSBOVUxMKQog CQl7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8xMDBfYnVncy5wbCBiL3Ny Yy90ZXN0L3N1YnNjcmlwdGlvbi90LzEwMF9idWdzLnBsCmluZGV4IDAzNjU3NmFjYWIuLjI1NTc0 NjA5NGMgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzEwMF9idWdzLnBsCisr KyBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzEwMF9idWdzLnBsCkBAIC0zNzMsNCArMzczLDU1 IEBAIGlzKCAkcmVzdWx0LCBxcSgxCiAkbm9kZV9wdWJsaXNoZXItPnN0b3AoJ2Zhc3QnKTsKICRu b2RlX3N1YnNjcmliZXItPnN0b3AoJ2Zhc3QnKTsKIAorIyBUaGUgYnVnIHdhcyB0aGF0IHdoZW4g dGhlIFJFUExJQ0EgSURFTlRJVFkgRlVMTCBpcyB1c2VkIHdpdGggZHJvcHBlZCBjb2x1bW5zLAor IyB3ZSBmYWlsIHRvIGFwcGx5IHVwZGF0ZXMgYW5kIGRlbGV0ZXMKK215ICRub2RlX3B1Ymxpc2hl cl9kX2NvbHMgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ25vZGVfcHVibGlzaGVy X2RfY29scycpOworJG5vZGVfcHVibGlzaGVyX2RfY29scy0+aW5pdChhbGxvd3Nfc3RyZWFtaW5n ID0+ICdsb2dpY2FsJyk7Ciskbm9kZV9wdWJsaXNoZXJfZF9jb2xzLT5zdGFydDsKKworbXkgJG5v ZGVfc3Vic2NyaWJlcl9kX2NvbHMgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ25v ZGVfc3Vic2NyaWJlcl9kX2NvbHMnKTsKKyRub2RlX3N1YnNjcmliZXJfZF9jb2xzLT5pbml0KGFs bG93c19zdHJlYW1pbmcgPT4gJ2xvZ2ljYWwnKTsKKyRub2RlX3N1YnNjcmliZXJfZF9jb2xzLT5z dGFydDsKKworJG5vZGVfcHVibGlzaGVyX2RfY29scy0+c2FmZV9wc3FsKAorCSdwb3N0Z3Jlcycs IHFxKAorCUNSRUFURSBUQUJMRSBkcm9wcGVkX2NvbHMgKGEgaW50LCBiX2Ryb3AgaW50LCBjIGlu dCk7CisJQUxURVIgVEFCTEUgZHJvcHBlZF9jb2xzIFJFUExJQ0EgSURFTlRJVFkgRlVMTDsKKwlD UkVBVEUgUFVCTElDQVRJT04gcHViX2Ryb3BwZWRfY29scyBGT1IgVEFCTEUgZHJvcHBlZF9jb2xz OworCS0tIHNvbWUgaW5pdGlhbCBkYXRhCisJSU5TRVJUIElOVE8gZHJvcHBlZF9jb2xzIFZBTFVF UyAoMSwgMSwgMSk7CispKTsKKworJG5vZGVfc3Vic2NyaWJlcl9kX2NvbHMtPnNhZmVfcHNxbCgK KwkncG9zdGdyZXMnLCBxcSgKKwkgQ1JFQVRFIFRBQkxFIGRyb3BwZWRfY29scyAoYSBpbnQsIGJf ZHJvcCBpbnQsIGMgaW50KTsKKykpOworCitteSAkcHVibGlzaGVyX2Nvbm5zdHJfZF9jb2xzID0g JG5vZGVfcHVibGlzaGVyX2RfY29scy0+Y29ubnN0ciAuICcgZGJuYW1lPXBvc3RncmVzJzsKKyRu b2RlX3N1YnNjcmliZXJfZF9jb2xzLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFNV QlNDUklQVElPTiBzdWJfZHJvcHBlZF9jb2xzIENPTk5FQ1RJT04gJyRwdWJsaXNoZXJfY29ubnN0 cl9kX2NvbHMnIFBVQkxJQ0FUSU9OIHB1Yl9kcm9wcGVkX2NvbHMiCispOworJG5vZGVfc3Vic2Ny aWJlcl9kX2NvbHMtPndhaXRfZm9yX3N1YnNjcmlwdGlvbl9zeW5jOworCiskbm9kZV9wdWJsaXNo ZXJfZF9jb2xzLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXEoCisJCUFMVEVSIFRBQkxFIGRy b3BwZWRfY29scyBEUk9QIENPTFVNTiBiX2Ryb3A7CispKTsKKyRub2RlX3N1YnNjcmliZXJfZF9j b2xzLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXEoCisJCUFMVEVSIFRBQkxFIGRyb3BwZWRf Y29scyBEUk9QIENPTFVNTiBiX2Ryb3A7CispKTsKKworJG5vZGVfcHVibGlzaGVyX2RfY29scy0+ c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFxKAorCQlVUERBVEUgZHJvcHBlZF9jb2xzIFNFVCBh ID0gMTAwOworKSk7Ciskbm9kZV9wdWJsaXNoZXJfZF9jb2xzLT53YWl0X2Zvcl9jYXRjaHVwKCdz dWJfZHJvcHBlZF9jb2xzJyk7CisKK2lzKCRub2RlX3N1YnNjcmliZXJfZF9jb2xzLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIGRyb3BwZWRfY29scyBXSEVSRSBh ID0gMTAwIiksCisJcXEoMSksICdyZXBsaWNhdGlvbiB3aXRoIFJJIEZVTEwgYW5kIGRyb3BwZWQg Y29sdW1ucycpOworCiskbm9kZV9wdWJsaXNoZXJfZF9jb2xzLT5zdG9wKCdmYXN0Jyk7Ciskbm9k ZV9zdWJzY3JpYmVyX2RfY29scy0+c3RvcCgnZmFzdCcpOworCiBkb25lX3Rlc3RpbmcoKTsKLS0g CjIuMzQuMQoK --0000000000007fded405f7069af2 Content-Type: application/x-patch; name="v1-0002-Ignore-generated-columns-when-REPLICA-IDENTITY-FU.patch" Content-Disposition: attachment; filename="v1-0002-Ignore-generated-columns-when-REPLICA-IDENTITY-FU.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lfb9c2da1 RnJvbSBiODRmMzhkZWFjMWIwMmYwNTdiZmMwNWZmODY4ZmJmNGE2MjFiMThiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBPbmRlciBLYWxhY2kgPG9uZGVya2FsYWNpQGdtYWlsLmNvbT4K RGF0ZTogVGh1LCAxNiBNYXIgMjAyMyAxODoxODozNyArMDMwMApTdWJqZWN0OiBbUEFUQ0ggdjEg Mi8yXSBJZ25vcmUgZ2VuZXJhdGVkIGNvbHVtbnMgd2hlbiBSRVBMSUNBIElERU5USVRZIEZVTEwK CkdlbmVyYXRlZCBjb2x1bW5zIGFyZSBmaWxsZWQgd2l0aCBOVUxMIHZhbHVlcyBvbiBzbG90X3N0 b3JlX2RhdGEoKQpidXQgbm90IG9uIHRhYmxlX3NjYW5fZ2V0bmV4dHNsb3QoKS4gV2l0aCB0aGlz IGNvbW1pdCwgd2Ugc2tpcApzdWNoIGNvbHVtbnMgd2hpbGUgY2hlY2tpbmcgdHVwbGUgZXF1YWxp dHkuCi0tLQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1JlcGxpY2F0aW9uLmMgfCAgNSArKyst LQogc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMTAwX2J1Z3MucGwgICAgfCAxMCArKysrKysrKyst CiAyIGZpbGVzIGNoYW5nZWQsIDEyIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCgpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1JlcGxpY2F0aW9uLmMgYi9zcmMvYmFj a2VuZC9leGVjdXRvci9leGVjUmVwbGljYXRpb24uYwppbmRleCA3YzhiMGQyNjY3Li40ODI4MDY5 NjFhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUmVwbGljYXRpb24uYwor KysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUmVwbGljYXRpb24uYwpAQCAtMjkwLDEwICsy OTAsMTEgQEAgdHVwbGVzX2VxdWFsKFR1cGxlVGFibGVTbG90ICpzbG90MSwgVHVwbGVUYWJsZVNs b3QgKnNsb3QyLAogCQlUeXBlQ2FjaGVFbnRyeSAqdHlwZW50cnk7CiAKIAkJLyoKLQkJICogSWdu b3JlIGRyb3BwZWQgY29sdW1ucyBhcyB0aGUgcHVibGlzaGVyIGRvZXNuJ3Qgc2VuZCB0aG9zZQor CQkgKiBJZ25vcmUgZHJvcHBlZCBhbmQgZ2VuZXJhdGVkIGNvbHVtbnMgYXMgdGhlIHB1Ymxpc2hl ciBkb2Vzbid0CisJCSAqIHNlbmQgdGhvc2UKIAkJICovCiAJCWF0dCA9IFR1cGxlRGVzY0F0dHIo c2xvdDEtPnR0c190dXBsZURlc2NyaXB0b3IsIGF0dHJudW0pOwotCQlpZiAoYXR0LT5hdHRpc2Ry b3BwZWQpCisJCWlmIChhdHQtPmF0dGlzZHJvcHBlZCB8fCBhdHQtPmF0dGdlbmVyYXRlZCkKIAkJ CWNvbnRpbnVlOwogCiAJCS8qCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8x MDBfYnVncy5wbCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzEwMF9idWdzLnBsCmluZGV4IDI1 NTc0NjA5NGMuLjk2MTI2NDI4ZjMgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90 LzEwMF9idWdzLnBsCisrKyBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzEwMF9idWdzLnBsCkBA IC0zODcsMTQgKzM4NywxOCBAQCAkbm9kZV9wdWJsaXNoZXJfZF9jb2xzLT5zYWZlX3BzcWwoCiAJ J3Bvc3RncmVzJywgcXEoCiAJQ1JFQVRFIFRBQkxFIGRyb3BwZWRfY29scyAoYSBpbnQsIGJfZHJv cCBpbnQsIGMgaW50KTsKIAlBTFRFUiBUQUJMRSBkcm9wcGVkX2NvbHMgUkVQTElDQSBJREVOVElU WSBGVUxMOwotCUNSRUFURSBQVUJMSUNBVElPTiBwdWJfZHJvcHBlZF9jb2xzIEZPUiBUQUJMRSBk cm9wcGVkX2NvbHM7CisJQ1JFQVRFIFRBQkxFIGdlbmVyYXRlZF9jb2xzIChhIGludCwgYl9nZW4g aW50IEdFTkVSQVRFRCBBTFdBWVMgQVMgKDUgKiBhKSBTVE9SRUQsIGMgaW50KTsKKwlBTFRFUiBU QUJMRSBnZW5lcmF0ZWRfY29scyBSRVBMSUNBIElERU5USVRZIEZVTEw7CisJQ1JFQVRFIFBVQkxJ Q0FUSU9OIHB1Yl9kcm9wcGVkX2NvbHMgRk9SIFRBQkxFIGRyb3BwZWRfY29scywgZ2VuZXJhdGVk X2NvbHM7CiAJLS0gc29tZSBpbml0aWFsIGRhdGEKIAlJTlNFUlQgSU5UTyBkcm9wcGVkX2NvbHMg VkFMVUVTICgxLCAxLCAxKTsKKwlJTlNFUlQgSU5UTyBnZW5lcmF0ZWRfY29scyAoYSxjKSBWQUxV RVMgKDEsIDEpOwogKSk7CiAKICRub2RlX3N1YnNjcmliZXJfZF9jb2xzLT5zYWZlX3BzcWwoCiAJ J3Bvc3RncmVzJywgcXEoCiAJIENSRUFURSBUQUJMRSBkcm9wcGVkX2NvbHMgKGEgaW50LCBiX2Ry b3AgaW50LCBjIGludCk7CisJIENSRUFURSBUQUJMRSBnZW5lcmF0ZWRfY29scyAoYSBpbnQsIGJf Z2VuIGludCBHRU5FUkFURUQgQUxXQVlTIEFTICg1ICogYSkgU1RPUkVELCBjIGludCk7CiApKTsK IAogbXkgJHB1Ymxpc2hlcl9jb25uc3RyX2RfY29scyA9ICRub2RlX3B1Ymxpc2hlcl9kX2NvbHMt PmNvbm5zdHIgLiAnIGRibmFtZT1wb3N0Z3Jlcyc7CkBAIC00MTUsMTIgKzQxOSwxNiBAQCAkbm9k ZV9zdWJzY3JpYmVyX2RfY29scy0+c2FmZV9wc3FsKAogJG5vZGVfcHVibGlzaGVyX2RfY29scy0+ c2FmZV9wc3FsKAogCSdwb3N0Z3JlcycsIHFxKAogCQlVUERBVEUgZHJvcHBlZF9jb2xzIFNFVCBh ID0gMTAwOworCQlVUERBVEUgZ2VuZXJhdGVkX2NvbHMgU0VUIGEgPSAxMDA7CiApKTsKICRub2Rl X3B1Ymxpc2hlcl9kX2NvbHMtPndhaXRfZm9yX2NhdGNodXAoJ3N1Yl9kcm9wcGVkX2NvbHMnKTsK IAogaXMoJG5vZGVfc3Vic2NyaWJlcl9kX2NvbHMtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VM RUNUIGNvdW50KCopIEZST00gZHJvcHBlZF9jb2xzIFdIRVJFIGEgPSAxMDAiKSwKIAlxcSgxKSwg J3JlcGxpY2F0aW9uIHdpdGggUkkgRlVMTCBhbmQgZHJvcHBlZCBjb2x1bW5zJyk7CiAKK2lzKCRu b2RlX3N1YnNjcmliZXJfZF9jb2xzLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3Vu dCgqKSBGUk9NIGdlbmVyYXRlZF9jb2xzIFdIRVJFIGEgPSAxMDAiKSwKKwlxcSgxKSwgJ3JlcGxp Y2F0aW9uIHdpdGggUkkgRlVMTCBhbmQgZ2VuZXJhdGVkIGNvbHVtbnMnKTsKKwogJG5vZGVfcHVi bGlzaGVyX2RfY29scy0+c3RvcCgnZmFzdCcpOwogJG5vZGVfc3Vic2NyaWJlcl9kX2NvbHMtPnN0 b3AoJ2Zhc3QnKTsKIAotLSAKMi4zNC4xCgo= --0000000000007fded405f7069af2--