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 1mbLIr-0006Y6-Pa for pgsql-hackers@arkaria.postgresql.org; Fri, 15 Oct 2021 11:23:10 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1mbLIp-0001q0-Fy for pgsql-hackers@arkaria.postgresql.org; Fri, 15 Oct 2021 11:23:07 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1mbLIp-0001pr-0g for pgsql-hackers@lists.postgresql.org; Fri, 15 Oct 2021 11:23:07 +0000 Received: from esa2.fujitsucc.c3s2.iphmx.com ([68.232.152.246]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1mbLIf-0006DR-Qc for pgsql-hackers@lists.postgresql.org; Fri, 15 Oct 2021 11:23:06 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=fujitsu.com; i=@fujitsu.com; q=dns/txt; s=fj1; t=1634296978; x=1665832978; h=from:to:cc:subject:date:message-id:mime-version; bh=ZXjGm4A9Od9M4FXgdgmMLPSQw4Q/Qwd5DpQln2QbY80=; b=lZOcygu2fdPiuBjYl8Lnk57umwgi6+lHmin4JSHPY/KFf6fujvtTFecp A5CCL+YDEzPgaIg0YJFJpgZMIzteZsy7xy7vzirJyy4AtJFUWVwmUOrJs DLJaU2NsKwqV3PmycdZOE4j85h8XH1b6pPS9+9xsdUylv99SidrpYyt11 oU47yku/onyWM8dfV/f/L/hGQOakgIr9iZEdEHqp3nW9XNpjDvbg0S8Sg iS+pViBYtk2ON/OT3DhstN0Ijy6Iryi2ANaZ40Hczu1FaIF0wv8XdLSQQ c3ZuEZqMsz2hYVYd6xtDa3VUA+XgOlNny4uFwp6JEI7MEeZloY6WZ+Y/A w==; X-IronPort-AV: E=McAfee;i="6200,9189,10137"; a="49736709" X-IronPort-AV: E=Sophos;i="5.85,375,1624287600"; d="scan'208,223";a="49736709" Received: from mail-ty1jpn01lp2059.outbound.protection.outlook.com (HELO JPN01-TY1-obe.outbound.protection.outlook.com) ([104.47.93.59]) by ob1.fujitsucc.c3s2.iphmx.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 15 Oct 2021 20:22:53 +0900 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=h0fVIm8FU1SWGqHaMYafsXGo7Fien2UkJqgEfw9bjQacVYEG4TAGuo+C35SwvKqn1LFkCr5j1SEEaxTbBHLah+goHeiJa8SvF8xK7zXZpky0l2iV8YJkagTEcp2b1Bb3xx2SP4U2DkrKlJHjJHLJB9rtoBG3jvhSokn7dTWJXSIdO+GI3GzqRQnIO6QSOPZz8oTw9nP/c3ghwxLeLiJBjCL2Sa9nqqBWnDvZ+vhw7QnY5y/Jx6uVIpMw6QiFZz2RfXC2DYOdyvrkGy+/gwh7ys1t+c/dHOjz8ABQnHlKj23viix7CEV5GQ+gsYdEDBLWsj3T1aqttDje2RMUvWqNKA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=oiHbgL5mouCFE7zsxFE/5Nqg4s3fOSOfGlRXTa6kHOk=; b=R+AqbnpWLf+6ks20+ys5rDDZvxPMA6AHYHH+94vHEPeNQy1KC3x42bweXL6RJq1W+P9JiZpv/uoAc7VWrJMWxCBeLZOjeuIDUaek22Fi0Y8jkw0XL48n0IQ2FumdvGZFDUiuogPCh3dnyzu1ihl+p7Tbed1FpIqNt4lZ6O8TppXg9PL3ikjJzO/vgk5nXo2GUw1KoIqYDrldGqGkFjNnIR4hJjaBAbJkaIUImwEWTOk4TlKgVhq8sBF2DOnrLeBfgkd2bHDFUcAEcPiqY5/MpiokM+IcndbFyM6q+rnp3eGjJ98ZPg4S29LPHBnb/E58MJbiNa30jiASOMQ0bBU8gQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=fujitsu.com; dmarc=pass action=none header.from=fujitsu.com; dkim=pass header.d=fujitsu.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fujitsu.onmicrosoft.com; s=selector2-fujitsu-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=oiHbgL5mouCFE7zsxFE/5Nqg4s3fOSOfGlRXTa6kHOk=; b=K+aeYn8V14gFQDq+Sf9lnMXycBivCURJSALl8sH8LLeERdCmYyexJ5bAezxnsJFj0gVfu44VnickcbOuTZ7ZVkvFVpxkpVQUSPonPyVba3l3CArxj1lWdVuxepfO3SzXZp+nSpwd+/DCooRGfl7bGp/1K5hWGmqQ2uQw+itLC5Q= Received: from OS0PR01MB5716.jpnprd01.prod.outlook.com (2603:1096:604:bb::12) by OS3PR01MB6951.jpnprd01.prod.outlook.com (2603:1096:604:120::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4608.15; Fri, 15 Oct 2021 11:22:50 +0000 Received: from OS0PR01MB5716.jpnprd01.prod.outlook.com ([fe80::4c54:d316:bbda:bd8e]) by OS0PR01MB5716.jpnprd01.prod.outlook.com ([fe80::4c54:d316:bbda:bd8e%6]) with mapi id 15.20.4608.017; Fri, 15 Oct 2021 11:22:50 +0000 From: "houzj.fnst@fujitsu.com" To: "pgsql-hackers@lists.postgresql.org" CC: Greg Nancarrow Subject: Data is copied twice when specifying both child and parent table in publication Thread-Topic: Data is copied twice when specifying both child and parent table in publication Thread-Index: AdfBtleBGdaIRg2YQ+6N9Opw3xhbWg== Date: Fri, 15 Oct 2021 11:22:50 +0000 Message-ID: Accept-Language: ja-JP, en-US Content-Language: ja-JP X-MS-Has-Attach: yes X-MS-TNEF-Correlator: authentication-results: lists.postgresql.org; dkim=none (message not signed) header.d=none;lists.postgresql.org; dmarc=none action=none header.from=fujitsu.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 7d38f448-65a8-4da1-0e56-08d98fce1f76 x-ms-traffictypediagnostic: OS3PR01MB6951: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:8882; x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 6KULTWlh6qsVWfFYRe0+laRfYoydmW3+NgpoQNOtu5MBXblYmeAvvzQ3sfDBuNiw5hlbcP4jDXFjB0K9YY01dHmTAV3wZb0VoWzdMGbfjgqtggoIeQGot0psJ3ybSwYjFhH1WWQVeKKYPYqYNp9HMBtE7c8oWjbsLlwRnGfh82VGgphhtcIevuQLPmcGVAbFOXVe/UeR7BJAwgeEOVJpE6pr9xsUveJ6SNEvBUbAuu6+xWJraWnQbtlArCEw9xCqE/2O0d2QVCdXOlvUnphFBJoztvbkQPp4h4mhxP8RTVXqvxdkGzHzxG/rh1oHQUyHOiQChUlP9qH2n3QDsGvI7Vgt4KYiZfEdkB+sjfpp2CaW7Su0yppIzl22hEo4qRXnzcSu1HTI1yE8e0jEu3gfR1WxGlYJHsz/rEpd7YngaYS48Ey0QVL9jjS5oiiwZZBTZEaLOLAv0SZIXCcJXo0VQ+CMfE6+Fc669AWDgHvnj+U9SCs2NdNdmshYbdk/fm4jw7+CjG8qrzIhkIpS+nWl/VRatjxPSvinOpMTFgC3Kk0xTitMEmJhO87dpcWKDZE4lZb3bhgx5JgQLyoZU3IKO8ibJlv0EaPLM3FWMQRn8Q8T8TvWyITUg6sJjILI9nUXoWOsw8gQ4d5DnjQafLkWF7CpUT5ng9HNIKw/Hkn3V+IeNJknaz+mKbCoM5F5Q1R66jtOPoz66W4VIBKGGKPqghho/tCpTVjqMeNC36goTfZnjJxOoBQg5giGwYGcVb2Gn3XXFOqVsoqcuR/dFiRcbShfh6vpOu3xtP+RaEMgIsA= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:OS0PR01MB5716.jpnprd01.prod.outlook.com;PTR:;CAT:NONE;SFS:(4636009)(366004)(7696005)(8936002)(38070700005)(83380400001)(76116006)(66446008)(66556008)(66476007)(64756008)(316002)(66946007)(508600001)(966005)(8676002)(52536014)(33656002)(26005)(4326008)(5660300002)(9686003)(6916009)(85182001)(2906002)(82960400001)(38100700002)(122000001)(71200400001)(86362001)(6506007)(186003)(99936003)(55016002);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-2022-jp?B?WG1kem83V3hlcUk3TXJRM2wwaW5jQm9MaUM5ZkdTR2Uza0F3Z1dJOENu?= =?iso-2022-jp?B?dDN5RkFCeHJpTHpMQ0Y2aFRsbzBPdUQ0YWl2RXEyK1ZuU2Vxb2FlMXVH?= =?iso-2022-jp?B?SHlrSGNTYUVYSmpQMUNLZHlDenZSRVIrWUdGYy9ZRG9ZazFjSzZUV0NX?= =?iso-2022-jp?B?a0VmSk9TbUE4dGlaVXdlOU51N2kwdmcvUVdNL0w5UTYyOThXaGJ3dWJN?= =?iso-2022-jp?B?NkRFbDhhaERRYWdhT1VIOGRPZiszUndpMjIvSnlhMldjR2RqbzVIaWVQ?= =?iso-2022-jp?B?VVpMbzhwZ0hKaDNpQ053MlYxczhmMXlGd3cxRWxab2xPL01WUURXRGdN?= =?iso-2022-jp?B?VXBSQzB5MzBUZDV5OG80SmViK1J3SVRQZkRJZU0zVEovYm9TZ1V6dFJD?= =?iso-2022-jp?B?WS9mUGFyUXpPVFgyZ3djZ0p2aURianpSSy9sb2t6cTRGZitEMHV6eFgz?= =?iso-2022-jp?B?MTgwaUR6c3RhT200dFNOVFAvMERxeG5yV1F3bnZKWG5RcCt6RXFiUFFo?= =?iso-2022-jp?B?MDNONlFldDNzRGl2QUNRamN3ZUJPWXlqVDFOMFVScDVsMzJjNU05OFBq?= =?iso-2022-jp?B?cDJCc0M1OVF5SWZibm5peWtSWEVSb2RNSWJOZXY3NS9Tck1nQU5taHBK?= =?iso-2022-jp?B?Mzl6Vkg1RWJHS0E2Y3N0NndKRittOTZISlQ5cE8wM05aaEhrRkNMMkp6?= =?iso-2022-jp?B?YjBOSmtXRUZqV2d0OUFkL0ZRTm5zZ2didys2eEc0TDNDOTlJdFpLL21z?= =?iso-2022-jp?B?YnptRlZFYm5aWTZndXJDVWVnMnFFa2V0bnJrWWFpcm83Q01FeHo2a0c0?= =?iso-2022-jp?B?bnpRMVA4YzJWa0VKWnlkTjhDSTJnQmdtblpsSEZpT2hCd1hhSmtMS1Bh?= =?iso-2022-jp?B?ZmRxL1hibnMxdUZIOTEvZEFXbUZsbGdNeUlzUmNnSlNsZmNTdnJSM0JR?= =?iso-2022-jp?B?UnNEVnFUUEZaNmJmeG9sU1hyVVdEVE9reGhOMHd1TEdDS01pYWFhck1r?= =?iso-2022-jp?B?SkdwZTYwK0w5M3pqajU4RFM1azVnd0tLZFFWTnk4YnJTeC8wT1FNWFJS?= =?iso-2022-jp?B?L21PakhmVmJ3ZkxVSUlpYXdmeWJGVThGV0VoRVY3QUd1TXJXYW9LRnZ6?= =?iso-2022-jp?B?cHpEQzRxcHF0R1c3YW5NdXR5OVNCdk9WT0d4Z285S2Z6TzhEUUllWnJx?= =?iso-2022-jp?B?SHh1RzhPUkpvK0xpREdPbGdvNVlPNjE1OHhTUU1td2x1akJzNi84OCts?= =?iso-2022-jp?B?VXpaQTNaS3Nra0dKcWNIMkM2dE5tcUFNSm1uaUErdUc0ck51WkZEblRn?= =?iso-2022-jp?B?aHBZanE5b0ZjVUwyQzRyWktMTndsVmtQQTg4b0o3ajFtOWMvM0xHbkxa?= =?iso-2022-jp?B?SW5YbHpiMmxTdlRCTFpXODBOYXlIMUJoR3E2c0xSektBZ05ORjYzWmEr?= =?iso-2022-jp?B?R2dUc0FvUDNVTGVsUnQ0OWNobzBxejFQM2NWNDg2SnA3VXVLRE9henZC?= =?iso-2022-jp?B?VXJHVnRReGp1MnpDbE4xMlR3RHR3NW1kYWtGM3VCdk5KM0VnV0RFMlZz?= =?iso-2022-jp?B?VHYzQUsxVUFJRWR4Q2pNL1Y1alZDUHUxOHQwc1dTcUFyL1lxZ0FWZm5q?= =?iso-2022-jp?B?ZEV6dDJvZTlZV1lraytYS2ZYL01zNGJKM2MwYlY3bG1xWTJiVmtSbE92?= =?iso-2022-jp?B?OGNtK2xtZmZHNTMzNldHSzdlUWJXOS80L3FLMG1Wb3ZBV0o5Z3Y3K05M?= =?iso-2022-jp?B?ZnZwRGw3RUxMVU1kcUdxTEdpb2tRSVh3SFBTSTBEbWYyMmViOEMyeWYy?= =?iso-2022-jp?B?cDlKVlhFbDg4RkZvbURzNnNEMlNZeGxQOTVDdmdmV3lzMk0vaitpNnN2?= =?iso-2022-jp?B?V3piQXpoZ3g3UGRpSnZPQWZJS2c3L2lvcFV5YWpqdTEyMmJHWVdiZHRY?= x-ms-exchange-transport-forked: True Content-Type: multipart/mixed; boundary="_002_OS0PR01MB57167F45D481F78CDC5986F794B99OS0PR01MB5716jpnp_" MIME-Version: 1.0 X-OriginatorOrg: fujitsu.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: OS0PR01MB5716.jpnprd01.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 7d38f448-65a8-4da1-0e56-08d98fce1f76 X-MS-Exchange-CrossTenant-originalarrivaltime: 15 Oct 2021 11:22:50.2227 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: a19f121d-81e1-4858-a9d8-736e267fd4c7 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: kbUAxvRkwABXxUNZlKIiaCvxx6m2dLOge+6c/0pjZJw1+5ELAUuQ+yqHWgcCnaxNlI7W1nfqZEd4c5jpMLIa7g== X-MS-Exchange-Transport-CrossTenantHeadersStamped: OS3PR01MB6951 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --_002_OS0PR01MB57167F45D481F78CDC5986F794B99OS0PR01MB5716jpnp_ Content-Type: text/plain; charset="iso-2022-jp" Content-Transfer-Encoding: quoted-printable Hi, In another logical replication related thread[1], my colleague Greg found t= hat if publish_via_partition_root is true, then the child table's data will be copied twice when adding both child and parent table to the publication. Example: ----- Pub: create table tbl1 (a int) partition by range (a); create table tbl1_part1 partition of tbl1 for values from (1) to (10); create table tbl1_part2 partition of tbl1 for values from (10) to (20); create publication pub for table tbl1, tbl1_part1 with (publish_via_partiti= on_root=3Don); insert into tbl1_part1 values(1); Sub: create table tbl1 (a int) partition by range (a); create table tbl1_part1 partition of tbl1 for values from (1) to (10); create table tbl1_part2 partition of tbl1 for values from (10) to (20); create subscription sub CONNECTION 'dbname=3Dpostgres port=3D10000' publica= tion pub; -- data is copied twice select * from tbl1_part1; a --- 1 1 ----- The reason is that the subscriber will fetch the table list from publisher using the following sql[2] and the subscriber will execute table synchronization for each table in the query results in this case. But tbl1_part1 is a partition of tbl1, so the data of tbl1_part1 was copied twi= ce. [2] select * from pg_publication_tables; pubname | schemaname | tablename ---------+------------+------------ pub | public | tbl1 pub | public | tbl1_part1 IMO, it looks like a bug and it's more natural to only execute the table synchronization for the parent table in the above case. Because as the docu= ment said: if publish_via_partition_root is true, "changes in a partitioned tabl= e (or on its partitions) contained in the publication will be published using= the identity and schema of the partitioned table rather than that of the indivi= dual partitions that are actually changed;" To fix it, I think we should fix function GetPublicationRelations which generate data for the view pg_publication_tables and make it only show the parent table if publish_via_partition_root is true. And for other future feature like schema level publication, we can also follow this to exclude partitions if their parent is specified by FOR TABLE in the same publicatio= n. Attach a patch to fix it. Thoughts ? [1] https://www.postgresql.org/message-id/CAJcOf-eBhDUT2J5zs8Z0qEMiZUdhinX%= 2BbuGX3GN4V83fPnZV3Q%40mail.gmail.com Best regards, Hou zhijie --_002_OS0PR01MB57167F45D481F78CDC5986F794B99OS0PR01MB5716jpnp_ Content-Type: application/octet-stream; name="0001-fix-double-publish.patch" Content-Description: 0001-fix-double-publish.patch Content-Disposition: attachment; filename="0001-fix-double-publish.patch"; size=7367; creation-date="Fri, 15 Oct 2021 10:57:00 GMT"; modification-date="Fri, 15 Oct 2021 10:57:00 GMT" Content-Transfer-Encoding: base64 RnJvbSBhZjM4ZGUyNTFhYzVmYjMyMWYxOTI3M2VjMDc5ZWFjM2YwOGY0ZjA4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiaG91emouZm5zdCIgPGhvdXpqLmZuc3RAZnVqaXRzdS5jb20+ CkRhdGU6IEZyaSwgMTUgT2N0IDIwMjEgMTg6MjM6MzAgKzA4MDAKU3ViamVjdDogW1BBVENIXSBm aXggZG91YmxlIHB1Ymxpc2gKCmlmIHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290IGlzIHRydWUs IHRoZW4gdGhlIGNoaWxkIHRhYmxlJ3MgZGF0YSB3aWxsIGJlCmNvcGllZCB0d2ljZSBpZiBhZGRp bmcgYm90aCBjaGlsZCBhbmQgcGFyZW50IHRhYmxlIHRvIHRoZSBwdWJsaWNhdGlvbi4gVGhlCnJl YXNvbiBpcyB0aGF0IHRoZSBzdWJzY3JpYmVyIHdpbGwgZmV0Y2ggdGhlIHRhYmxlIGxpc3QgZnJv bSBwdWJsaXNoZXIncwpwZ19wdWJsaWNhdGlvbl90YWJsZXMgdmlldyB0byBkbyB0aGUgdGFibGUg c3luY2hyb25pemF0aW9uLiBCdXQgdGhlIHZpZXcgYWx3YXlzCnNob3cgYm90aCBjaGlsZCBhbmQg cGFyZW50IHRhYmxlIHdoaWNoIGNhdXNlIHRoZSBleHRyYSBzeW5jaHJvbml6YXRpb24KZm9yIHRo ZSBjaGlsZCB0YWJsZS4KCkZpeCBpdCBieSBtYWtpbmcgcGdfcHVibGljYXRpb25fdGFibGVzIG9u bHkgc2hvdyBwYXJlbnQgdGFibGUgaWYgYm90aCBwYXJlbnQKYW5kIGNoaWxkIGV4aXN0cyBpbiB0 aGUgcHVibGljYXRpb24uCgotLS0KIHNyYy9iYWNrZW5kL2NhdGFsb2cvcGdfcHVibGljYXRpb24u YyAgICAgIHwgNTEgKysrKysrKysrKysrKysrKysrKysrLS0KIHNyYy9iYWNrZW5kL2NvbW1hbmRz L3B1YmxpY2F0aW9uY21kcy5jICAgIHwgIDggKystLQogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19w dWJsaWNhdGlvbi5oICAgICAgfCAgMyArLQogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wdWJs aWNhdGlvbi5vdXQgfCAgOSArKysrCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9wdWJsaWNhdGlvbi5z cWwgICAgICB8ICA0ICsrCiA1IGZpbGVzIGNoYW5nZWQsIDY3IGluc2VydGlvbnMoKyksIDggZGVs ZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19wdWJsaWNhdGlv bi5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5jCmluZGV4IDljZDBjODJm OTMuLjhmMDM5NTk5ZWUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfcHVibGlj YXRpb24uYworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmMKQEAgLTI5 MSwxMSArMjkxLDE4IEBAIEdldFJlbGF0aW9uUHVibGljYXRpb25zKE9pZCByZWxpZCkKICAqCiAg KiBUaGlzIHNob3VsZCBvbmx5IGJlIHVzZWQgRk9SIFRBQkxFIHB1YmxpY2F0aW9ucywgdGhlIEZP UiBBTEwgVEFCTEVTCiAgKiBzaG91bGQgdXNlIEdldEFsbFRhYmxlc1B1YmxpY2F0aW9uUmVsYXRp b25zKCkuCisgKgorICogSWYgcHVidmlhcm9vdCBpcyB0cnVlLCB3ZSBtdXN0IGV4Y2x1ZGUgcGFy dGl0aW9ucyBpbiBmYXZvciBvZiBpbmNsdWRpbmcgdGhlCisgKiByb290IHBhcnRpdGlvbmVkIHRh Ymxlcy4KICAqLwogTGlzdCAqCi1HZXRQdWJsaWNhdGlvblJlbGF0aW9ucyhPaWQgcHViaWQsIFB1 YmxpY2F0aW9uUGFydE9wdCBwdWJfcGFydG9wdCkKK0dldFB1YmxpY2F0aW9uUmVsYXRpb25zKE9p ZCBwdWJpZCwgUHVibGljYXRpb25QYXJ0T3B0IHB1Yl9wYXJ0b3B0LAorCQkJCQkJYm9vbCBwdWJ2 aWFyb290KQogewogCUxpc3QJICAgKnJlc3VsdDsKKwlMaXN0CSAgICpyZWxpZHM7CisJTGlzdENl bGwgICAqbGM7CisJTGlzdENlbGwgICAqbGMyOwogCVJlbGF0aW9uCXB1YnJlbHNyZWw7CiAJU2Nh bktleURhdGEgc2NhbmtleTsKIAlTeXNTY2FuRGVzYyBzY2FuOwpAQCAtMzEyLDE5ICszMTksNTQg QEAgR2V0UHVibGljYXRpb25SZWxhdGlvbnMoT2lkIHB1YmlkLCBQdWJsaWNhdGlvblBhcnRPcHQg cHViX3BhcnRvcHQpCiAJc2NhbiA9IHN5c3RhYmxlX2JlZ2luc2NhbihwdWJyZWxzcmVsLCBQdWJs aWNhdGlvblJlbFBycmVsaWRQcnB1YmlkSW5kZXhJZCwKIAkJCQkJCQkgIHRydWUsIE5VTEwsIDEs ICZzY2Fua2V5KTsKIAotCXJlc3VsdCA9IE5JTDsKKwlyZXN1bHQgPSByZWxpZHMgPSBOSUw7CisK IAl3aGlsZSAoSGVhcFR1cGxlSXNWYWxpZCh0dXAgPSBzeXN0YWJsZV9nZXRuZXh0KHNjYW4pKSkK IAl7CiAJCUZvcm1fcGdfcHVibGljYXRpb25fcmVsIHB1YnJlbDsKIAogCQlwdWJyZWwgPSAoRm9y bV9wZ19wdWJsaWNhdGlvbl9yZWwpIEdFVFNUUlVDVCh0dXApOwotCQlyZXN1bHQgPSBHZXRQdWJQ YXJ0aXRpb25PcHRpb25SZWxhdGlvbnMocmVzdWx0LCBwdWJfcGFydG9wdCwKKwkJcmVsaWRzID0g R2V0UHViUGFydGl0aW9uT3B0aW9uUmVsYXRpb25zKHJlbGlkcywgcHViX3BhcnRvcHQsCiAJCQkJ CQkJCQkJCQlwdWJyZWwtPnBycmVsaWQpOwogCX0KIAogCXN5c3RhYmxlX2VuZHNjYW4oc2Nhbik7 CiAJdGFibGVfY2xvc2UocHVicmVsc3JlbCwgQWNjZXNzU2hhcmVMb2NrKTsKIAorCWlmICghcHVi dmlhcm9vdCkKKwkJcmV0dXJuIHJlbGlkczsKKworCWZvcmVhY2gobGMsIHJlbGlkcykKKwl7CisJ CWJvb2wJCXNraXAgPSBmYWxzZTsKKwkJTGlzdAkgICAqYW5jZXN0b3JzID0gTklMOworCQlPaWQJ CQlyZWxpZCA9IGxmaXJzdF9vaWQobGMpOworCisJCS8qCisJCSAqIEZpbHRlciBvdXQgdGhlIHBh cnRpdGlvbnMgd2hvc2UgcGFyZW50IHRhYmxlcyB3YXMgYWxzbyBzcGVjaWZpZWQgaW4KKwkJICog dGhlIHB1YmxpY2F0aW9uLgorCQkgKi8KKwkJaWYgKGdldF9yZWxfcmVsaXNwYXJ0aXRpb24ocmVs aWQpKQorCQkJYW5jZXN0b3JzID0gZ2V0X3BhcnRpdGlvbl9hbmNlc3RvcnMocmVsaWQpOworCisJ CWZvcmVhY2gobGMyLCBhbmNlc3RvcnMpCisJCXsKKwkJCS8qCisJCQkgKiBDaGVjayBpZiB0aGUg cGFyZW50IHRhYmxlIGV4aXN0cyBpbiB0aGUgcHVibGlzaGVkIHRhYmxlIGxpc3Qgb3IKKwkJCSAq IHRoZSBzY2hlbWEgb2YgdGhlIHBhcmVudCB0YWJsZSB3YXMgcHVibGlzaGVkIGluIHRoaXMKKwkJ CSAqIHB1YmxpY2F0aW9uLgorCQkJICovCisJCQlpZiAobGlzdF9tZW1iZXJfb2lkKHJlbGlkcywg bGZpcnN0X29pZChsYzIpKSkKKwkJCXsKKwkJCQlza2lwID0gdHJ1ZTsKKwkJCQlicmVhazsKKwkJ CX0KKwkJfQorCisJCWlmICghc2tpcCkKKwkJCXJlc3VsdCA9IGxhcHBlbmRfb2lkKHJlc3VsdCwg cmVsaWQpOworCX0KKwogCXJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTU2MCw3ICs2MDIsOCBAQCBw Z19nZXRfcHVibGljYXRpb25fdGFibGVzKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCQl0YWJsZXMgPSBH ZXRQdWJsaWNhdGlvblJlbGF0aW9ucyhwdWJsaWNhdGlvbi0+b2lkLAogCQkJCQkJCQkJCQkgcHVi bGljYXRpb24tPnB1YnZpYXJvb3QgPwogCQkJCQkJCQkJCQkgUFVCTElDQVRJT05fUEFSVF9ST09U IDoKLQkJCQkJCQkJCQkJIFBVQkxJQ0FUSU9OX1BBUlRfTEVBRik7CisJCQkJCQkJCQkJCSBQVUJM SUNBVElPTl9QQVJUX0xFQUYsCisJCQkJCQkJCQkJCSBwdWJsaWNhdGlvbi0+cHVidmlhcm9vdCk7 CiAJCWZ1bmNjdHgtPnVzZXJfZmN0eCA9ICh2b2lkICopIHRhYmxlczsKIAogCQlNZW1vcnlDb250 ZXh0U3dpdGNoVG8ob2xkY29udGV4dCk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5k cy9wdWJsaWNhdGlvbmNtZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3B1YmxpY2F0aW9uY21k cy5jCmluZGV4IDljN2Y5MTYxMWQuLjgzNmI2Y2Y0MjEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2NvbW1hbmRzL3B1YmxpY2F0aW9uY21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3B1 YmxpY2F0aW9uY21kcy5jCkBAIC0zMjQsNyArMzI0LDggQEAgQWx0ZXJQdWJsaWNhdGlvbk9wdGlv bnMoUGFyc2VTdGF0ZSAqcHN0YXRlLCBBbHRlclB1YmxpY2F0aW9uU3RtdCAqc3RtdCwKIAkJICog dHJlZXMsIG5vdCBqdXN0IHRob3NlIGV4cGxpY2l0bHkgbWVudGlvbmVkIGluIHRoZSBwdWJsaWNh dGlvbi4KIAkJICovCiAJCUxpc3QJICAgKnJlbGlkcyA9IEdldFB1YmxpY2F0aW9uUmVsYXRpb25z KHB1YmZvcm0tPm9pZCwKLQkJCQkJCQkJCQkJCQkgUFVCTElDQVRJT05fUEFSVF9BTEwpOworCQkJ CQkJCQkJCQkJCSBQVUJMSUNBVElPTl9QQVJUX0FMTCwKKwkJCQkJCQkJCQkJCQkgZmFsc2UpOwog CiAJCUludmFsaWRhdGVQdWJsaWNhdGlvblJlbHMocmVsaWRzKTsKIAl9CkBAIC0zODcsNyArMzg4 LDggQEAgQWx0ZXJQdWJsaWNhdGlvblRhYmxlcyhBbHRlclB1YmxpY2F0aW9uU3RtdCAqc3RtdCwg UmVsYXRpb24gcmVsLAogCWVsc2UJCQkJCQkvKiBERUZFTEVNX1NFVCAqLwogCXsKIAkJTGlzdAkg ICAqb2xkcmVsaWRzID0gR2V0UHVibGljYXRpb25SZWxhdGlvbnMocHViaWQsCi0JCQkJCQkJCQkJ CQkJCVBVQkxJQ0FUSU9OX1BBUlRfUk9PVCk7CisJCQkJCQkJCQkJCQkJCVBVQkxJQ0FUSU9OX1BB UlRfUk9PVCwKKwkJCQkJCQkJCQkJCQkJZmFsc2UpOwogCQlMaXN0CSAgICpkZWxyZWxzID0gTklM OwogCQlMaXN0Q2VsbCAgICpvbGRsYzsKIApAQCAtNTM4LDcgKzU0MCw3IEBAIFJlbW92ZVB1Ymxp Y2F0aW9uQnlJZChPaWQgcHViaWQpCiAJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKHR1cCkpCiAJCWVs b2coRVJST1IsICJjYWNoZSBsb29rdXAgZmFpbGVkIGZvciBwdWJsaWNhdGlvbiAldSIsIHB1Ymlk KTsKIAotCXB1YmZvcm0gPSAoRm9ybV9wZ19wdWJsaWNhdGlvbilHRVRTVFJVQ1QodHVwKTsKKwlw dWJmb3JtID0gKEZvcm1fcGdfcHVibGljYXRpb24pIEdFVFNUUlVDVCh0dXApOwogCiAJLyogSW52 YWxpZGF0ZSByZWxjYWNoZSBzbyB0aGF0IHB1YmxpY2F0aW9uIGluZm8gaXMgcmVidWlsdC4gKi8K IAlpZiAocHViZm9ybS0+cHViYWxsdGFibGVzKQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0 YWxvZy9wZ19wdWJsaWNhdGlvbi5oIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wdWJsaWNhdGlv bi5oCmluZGV4IDgyZjI1MzZjNjUuLjcyMTIzM2IyMjYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRl L2NhdGFsb2cvcGdfcHVibGljYXRpb24uaAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3B1 YmxpY2F0aW9uLmgKQEAgLTEwOCw3ICsxMDgsOCBAQCB0eXBlZGVmIGVudW0gUHVibGljYXRpb25Q YXJ0T3B0CiAJUFVCTElDQVRJT05fUEFSVF9BTEwsCiB9IFB1YmxpY2F0aW9uUGFydE9wdDsKIAot ZXh0ZXJuIExpc3QgKkdldFB1YmxpY2F0aW9uUmVsYXRpb25zKE9pZCBwdWJpZCwgUHVibGljYXRp b25QYXJ0T3B0IHB1Yl9wYXJ0b3B0KTsKK2V4dGVybiBMaXN0ICpHZXRQdWJsaWNhdGlvblJlbGF0 aW9ucyhPaWQgcHViaWQsIFB1YmxpY2F0aW9uUGFydE9wdCBwdWJfcGFydG9wdCwKKwkJCQkJCQkJ CSBib29sIHB1YnZpYXJvb3QpOwogZXh0ZXJuIExpc3QgKkdldEFsbFRhYmxlc1B1YmxpY2F0aW9u cyh2b2lkKTsKIGV4dGVybiBMaXN0ICpHZXRBbGxUYWJsZXNQdWJsaWNhdGlvblJlbGF0aW9ucyhi b29sIHB1YnZpYXJvb3QpOwogZXh0ZXJuIExpc3QgKkdldFB1YlBhcnRpdGlvbk9wdGlvblJlbGF0 aW9ucyhMaXN0ICpyZXN1bHQsCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L3B1YmxpY2F0aW9uLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHVibGljYXRpb24u b3V0CmluZGV4IDgyYmNlOWJlMDkuLjVmNTQ0NWE5ODUgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQvcHVibGljYXRpb24ub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvcHVibGljYXRpb24ub3V0CkBAIC0xNjUsNiArMTY1LDE1IEBAIEhJTlQ6ICBUbyBlbmFi bGUgdXBkYXRpbmcgdGhlIHRhYmxlLCBzZXQgUkVQTElDQSBJREVOVElUWSB1c2luZyBBTFRFUiBU QUJMRS4KIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9ycGFydGVkIERST1AgVEFCTEUgdGVz dHB1Yl9wYXJ0ZWQ7CiAtLSB3b3JrcyBhZ2FpbiwgYmVjYXVzZSB1cGRhdGUgaXMgbm8gbG9uZ2Vy IHJlcGxpY2F0ZWQKIFVQREFURSB0ZXN0cHViX3BhcnRlZDIgU0VUIGEgPSAyOworLS0gYWRkIGJv dGggY2hpbGQgYW5kIHBhcmVudCB0YWJsZSB0byB0aGUgcHVibGljYXRpb24KK0FMVEVSIFBVQkxJ Q0FUSU9OIHRlc3RwdWJfZm9ycGFydGVkIEFERCBUQUJMRSB0ZXN0cHViX3BhcnRlZCwgdGVzdHB1 Yl9wYXJ0ZWQyOworLS0gb25seSBzaG93IHBhcmVudCB0YWJsZSB3aGVuIHB1Ymxpc2hfdmlhX3Bh cnRpdGlvbl9yb290IGlzIHNldAorc2VsZWN0ICogZnJvbSBwZ19wdWJsaWNhdGlvbl90YWJsZXM7 CisgICAgICBwdWJuYW1lICAgICAgfCBzY2hlbWFuYW1lIHwgICB0YWJsZW5hbWUgICAgCistLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tCisgdGVzdHB1Yl9m b3JwYXJ0ZWQgfCBwdWJsaWMgICAgIHwgdGVzdHB1Yl9wYXJ0ZWQKKygxIHJvdykKKwogRFJPUCBU QUJMRSB0ZXN0cHViX3BhcnRlZDEsIHRlc3RwdWJfcGFydGVkMjsKIERST1AgUFVCTElDQVRJT04g dGVzdHB1Yl9mb3JwYXJ0ZWQsIHRlc3RwdWJfZm9ycGFydGVkMTsKIC0tIFRlc3QgY2FjaGUgaW52 YWxpZGF0aW9uIEZPUiBBTEwgVEFCTEVTIHB1YmxpY2F0aW9uCmRpZmYgLS1naXQgYS9zcmMvdGVz dC9yZWdyZXNzL3NxbC9wdWJsaWNhdGlvbi5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wdWJs aWNhdGlvbi5zcWwKaW5kZXggZTU3NDVkNTc1Yi4uZDNmMmIyZmExMSAxMDA2NDQKLS0tIGEvc3Jj L3Rlc3QvcmVncmVzcy9zcWwvcHVibGljYXRpb24uc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mv c3FsL3B1YmxpY2F0aW9uLnNxbApAQCAtOTcsNiArOTcsMTAgQEAgVVBEQVRFIHRlc3RwdWJfcGFy dGVkMiBTRVQgYSA9IDI7CiBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcnBhcnRlZCBEUk9Q IFRBQkxFIHRlc3RwdWJfcGFydGVkOwogLS0gd29ya3MgYWdhaW4sIGJlY2F1c2UgdXBkYXRlIGlz IG5vIGxvbmdlciByZXBsaWNhdGVkCiBVUERBVEUgdGVzdHB1Yl9wYXJ0ZWQyIFNFVCBhID0gMjsK Ky0tIGFkZCBib3RoIGNoaWxkIGFuZCBwYXJlbnQgdGFibGUgdG8gdGhlIHB1YmxpY2F0aW9uCitB TFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcnBhcnRlZCBBREQgVEFCTEUgdGVzdHB1Yl9wYXJ0 ZWQsIHRlc3RwdWJfcGFydGVkMjsKKy0tIG9ubHkgc2hvdyBwYXJlbnQgdGFibGUgd2hlbiBwdWJs aXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCBpcyBzZXQKK3NlbGVjdCAqIGZyb20gcGdfcHVibGljYXRp b25fdGFibGVzOwogRFJPUCBUQUJMRSB0ZXN0cHViX3BhcnRlZDEsIHRlc3RwdWJfcGFydGVkMjsK IERST1AgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3JwYXJ0ZWQsIHRlc3RwdWJfZm9ycGFydGVkMTsK IAotLSAKMi4xOC40Cgo= --_002_OS0PR01MB57167F45D481F78CDC5986F794B99OS0PR01MB5716jpnp_--