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.96) (envelope-from ) id 1vhliU-005qgd-10 for pgsql-hackers@arkaria.postgresql.org; Mon, 19 Jan 2026 09:38:35 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vhliT-00CfPa-18 for pgsql-hackers@arkaria.postgresql.org; Mon, 19 Jan 2026 09:38:33 +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.96) (envelope-from ) id 1vhliS-00CfPS-32 for pgsql-hackers@lists.postgresql.org; Mon, 19 Jan 2026 09:38:33 +0000 Received: from mail-pg1-x52e.google.com ([2607:f8b0:4864:20::52e]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1vhliR-001JPp-0R for pgsql-hackers@lists.postgresql.org; Mon, 19 Jan 2026 09:38:33 +0000 Received: by mail-pg1-x52e.google.com with SMTP id 41be03b00d2f7-b553412a19bso1580403a12.1 for ; Mon, 19 Jan 2026 01:38:31 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1768815509; x=1769420309; 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=XNhrsY0ztCOwNigxeNCRMP9rwQYA3bgSNZPrgJFbSCU=; b=BvQyu91daVioYFTgeDmkjOoZLDic2HM4fIleKnzHgdHmLr/bN27IBmywCn4kAKS2kE LP3KoSfXNRkJlomKGFDlwxeNnp4NmKbgzrZa/QKE3J4rmXqd3/gSMcytby2owKktl3WN mqbl0P+8OS463udI871pBnSd5qbVZE6/BqqbAwKziqwhaRQ8DsKcy9xz8Hf3UoFJPcmF hn2+DGr6x/9pg7sKopengg9gC7gpuW2pzCFGpudXD5Jc6NhguZgVNPjwL7YjWc3yoGZs MUV0UyDPXFs61SWMdnP+2T0V/e1fb7Le4DK2ff8maal6OTJWFUxGbw4e0jLxOPmZz9+P frVA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768815509; x=1769420309; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=XNhrsY0ztCOwNigxeNCRMP9rwQYA3bgSNZPrgJFbSCU=; b=xD5EbqA2bmK2ADJSZ4TD5VRoDhTdPclq4H5gKcvDeR3FNsVjIjvXUR3ssc1KznN357 s1riZnG5FCwBCYwXRgdYKUTdGAyHCXrbEV1H8BWbHLcapbv/Ilkf/9pX/iSpajY/4X6S bFRPCA6qG5HKfqEyXBt8I0EApy9BUiBngJv6bi5ZDPrdAwMSTNF+GBChHhyVousKN3ua D6LVHEVvLTDbi7gb25y0DDIsHUqGCsmb9ubwWSb7kvmQA96fn/kLdMZzYFQsT+JXvPbQ sg3jQtjbqPEdY2vtXquSNegL07BsRttkgtviXUKJMOA/vg8BgF5LlwSE2lpEBb2WK1iO T4zQ== X-Forwarded-Encrypted: i=1; AJvYcCVrD4xkyaU306o1JHlWTpTqohDcT/h8Ej+ulHqzCS/BtIMVsj2o0/yr8VWzR0hj+nsnsSbOi4Eb9NLI4rXc@lists.postgresql.org X-Gm-Message-State: AOJu0YwgyUbr1TGKOt+5CHAoIv4AbrbprtPiNm9/abdPogDEHQUEqRCB TFaPzgaQ97ug8HAFWY+sPXzyvuilVv7TvJAAUOCaLhrgHKXHBuHiKIKvbmNxoXyAnFD2DvzaXHZ YFSsaLOjBbwfdJs3IKTvEZkmvGtP5+64= X-Gm-Gg: AY/fxX7nXZR4j6NvM4Hx0D9CvjeE/uiV0lFelxMgFwbNaAz0Jy+TnUzXVm5437NI5bY 8j/JtY55NzLBD/I1oKzy5Lih5yKx3AUC9FAu2TyhwJyugjAz6Bf2ZrPnDIBTD2as3NWUOkRxctD hf9jrgU5Vvk9LhixygY8JDNpZd+WXOwx5BCcfVZ9WXbsSM4p5Q2Q0/RRZpjD1God31sadAsK6fC 1fzgUzzmnLPrrrmYOFMMMqMjfZcBCiIHmVQ2oKQtorEoH/iXeke2l5771vdaBHh/wLe8YkYgnLy BGKQBML8ghijP5wM3W1JGuHqvpXQpXjuLMueK+B4 X-Received: by 2002:a05:6a20:a122:b0:366:14af:9bc0 with SMTP id adf61e73a8af0-38dfe7c9f2cmr9561446637.74.1768815509059; Mon, 19 Jan 2026 01:38:29 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: shveta malik Date: Mon, 19 Jan 2026 15:08:17 +0530 X-Gm-Features: AZwV_Qh8YIZkackfJbQtjvb9dqERPEo-RJt5itpw794BSZMAwaHC5zk0sDKyZNY Message-ID: Subject: Re: Skipping schema changes in publication To: Amit Kapila Cc: Shlok Kyal , Peter Smith , vignesh C , "Zhijie Hou (Fujitsu)" , YeXiu <1518981153@qq.com>, Ian Lawrence Barwick , Bharath Rupireddy , PostgreSQL Hackers , shveta malik Content-Type: multipart/mixed; boundary="0000000000001753b70648ba7467" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000001753b70648ba7467 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Approaches for Supporting EXCEPT in Partitioned Tables ------------------------------------------------------------------------ In an offline discussion with Peter Smith, Amit, and Shlok, we identified several approaches for supporting EXCEPT with partitioned tables and their partitions. I=E2=80=99d like to hear others=E2=80=99 opini= ons on these approaches. Consider the following partition hierarchy: tab_root =E2=94=9C=E2=94=80 tab_part_1 =E2=94=82 =E2=94=9C=E2=94=80 tab_part_1_p1 =E2=94=82 =E2=94=94=E2=94=80 tab_part_1_p2 =E2=94=94=E2=94=80 tab_part_2 =E2=94=9C=E2=94=80 tab_part_2_p1 =E2=94=94=E2=94=80 tab_part_2_p2 Approach 1: --------------------------------- If we exclude a table, then the data in that table and all of its partitions (i.e., the entire subtree under that table) should not be replicated. For example EXCEPT (tab_part_1) skips replication of tab_part_1 and all of its partitions. This behaviour remains the same with or without publish_via_partition_root. The publish_via_partition_root flag only affects publish_via_relid, i.e., the relation through which data is published. This approach involves certain implementation challenges. For brevity, these are documented in the attached 'Approach1_challenges' document. Approach 2: --------------------------------------------------- Assign meaning to ONLY and '*' for partition tables in the EXCEPT list. In HEAD, ONLY and '*' do not have any meaning for partitioned tables or partitions, and these keywords are currently ignored. Examples: 1. EXCEPT (ONLY tab_part_1) skips replication of only the table tab_part_1. Changes for tab_root, tab_part_1_p1, and tab_part_1_p2 are still replicated. ii. EXCEPT (tab_part_1*) skips replication of tables tab_part_1, tab_part_1_p1, and tab_part_1_p2 The challenges described in Approach 1, particularly around tablesync handling and COPY behaviour, would still need to be addressed under this approach as well. ONLY or '*' with partitioned tables is not supported in HEAD, supporting it specifically for ALL TABLES EXCEPT may introduce additional confusion for users. Approach 3: ---------------- Do not allow partitions to be specified in the EXCEPT clause. Only EXCEPT (tab_root) is supported, which excludes tab_root and all of its partitions. Specifying EXCEPT (tab_part_1) or EXCEPT (tab_part_1_p1) will result in an error. ~~ While Approach 1 and Approach 2 offer more flexibility to the user compared to Approach 3, they also introduce additional design complexity which does not seem simpler to address. Approach 3, OTOH, provides a simpler solution and removes ambiguity around the meaning of EXCEPT. It also aligns, to some extent, with the behavior of ALTER PUBLICATION =E2=80=A6 DROP TABLE. For example, when a publication is created explicitly for a ROOT partitioned table, ALTER PUBLICATION DROP TABLE is not allowed for a partition, regardless of the publish_via_partition_root setting. This behavior is demonstrated in the attached AlterPubDropTable file. That said, the behaviors of DROP TABLE and EXCEPT (table) are not directly comparable. EXCEPT (table) is supported only for ALL TABLES publications, whereas DROP TABLE is not supported in that context. Similarly, when a publication is created explicitly for a partition, ALTER PUBLICATION does allow dropping that partition. The key point here is that 'publish_via_partition_root' does not influence what can or cannot be dropped using ALTER PUBLICATION =E2=80=A6 D= ROP TABLE. This approach follows the same principle. OTOH when we see row-filter behaviour, publish_via_partition_root plays a role in determining whether a row filter can be created itself. This is demonstrated in the attached RowFilterBehaviour experiment. This leads us to Approach 4. Approach 4: ---------------- Do not allow partitions to be specified in the EXCEPT clause when publish_via_partition_root is true, but allow them when publish_via_partition_root is false. When publish_via_partition_root =3D true: EXCEPT (tab_part_1_p1) results in an error. EXCEPT (tab_part_1) results in an error. EXCEPT (tab_root) excludes the entire hierarchy under the root table. When publish_via_partition_root =3D false: EXCEPT (tab_part_1_p1) skips replication of that partition. EXCEPT (tab_part_1) skips replication of that partition and all of its child partitions. EXCEPT (tab_root) skips replication of the partitioned table and all partitions beneath it. This design is guided by the way row filters behave. It offers more flexibility than Approach 3 while avoiding the complexity of Approaches 1 and 2. However, it may cause some user confusion since EXCEPT behavior depends on publish_via_partition_root. Given this, the current plan is to implement Approach 3 as the initial patch, and then implement the changes required for Approach 4 in a top-up patch. This will allow us to evaluate if at all Approach 4 causes any implementation complexities. Please share your thoughts on the approaches described. thanks Shveta --0000000000001753b70648ba7467 Content-Type: text/plain; charset="UTF-8"; name="Approach1_challenges.txt" Content-Disposition: attachment; filename="Approach1_challenges.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mkkz254k1 Q29uc2lkZXIgdGhlIGZvbGxvd2luZyBjb21wbGV4IHBhcnRpdGlvbiBoaWVyYXJjaHk6DQogDQpQ bGFpbiBUZXh0DQp0YWJfcm9vdA0K4pSc4pSA4pSAIHRhYl9wYXJ0XzENCuKUgiAgIOKUnOKUgOKU gCB0YWJfcGFydF8xXzENCuKUgiAgIOKUgiAgIOKUnOKUgOKUgCB0YWJfcGFydF8xXzFfMQ0K4pSC ICAg4pSCICAg4pSCICAg4pSU4pSA4pSAIHRhYl9wYXJ0XzFfMV8xXzENCuKUgiAgIOKUgiAgIOKU lOKUgOKUgCB0YWJfcGFydF8xXzFfMg0K4pSCICAg4pSU4pSA4pSAIHRhYl9wYXJ0XzFfMg0K4pSC ICAgICAgIOKUnOKUgOKUgCB0YWJfcGFydF8xXzJfMQ0K4pSCICAgICAgIOKUlOKUgOKUgCB0YWJf cGFydF8xXzJfMg0K4pSU4pSA4pSAIHRhYl9wYXJ0XzINCiANCkJlaGF2aW9yIG9uIEhFQUQ6DQpB c3N1bWUgYSBwdWJsaWNhdGlvbiBpcyBjcmVhdGVkIG9uIHRoZSByb290IHRhYmxlIHdpdGggcHVi bGlzaF92aWFfcGFydGl0aW9uX3Jvb3QgPSB0cnVlOg0KQ1JFQVRFIFBVQkxJQ0FUSU9OIHB1YjEg Rk9SIFRBQkxFIHRhYl9yb290IFdJVEggKHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290ID0gdHJ1 ZSk7DQoNCkluIHRoaXMgY2FzZToNCnBnX3B1YmxpY2F0aW9uX3JlbCBjb250YWlucyBhbiBlbnRy eSBvbmx5IGZvciB0YWJfcm9vdC4NCnBnX3B1YmxpY2F0aW9uX3RhYmxlcyBhbHNvIGNvbnRhaW5z IGFuIGVudHJ5IG9ubHkgZm9yIHRhYl9yb290Lg0KDQpXaGVuIGEgc3Vic2NyaXB0aW9uIGlzIGNy ZWF0ZWQ6DQpDUkVBVEUgU1VCU0NSSVBUSU9OIHN1YjEgQ09OTkVDVElPTiAnaG9zdD1sb2NhbGhv c3QgcG9ydD01NDMyIGRibmFtZT1wb3N0Z3JlcycgUFVCTElDQVRJT04gcHViMTsNCnBnX3N1YnNj cmlwdGlvbl9yZWwgaXMgcG9wdWxhdGVkIHVzaW5nIHBnX2dldF9wdWJsaWNhdGlvbl90YWJsZXMs IHNvIGl0IGFsc28gY29udGFpbnMgb25seSB0YWJfcm9vdCAuDQogDQpGb3IgZWFjaCBlbnRyeSBp biBwZ19zdWJzY3JpcHRpb25fcmVsLCBhIHRhYmxlc3luYyB3b3JrZXIgaXMgbGF1bmNoZWQuDQpG b3IgZWFjaCB0YWJsZXN5bmMgd29ya2VyLCBDT1BZIGNvbW1hbmQgaXMgY29uc3RydWN0ZWQgYmFz ZWQgb24gdGhlIGNvcnJlc3BvbmRpbmcgaW5mbyBpbiBwZ19zdWJzY3JpcHRpb25fcmVsLiBGb3Ig dGhpcyBjYXNlIGZvbGxvd2luZyBjb3B5IGNvbW1hbmQgaXMgY29uc3RydWN0ZWQuDQpDT1BZIHRh Yl9yb290IFRPIFNURE9VVDsNClRoZSBkYXRhIGlzIHRoZW4gY29waWVkIHRvIHRoZSBzdWJzY3Jp YmVyIHVzaW5nIENPUFkgRlJPTS4NCiANCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCk5v dywgY29uc2lkZXIgdGhlIGJlaGF2aW9yIHdpdGggdGhlIHBhdGNoLg0KDQpTdXBwb3NlIHdlIGNy ZWF0ZSB0aGUgZm9sbG93aW5nIHB1YmxpY2F0aW9uOg0KQ1JFQVRFIFBVQkxJQ0FUSU9OIHB1YjEg Rk9SIEFMTCBUQUJMRVMgRVhDRVBUICh0YWJfcGFydF8xXzEpIFdJVEggKHB1Ymxpc2hfdmlhX3Bh cnRpdGlvbl9yb290ID0gdHJ1ZSk7DQpGb2xsb3dpbmcgQXBwcm9hY2ggMSwgd2UgY2Fubm90IGhh dmUgb25seSBhIHNpbmdsZSBlbnRyeSBmb3IgdGFiX3Jvb3QgaW4gcGdfcHVibGljYXRpb25fdGFi bGVzLCBiZWNhdXNlIHRhYl9wYXJ0XzFfMSBpcyBleHBsaWNpdGx5IGV4Y2x1ZGVkIGFuZCBpdHMg YW5kIGl0cyBwYXJ0aXRpb25zJyBkYXRhIG11c3Qgbm90IGJlIHJlcGxpY2F0ZWQuDQoNCkluc3Rl YWQsIHBnX3B1YmxpY2F0aW9uX3RhYmxlcyBzaG91bGQgY29udGFpbiBlbnRyaWVzIGNvcnJlc3Bv bmRpbmcgdG8gdGhlIHJlbWFpbmluZyByZWxldmFudCB0YWJsZXMsIHN1Y2ggYXM6DQp0YWJfcGFy dF8xXzINCnRhYl9wYXJ0XzINCihUaGUgZXhhY3Qgc2V0IG9mIHRhYmxlcyBzdGlsbCBuZWVkcyB0 byBiZSBmaW5hbGl6ZWQuKQ0KDQpOZXh0LCBwZ19zdWJzY3JpcHRpb25fcmVsIG5lZWRzIHRvIGJl IHBvcHVsYXRlZCBpbiBhIHdheSB0aGF0IGFsbG93cyB0YWJsZXN5bmMgdG86DQoxLiBDb25zdHJ1 Y3QgQ09QWSBjb21tYW5kcyBvbmx5IGZvciB0YWJfcGFydF8xXzIgYW5kIHRhYl9wYXJ0XzIgb24g dGhlIHB1Ymxpc2hlcg0KMi4gQXBwbHkgdGhlIGNvcGllZCBkYXRhIGludG8gdGhlIHJvb3QgdGFi bGUgdGFiX3Jvb3QgIG9uIHRoZSBzdWJzY3JpYmVyLCBzaW5jZSBwdWJsaXNoX3ZpYV9wYXJ0aXRp b25fcm9vdCBpcyBlbmFibGVkDQoNCkkgdGhpbmsgdGhlIG1haW4gdGFzayBmb3IgdGhpcyBzY2Vu YXJpbyBpcyB0byBkZWNpZGUgdGhlIHdoYXQgc2hvdWxkIGJlIHRoZSBjb250ZW50IG9mIHBnX3B1 YmxpY2F0aW9uX3RhYmxlcy4NCkFuZCB3aGF0IHNob3VsZCBiZSBwb3B1bGF0ZWQgaW4gcGdfc3Vi c2NyaXB0aW9uX3JlbCB0byBjb25zdHJ1Y3QgYXBwcm9wcmlhdGUgQ09QWSBxdWVyeSBpbiB0YWJs ZXN5bmMgd29ya2VyLg== --0000000000001753b70648ba7467 Content-Type: text/plain; charset="US-ASCII"; name="RowFilterBehaviour.txt" Content-Disposition: attachment; filename="RowFilterBehaviour.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mkkz254q2 Um93IGZpbHRlciBiZWhhdmlvdXIgb24gSEVBRA0KPT09PT09PT09PT09PT09PT09PT09PT09DQog DQpPQlNFUlZBVElPTjoNCldoZW4gcHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3QgaXMgdHJ1ZSwg YSByb3cgZmlsdGVyIGNhbiBiZSBjcmVhdGVkIGZvciBib3RoIHRoZSBwYXJ0aXRpb25lZCB0YWJs ZSBhbmQgaXRzIHBhcnRpdGlvbnMuIFRoZSBmaWx0ZXIgZGVmaW5lZCBvbiB0aGUgcGFydGl0aW9u ZWQgdGFibGUgaXMgYXBwbGllZCB0byBhbGwgcGFydGl0aW9ucywgd2hpbGUgYSBmaWx0ZXIgZGVm aW5lZCBvbiBhIHNwZWNpZmljIHBhcnRpdGlvbiBhcHBsaWVzIG9ubHkgdG8gdGhhdCBwYXJ0aXRp b24uDQpXaGVuIHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290IGlzIGZhbHNlLCBjcmVhdGluZyBh IHB1YmxpY2F0aW9uIHdpdGggYSByb3cgZmlsdGVyIG9uIHRoZSBwYXJ0aXRpb25lZCB0YWJsZSBp dHNlbGYgZmFpbHMuIFJvdyBmaWx0ZXJzIGNhbiBzdGlsbCBiZSBjcmVhdGVkIGZvciBpbmRpdmlk dWFsIHBhcnRpdGlvbnMsIGJ1dCB0aGV5IGFyZSBhcHBsaWVkIG9ubHkgdG8gdGhlIGNvcnJlc3Bv bmRpbmcgcGFydGl0aW9ucy4NCg0KVEVTVCBmb3IgYmV0dGVyIHVuZGVyc3RhbmRpbmcNCi0tLS0t LS0tLS0tLS0tLQ0KIA0KQ1JFQVRFIFRBQkxFIHBhcmVudCAoaWQgaW50IHByaW1hcnkga2V5LCB2 YWwgaW50KSBQQVJUSVRJT04gQlkgUkFOR0UgKGlkKTsNCkNSRUFURSBUQUJMRSBjaGlsZDEgUEFS VElUSU9OIE9GIHBhcmVudCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgxMDApOw0KQ1JFQVRFIFRB QkxFIGNoaWxkMiBQQVJUSVRJT04gT0YgcGFyZW50IEZPUiBWQUxVRVMgRlJPTSAoMTAwKSBUTyAo MjAwKTsNCiANCjxwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCA9dHJ1ZT4NClRlc3QgQTogUm9v dC1sZXZlbCBmaWx0ZXINCi0tLS0tLS0tLS0tLS0tLS0tLS0tDQpDUkVBVEUgUFVCTElDQVRJT04g cHViX3Jvb3QgRk9SIFRBQkxFIHBhcmVudCBXSEVSRSAodmFsID4gMTApIFdJVEggKHB1Ymxpc2hf dmlhX3BhcnRpdGlvbl9yb290ID0gdHJ1ZSk7DQogDQpDUkVBVEUgU1VCU0NSSVBUSU9OIHN1YjEg Y29ubmVjdGlvbiAnZGJuYW1lPXBvc3RncmVzIGhvc3Q9bG9jYWxob3N0IHVzZXI9c2h2ZXRhIHBv cnQ9NTQzMycgcHVibGljYXRpb24gcHViX3Jvb3Q7DQogDQpJTlNFUlQgSU5UTyBwYXJlbnQgVkFM VUVTICg1MCwgNSk7ICAgLS0gbm90IHB1Ymxpc2hlZA0KSU5TRVJUIElOVE8gcGFyZW50IFZBTFVF UyAoNjAsIDIwKTsgIC0tIHB1Ymxpc2hlZA0KIA0KSU5TRVJUIElOVE8gY2hpbGQxIFZBTFVFUyAo NzAsIDUpOyAgLS0gbm90IHB1Ymxpc2hlZA0KSU5TRVJUIElOVE8gY2hpbGQxIFZBTFVFUyAoODAs IDIwKTsgIC0tIHB1Ymxpc2hlZA0KIA0KSU5TRVJUIElOVE8gY2hpbGQyIFZBTFVFUyAoMTUwLCA1 KTsgICAtLSBub3QgcHVibGlzaGVkDQpJTlNFUlQgSU5UTyBjaGlsZDIgVkFMVUVTICgxNjAsIDIw KTsgLS0gcHVibGlzaGVkDQogDQpDb25jbHVzaW9uOiBXaGVuIHB1Ymxpc2hfdmlhX3BhcnRpdGlv bl9yb290PXRydWUsIHRoZSByb3cgZmlsdGVyIGRlZmluZWQgb24gdGhlIHJvb3QgdGFibGUgaXMg YXBwbGllZCB0byBhbGwgcGFydGl0aW9ucy4NCiANClRlc3QgQjogUGFydGl0aW9uLWxldmVsIGZp bHRlciANCi0tLS0tLS0tLS0tLS0tLS0tLS0tDQpkcm9wIHB1YmxpY2F0aW9uIHB1Yl9yb290Ow0K ZHJvcCBzdWJzY3JpcHRpb24gc3ViMTsNCnRydW5jYXRlIHBhcmVudDsNCiANCkNSRUFURSBQVUJM SUNBVElPTiBwdWJfcGFydCBGT1IgVEFCTEUgY2hpbGQxIFdIRVJFICh2YWwgPiAxMCkgV0lUSCAo cHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3QgPSB0cnVlKTsNCmNyZWF0ZSBzdWJzY3JpcHRpb24g c3ViMiBjb25uZWN0aW9uICdkYm5hbWU9cG9zdGdyZXMgaG9zdD1sb2NhbGhvc3QgdXNlcj1zaHZl dGEgcG9ydD01NDMzJyBwdWJsaWNhdGlvbiBwdWJfcGFydDsNCiANCklOU0VSVCBJTlRPIHBhcmVu dCBWQUxVRVMgKDUwLCA1KTsgICAtLSBub3QgcHVibGlzaGVkDQpJTlNFUlQgSU5UTyBwYXJlbnQg VkFMVUVTICg2MCwgMjApOyAgLS0gcHVibGlzaGVkDQogDQpJTlNFUlQgSU5UTyBjaGlsZDEgVkFM VUVTICg3MCwgNSk7ICAtLSBub3QgcHVibGlzaGVkDQpJTlNFUlQgSU5UTyBjaGlsZDEgVkFMVUVT ICg4MCwgMjApOyAgLS0gcHVibGlzaGVkDQogDQogDQpJTlNFUlQgSU5UTyBjaGlsZDIgVkFMVUVT ICgxNTAsIDUpOyAgIC0tIG5vdCBwdWJsaXNoZWQgKGFzIHB1YmxpY2F0aW9uIGlzIG9ubHkgZm9y IGNoaWxkMSkNCklOU0VSVCBJTlRPIGNoaWxkMiBWQUxVRVMgKDE2MCwgMjApOyAgLS0gbm90IHB1 Ymxpc2hlZCAoYXMgcHVibGljYXRpb24gaXMgb25seSBmb3IgY2hpbGQxKQ0KIA0KQ29uY2x1c2lv bjogV2hlbiBwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdD10cnVlLCB0aGUgcm93IGZpbHRlciBk ZWZpbmVkIG9uIHRoZSBwYXJ0aXRpb24gaXMgYXBwbGllZCB0byB0aGF0IHBhcml0aW9uLg0KIA0K LS0tLS0tLS0tLS0tDQpOb3cgdGVzdCBhYm92ZSBwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCBh cyBmYWxzZQ0KLS0tLS0tLS0tLS0tDQpkcm9wIHB1YmxpY2F0aW9uIHB1Yl9wYXJ0Ow0KZHJvcCBz dWJzY3JpcHRpb24gc3ViMjsNCnRydW5jYXRlIHBhcmVudDsNCiANCiANClRlc3QgQTogUm9vdC1s ZXZlbCBmaWx0ZXINCi0tLS0tLS0tLS0tLS0tLS0tLS0tDQpDUkVBVEUgUFVCTElDQVRJT04gcHVi X3Jvb3QgRk9SIFRBQkxFIHBhcmVudCBXSEVSRSAodmFsID4gMTApIFdJVEggKHB1Ymxpc2hfdmlh X3BhcnRpdGlvbl9yb290ID0gZmFsc2UpOw0KY3JlYXRlIHN1YnNjcmlwdGlvbiBzdWIxIGNvbm5l Y3Rpb24gJ2RibmFtZT1wb3N0Z3JlcyBob3N0PWxvY2FsaG9zdCB1c2VyPXNodmV0YSBwb3J0PTU0 MzMnIHB1YmxpY2F0aW9uIHB1Yl9yb290Ow0KIA0KcG9zdGdyZXM9IyBDUkVBVEUgUFVCTElDQVRJ T04gcHViX3Jvb3QgRk9SIFRBQkxFIHBhcmVudCBXSEVSRSAodmFsID4gMTApIFdJVEggKHB1Ymxp c2hfdmlhX3BhcnRpdGlvbl9yb290ID0gZmFsc2UpOw0KRVJST1I6ICBjYW5ub3QgdXNlIHB1Ymxp Y2F0aW9uIFdIRVJFIGNsYXVzZSBmb3IgcmVsYXRpb24gInBhcmVudCINCkRFVEFJTDogIFdIRVJF IGNsYXVzZSBjYW5ub3QgYmUgdXNlZCBmb3IgYSBwYXJ0aXRpb25lZCB0YWJsZSB3aGVuIHB1Ymxp c2hfdmlhX3BhcnRpdGlvbl9yb290IGlzIGZhbHNlLg0KIA0KIA0KVGVzdCBCOiBQYXJ0aXRpb24t bGV2ZWwgZmlsdGVyIA0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCkNSRUFURSBQVUJMSUNBVElP TiBwdWJfcGFydCBGT1IgVEFCTEUgY2hpbGQxIFdIRVJFICh2YWwgPiAxMCkgV0lUSCAocHVibGlz aF92aWFfcGFydGl0aW9uX3Jvb3QgPSBmYWxzZSk7DQpjcmVhdGUgc3Vic2NyaXB0aW9uIHN1YjIg Y29ubmVjdGlvbiAnZGJuYW1lPXBvc3RncmVzIGhvc3Q9bG9jYWxob3N0IHVzZXI9c2h2ZXRhIHBv cnQ9NTQzMycgcHVibGljYXRpb24gcHViX3BhcnQ7DQpJTlNFUlQgSU5UTyBwYXJlbnQgVkFMVUVT ICg3MCwgNSk7ICAgLS0gbm90IHB1Ymxpc2hlZA0KSU5TRVJUIElOVE8gcGFyZW50IFZBTFVFUyAo ODAsIDIwKTsgIC0tIHB1Ymxpc2hlZA0KSU5TRVJUIElOVE8gY2hpbGQxIFZBTFVFUyAoODUsIDUp OyAgLS0gbm90IHB1Ymxpc2hlZA0KSU5TRVJUIElOVE8gY2hpbGQxIFZBTFVFUyAoOTAsIDIwKTsg IC0tIHB1Ymxpc2hlZA0KIA0KSU5TRVJUIElOVE8gcGFyZW50IFZBTFVFUyAoMTgwLCAyMCk7IC0t IG5vdCBwdWJsaXNoZWQgKGFzIHB1YmxpY2F0aW9uIGlzIG9ubHkgZm9yIGNoaWxkMSkNCg0KQ29u Y2x1c2lvbjogV2hlbiBwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdD1mYWxzZSwgdGhlIHJvdyBm aWx0ZXIgZGVmaW5lZCBvbiB0aGUgcGFydGl0aW9uIGlzIGFwcGxpZWQgdG8gdGhhdCBwYXJpdGlv bi4= --0000000000001753b70648ba7467 Content-Type: text/plain; charset="UTF-8"; name="AlterPubDropTable.txt" Content-Disposition: attachment; filename="AlterPubDropTable.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mkkz254e0 dGFiX3Jvb3QgKFJBTkdFIHJhbmdlX2NvbCkNCuKUnOKUgOKUgCB0YWJfcGFydF8xICgx4oCTMTAw MCkgUEFSVElUSU9OIEJZIFJBTkdFIChpKQ0K4pSCICAg4pSc4pSA4pSAIHRhYl9wYXJ0XzFfcDEg KGkgMOKAkzUwMCkNCuKUgiAgIOKUlOKUgOKUgCB0YWJfcGFydF8xX3AyIChpIDUwMOKAkzEwMDAp DQrilJTilIDilIAgdGFiX3BhcnRfMiAoMTAwMOKAkzIwMDApIFBBUlRJVElPTiBCWSBSQU5HRSAo aSkNCiAgICDilJzilIDilIAgdGFiX3BhcnRfMl9wMSAoaSAw4oCTNTAwKQ0KICAgIOKUlOKUgOKU gCB0YWJfcGFydF8yX3AyIChpIDUwMOKAkzEwMDApDQoJDQpDUkVBVEUgVEFCTEUgdGFiX3Jvb3Qg KHJhbmdlX2NvbCBpbnQsIGkgaW50LCBqIGludCkgUEFSVElUSU9OIEJZIFJBTkdFIChyYW5nZV9j b2wpOw0KQ1JFQVRFIFRBQkxFIHRhYl9wYXJ0XzEgUEFSVElUSU9OIE9GIHRhYl9yb290IEZPUiBW QUxVRVMgRlJPTSAoMSkgVE8gKDEwMDApIFBBUlRJVElPTiBCWSBSQU5HRSAoaSk7DQpDUkVBVEUg VEFCTEUgdGFiX3BhcnRfMiBQQVJUSVRJT04gT0YgdGFiX3Jvb3QgRk9SIFZBTFVFUyBGUk9NICgx MDAwKSBUTyAoMjAwMCkgUEFSVElUSU9OIEJZIFJBTkdFIChpKTsNCg0KLS0gTGVhZiBwYXJ0aXRp b25zIHVuZGVyIHRhYl9wYXJ0XzENCkNSRUFURSBUQUJMRSB0YWJfcGFydF8xX3AxIFBBUlRJVElP TiBPRiB0YWJfcGFydF8xIEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDUwMCk7DQpDUkVBVEUgVEFC TEUgdGFiX3BhcnRfMV9wMiBQQVJUSVRJT04gT0YgdGFiX3BhcnRfMSBGT1IgVkFMVUVTIEZST00g KDUwMCkgVE8gKDEwMDApOw0KDQotLSBMZWFmIHBhcnRpdGlvbnMgdW5kZXIgdGFiX3BhcnRfMg0K Q1JFQVRFIFRBQkxFIHRhYl9wYXJ0XzJfcDEgUEFSVElUSU9OIE9GIHRhYl9wYXJ0XzIgRk9SIFZB TFVFUyBGUk9NICgwKSBUTyAoNTAwKTsNCkNSRUFURSBUQUJMRSB0YWJfcGFydF8yX3AyIFBBUlRJ VElPTiBPRiB0YWJfcGFydF8yIEZPUiBWQUxVRVMgRlJPTSAoNTAwKSBUTyAoMTAwMCk7DQoNCg0K Q1JFQVRFIFBVQkxJQ0FUSU9OICBwdWIxIGZvciB0YWJsZSB0YWJfcm9vdDsNCg0KcG9zdGdyZXM9 IyBTRUxFQ1QgYy5yZWxuYW1lLCBwLnB1Ym5hbWUgRlJPTSBwZ19wdWJsaWNhdGlvbl9yZWwgcHIg Sk9JTiBwZ19jbGFzcyBjIE9OIGMub2lkID0gcHIucHJyZWxpZCBKT0lOIHBnX3B1YmxpY2F0aW9u IHAgT04gcC5vaWQgPSBwci5wcnB1YmlkOw0KIHJlbG5hbWUgIHwgcHVibmFtZSANCi0tLS0tLS0t LS0rLS0tLS0tLS0tDQogdGFiX3Jvb3QgfCBwdWIxDQooMSByb3cpDQoNCnBvc3RncmVzPSMgc2Vs ZWN0ICogZnJvbSBwZ19wdWJsaWNhdGlvbl90YWJsZXM7DQogcHVibmFtZSB8IHNjaGVtYW5hbWUg fCAgIHRhYmxlbmFtZSAgIHwgICAgYXR0bmFtZXMgICAgIHwgcm93ZmlsdGVyIA0KLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0NCiBwdWIxICAgIHwgcHVibGljICAgICB8IHRhYl9wYXJ0XzFfcDEgfCB7cmFuZ2VfY29sLGks an0gfCANCiBwdWIxICAgIHwgcHVibGljICAgICB8IHRhYl9wYXJ0XzFfcDIgfCB7cmFuZ2VfY29s LGksan0gfCANCiBwdWIxICAgIHwgcHVibGljICAgICB8IHRhYl9wYXJ0XzJfcDEgfCB7cmFuZ2Vf Y29sLGksan0gfCANCiBwdWIxICAgIHwgcHVibGljICAgICB8IHRhYl9wYXJ0XzJfcDIgfCB7cmFu Z2VfY29sLGksan0gfCANCig0IHJvd3MpDQoNCnBvc3RncmVzPSMgXGRScCsNCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gcHViMQ0KIE93 bmVyICB8IEFsbCB0YWJsZXMgfCBBbGwgc2VxdWVuY2VzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBE ZWxldGVzIHwgVHJ1bmNhdGVzIHwgR2VuZXJhdGVkIGNvbHVtbnMgfCBWaWEgcm9vdCANCi0tLS0t LS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tDQogc2h2ZXRh IHwgZiAgICAgICAgICB8IGYgICAgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAg ICAgfCB0ICAgICAgICAgfCBub25lICAgICAgICAgICAgICB8IGYNCiANClRhYmxlczoNCiAgICAi cHVibGljLnRhYl9yb290Ig0KDQotLVRoZSBwYXJ0aXRpb25zIHdoaWNoIHdlcmUgbm90IHBhcnQg b2YgcGdfcHVibGljYXRpb25fcmVsLCBpdCBkaWQgbm90IGNvbnNpZGVyIGl0IGFzIGluY2x1ZGVk IGluIHB1YmxpY2F0aW9uDQpwb3N0Z3Jlcz0jIGFsdGVyIHB1YmxpY2F0aW9uIHB1YjEgZHJvcCB0 YWJsZSBvbmx5IHRhYl9wYXJ0XzI7DQpFUlJPUjogIHJlbGF0aW9uICJ0YWJfcGFydF8yIiBpcyBu b3QgcGFydCBvZiB0aGUgcHVibGljYXRpb24NCnBvc3RncmVzPSMgYWx0ZXIgcHVibGljYXRpb24g cHViMSBkcm9wIHRhYmxlIG9ubHkgdGFiX3BhcnRfMV9wMTsNCkVSUk9SOiAgcmVsYXRpb24gInRh Yl9wYXJ0XzFfcDEiIGlzIG5vdCBwYXJ0IG9mIHRoZSBwdWJsaWNhdGlvbg0KDQotLUl0IG9ubHkg bGV0IHRhYl9yb290IGRyb3BwZWQuIEV2ZW4gaWYgSSBnYXZlIE9OTFksIGFsbCBwYXJpdGl0b25z IHdlcmUgYWxzbyBkcm9wcGVkIHRvIGJlIHB1Ymxpc2hlZC4NCnBvc3RncmVzPSMgYWx0ZXIgcHVi bGljYXRpb24gcHViMSBkcm9wIHRhYmxlIG9ubHkgdGFiX3Jvb3Q7DQpBTFRFUiBQVUJMSUNBVElP Tg0KDQpwb3N0Z3Jlcz0jIFNFTEVDVCBjLnJlbG5hbWUsIHAucHVibmFtZSBGUk9NIHBnX3B1Ymxp Y2F0aW9uX3JlbCBwciBKT0lOIHBnX2NsYXNzIGMgT04gYy5vaWQgPSBwci5wcnJlbGlkIEpPSU4g cGdfcHVibGljYXRpb24gcCBPTiBwLm9pZCA9IHByLnBycHViaWQ7DQogcmVsbmFtZSB8IHB1Ym5h bWUgDQotLS0tLS0tLS0rLS0tLS0tLS0tDQooMCByb3dzKQ0KDQpwb3N0Z3Jlcz0jIHNlbGVjdCAq IGZyb20gcGdfcHVibGljYXRpb25fdGFibGVzOw0KIHB1Ym5hbWUgfCBzY2hlbWFuYW1lIHwgdGFi bGVuYW1lIHwgYXR0bmFtZXMgfCByb3dmaWx0ZXIgDQotLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0NCigwIHJvd3MpDQoNCg0KDQo9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0NCmRyb3AgcHVibGljYXRpb24gcHViMTsJDQoNCi0t Tm93IHRyeSB3aXRoIFBVQkxJU0hfVklBX1BBUlRJVElPTl9ST09UIGFzIHRydWU6DQpjcmVhdGUg cHVibGljYXRpb24gcHViMSBmb3IgdGFibGUgdGFiX3Jvb3Qgd2l0aCAoIFBVQkxJU0hfVklBX1BB UlRJVElPTl9ST09UPXRydWUpOw0KcG9zdGdyZXM9IyBcZFJwKw0KICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiBwdWIxDQogT3duZXIgIHwg QWxsIHRhYmxlcyB8IEFsbCBzZXF1ZW5jZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMg fCBUcnVuY2F0ZXMgfCBHZW5lcmF0ZWQgY29sdW1ucyB8IFZpYSByb290IA0KLS0tLS0tLS0rLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSst LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0NCiBzaHZldGEgfCBmICAg ICAgICAgIHwgZiAgICAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQg ICAgICAgICB8IG5vbmUgICAgICAgICAgICAgIHwgdA0KVGFibGVzOg0KICAgICJwdWJsaWMudGFi X3Jvb3QiDQoJDQoJDQpwb3N0Z3Jlcz0jIFNFTEVDVCBjLnJlbG5hbWUsIHAucHVibmFtZSBGUk9N IHBnX3B1YmxpY2F0aW9uX3JlbCBwciBKT0lOIHBnX2NsYXNzIGMgT04gYy5vaWQgPSBwci5wcnJl bGlkIEpPSU4gcGdfcHVibGljYXRpb24gcCBPTiBwLm9pZCA9IHByLnBycHViaWQ7DQogcmVsbmFt ZSAgfCBwdWJuYW1lIA0KLS0tLS0tLS0tLSstLS0tLS0tLS0NCiB0YWJfcm9vdCB8IHB1YjENCigx IHJvdykNCg0KDQotLVRoaXMgb3V0cHV0IGlzIGRpZmZlcmVudCBhcyBjb21wYXJlZCB0byBQVUJM SVNIX1ZJQV9QQVJUSVRJT05fUk9PVD1mYWxzZSBjYXNlLg0KcG9zdGdyZXM9IyBzZWxlY3QgKiBm cm9tIHBnX3B1YmxpY2F0aW9uX3RhYmxlczsNCiBwdWJuYW1lIHwgc2NoZW1hbmFtZSB8IHRhYmxl bmFtZSB8ICAgIGF0dG5hbWVzICAgICB8IHJvd2ZpbHRlciANCi0tLS0tLS0tLSstLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0NCiBwdWIxICAgIHwg cHVibGljICAgICB8IHRhYl9yb290ICB8IHtyYW5nZV9jb2wsaSxqfSB8IA0KDQoNCi0tUmVzdCBv ZiB0aGUgb3V0cHV0IGlzIHNhbWUgYXMgdGhhdCBvZiBQVUJMSVNIX1ZJQV9QQVJUSVRJT05fUk9P VD1mYWxzZToNCnBvc3RncmVzPSMgYWx0ZXIgcHVibGljYXRpb24gcHViMSBkcm9wIHRhYmxlIG9u bHkgdGFiX3BhcnRfMjsNCkVSUk9SOiAgcmVsYXRpb24gInRhYl9wYXJ0XzIiIGlzIG5vdCBwYXJ0 IG9mIHRoZSBwdWJsaWNhdGlvbg0KcG9zdGdyZXM9IyAgYWx0ZXIgcHVibGljYXRpb24gcHViMSBk cm9wIHRhYmxlIG9ubHkgdGFiX3BhcnRfMV9wMTsNCkVSUk9SOiAgcmVsYXRpb24gInRhYl9wYXJ0 XzFfcDEiIGlzIG5vdCBwYXJ0IG9mIHRoZSBwdWJsaWNhdGlvbg0KcG9zdGdyZXM9IyBhbHRlciBw dWJsaWNhdGlvbiBwdWIxIGRyb3AgdGFibGUgb25seSB0YWJfcGFydF8xOw0KRVJST1I6ICByZWxh dGlvbiAidGFiX3BhcnRfMSIgaXMgbm90IHBhcnQgb2YgdGhlIHB1YmxpY2F0aW9uDQpwb3N0Z3Jl cz0jICBhbHRlciBwdWJsaWNhdGlvbiBwdWIxIGRyb3AgdGFibGUgb25seSB0YWJfcm9vdDsNCkFM VEVSIFBVQkxJQ0FUSU9ODQpwb3N0Z3Jlcz0jIFNFTEVDVCBjLnJlbG5hbWUsIHAucHVibmFtZSBG Uk9NIHBnX3B1YmxpY2F0aW9uX3JlbCBwciBKT0lOIHBnX2NsYXNzIGMgT04gYy5vaWQgPSBwci5w cnJlbGlkIEpPSU4gcGdfcHVibGljYXRpb24gcCBPTiBwLm9pZCA9IHByLnBycHViaWQ7DQogcmVs bmFtZSB8IHB1Ym5hbWUgDQotLS0tLS0tLS0rLS0tLS0tLS0tDQooMCByb3dzKQ0KDQpwb3N0Z3Jl cz0jIHNlbGVjdCAqIGZyb20gcGdfcHVibGljYXRpb25fdGFibGVzOw0KIHB1Ym5hbWUgfCBzY2hl bWFuYW1lIHwgdGFibGVuYW1lIHwgYXR0bmFtZXMgfCByb3dmaWx0ZXIgDQotLS0tLS0tLS0rLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0NCigwIHJvd3MpDQoN Cg== --0000000000001753b70648ba7467--