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 1vnH3S-004WeG-1p for pgsql-hackers@arkaria.postgresql.org; Tue, 03 Feb 2026 14:06:58 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vnH3Q-00521b-1W for pgsql-hackers@arkaria.postgresql.org; Tue, 03 Feb 2026 14:06:56 +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 1vnH3Q-00521T-0L for pgsql-hackers@lists.postgresql.org; Tue, 03 Feb 2026 14:06:55 +0000 Received: from mail-yw1-x112a.google.com ([2607:f8b0:4864:20::112a]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1vnH3N-00000000qXL-0Vbf for pgsql-hackers@lists.postgresql.org; Tue, 03 Feb 2026 14:06:55 +0000 Received: by mail-yw1-x112a.google.com with SMTP id 00721157ae682-794f281eb04so6564607b3.2 for ; Tue, 03 Feb 2026 06:06:52 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1770127611; x=1770732411; darn=lists.postgresql.org; h=to:from:subject:message-id:date:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=pDG63OvSHMAgnlOmZOmbiTS+u2M9+7HoccmhcRneHBc=; b=Qx4weM9irTUJrKqtmU4dPhB7OtNiA3KrtrlSXd+zcVIN3gWMfKywxx8fGleLRM0E8N rHnnCGAgLYoOYuA+R4RRufKMqEJ7kteComXI2172wtt4XUyJIOIdrv8u7TUkopKIUSdQ G5RYNa+NMUt2LfdjhlRCzvwFhzt0CUBUI29Gol97emt1DtQbOcDxGZaZ8uN3L0WVONUy 3k53cec9DgCqkr34lTtbju9S8OYfLkkP5QRAY6+6h3zZDSLO3/oudPh1uXTryfai1fkt IfpF/bhsh2bDacO28HSkwE+KMYQ8nOQR+0CQtbTEjxVKUXH/8B/uFmLV+kvCDXTJsMA+ F0Mg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770127611; x=1770732411; h=to:from:subject:message-id:date:mime-version:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=pDG63OvSHMAgnlOmZOmbiTS+u2M9+7HoccmhcRneHBc=; b=s+0+wOGmiO2GJIt/n7Q1yBc0UXfpWZWYcsyyz+QcmKJ3GwfZv1SPiuQJXiKyZypXE9 CUaSFz8sC0y7oLGjH/kYIv7++dUAh12HpI95AU1RRnMDeKFy4reNBvEvxZpkiGvWFz3e Dj1Bc/nhBglyQMz1rdcCl4/chzDR9l/pUZz26JxvyxR367BQ9YohivF4UO7DeGabu+1E /R1+/UYvlOe0IV5e4ylYm994B5rtKi82/Hx+Btd4D0eRulOJRiPpz/1IleAflGBN7gLm Rc4UJ0DEnM96vnzGqbCRaEL3H6FLLSHy0jqMqCmim8VKffX9uWfwtAfJcDLWBGbObsN7 jHVQ== X-Gm-Message-State: AOJu0YzTSfyxwdzdAqLfXhx0pJ2NVzvXsx2bi/2I3WoPHNyEYlBChl5j dQNw4FhsoDLqZLpSQSu+8P0dWG1nw6IZqle5aJxmI7S4SCq/Mw4147t7kiWOjA== X-Gm-Gg: AZuq6aI3VWNcvYW96+BmjKtRpq74EEmqzG6zlD+Eh4dzII8rff95YMp0+OVdYXi0L1R z7ddenNOLq437qFAmeJ/LXAYZZKatU7aiB4yZ7QeZt/yJE8WAEg/DR/qyKVSF/lGZMTdcss/EiH mcjdntPaMqWvCTwCHFZbPp7J1kaY9Pes+ePMIj+TV0joD9ytaBh55i2LSSzKtAOTvg9+njkOraV WnnhAd4e/UkAbmuTvFijPlYl3IcbTEhpp7/VjEsX7mK2MStDHy/x19H5WO3eMy9FLy0rF3z9TqN yWsNjwpWFaI5EbW4VejRtc/42xraXWKiWGjhUtwhWDy/mFr6IVffXabDmxcf+qMFCQBkvq9lJC9 SG+1f0HIF1sDMlT6JuxcoEC3Kq36nxqn06PQrG60AXszcmyZj2ED9hRRY9+ZpKt/KnXVK9VLBr8 xqMGZxAl+NRQOeTTnLIyZfLdI72LVvUppH6w== X-Received: by 2002:a05:690c:7:b0:794:c2fc:73dc with SMTP id 00721157ae682-794c2fc7de4mr169211807b3.64.1770127610757; Tue, 03 Feb 2026 06:06:50 -0800 (PST) Received: from localhost ([2804:14d:328a:a59c:4dbf:1754:94e2:5dee]) by smtp.gmail.com with ESMTPSA id 956f58d0204a3-649b30b5825sm7907812d50.24.2026.02.03.06.06.49 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 03 Feb 2026 06:06:50 -0800 (PST) Content-Type: multipart/mixed; boundary=d7a07d59fe64c09171a36ccc5c064e404b0b73e3da01b4d1b29214e36246 Mime-Version: 1.0 Date: Tue, 03 Feb 2026 11:06:47 -0300 Message-Id: Subject: Show expression of virtual columns in error messages From: "Matheus Alcantara" To: X-Mailer: aerc 0.21.0 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --d7a07d59fe64c09171a36ccc5c064e404b0b73e3da01b4d1b29214e36246 Content-Type: multipart/alternative; boundary=e42a387e64a3ebd8055e265a158c2e7d8d236b11d601f0dfb1069d3d2959 --e42a387e64a3ebd8055e265a158c2e7d8d236b11d601f0dfb1069d3d2959 Content-Transfer-Encoding: quoted-printable Content-Disposition: inline Content-Type: text/plain; charset=UTF-8 Hi, When a constraint violation occurs on a table with virtual generated columns, the "Failing row contains" error message currently displays the literal string "virtual" as a placeholder: CREATE TABLE t (a int, b int, c int GENERATED ALWAYS AS (a * 2) VIRTUAL C= HECK (c < 10)); INSERT INTO t VALUES (5, 10); ERROR: new row for relation "t" violates check constraint "t_c_check" DETAIL: Failing row contains (5, 10, virtual). This isn't very helpful for debugging, especially when the user needs to understand why the check constraint failed or if multiple virtual generated columns are involved on the original statement. The attached patch changes this behavior to show the virtual column expression instead: ERROR: new row for relation "t" violates check constraint "t_c_check" DETAIL: Failing row contains (5, 10, a * 2). An alternative approach would be to compute and display the actual value of the virtual column (e.g., "10" instead of "a * 2"). However, I chose to show the expression because: 1. It's simpler to implement (no need to evaluate the expression) 2. It shows the user *how* the value is computed, which may be more useful for understanding why a constraint failed 3. It avoids potential issues with expression evaluation in error paths Thoughts? -- Matheus Alcantara EDB: https://www.enterprisedb.com --e42a387e64a3ebd8055e265a158c2e7d8d236b11d601f0dfb1069d3d2959-- --d7a07d59fe64c09171a36ccc5c064e404b0b73e3da01b4d1b29214e36246 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v1-0001-Show-expression-of-virtual-columns-in-error-messa.patch Content-Type: text/plain; charset=utf-8; name=v1-0001-Show-expression-of-virtual-columns-in-error-messa.patch RnJvbSBlNjE1YjBiNWFmZWZhY2E2NDQyYTI4Y2UyMzAyOWE5NGZjNTVmOTIyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXRoZXVzIEFsY2FudGFyYSA8bXRocy5kZXZAcG0ubWU+CkRh dGU6IE1vbiwgMiBGZWIgMjAyNiAxOTowNjo0NCAtMDMwMApTdWJqZWN0OiBbUEFUQ0ggdjFdIFNo b3cgZXhwcmVzc2lvbiBvZiB2aXJ0dWFsIGNvbHVtbnMgaW4gZXJyb3IgbWVzc2FnZXMKClByZXZp b3VzbHksIHdoZW4gYSBjb25zdHJhaW50IHZpb2xhdGlvbiBvY2N1cnJlZCBvbiBhIHRhYmxlIHdp dGggdmlydHVhbApnZW5lcmF0ZWQgY29sdW1ucywgdGhlICJGYWlsaW5nIHJvdyBjb250YWlucyIg ZXJyb3IgbWVzc2FnZSB3b3VsZCBkaXNwbGF5CnRoZSBsaXRlcmFsIHN0cmluZyAidmlydHVhbCIg YXMgYSBwbGFjZWhvbGRlciBmb3IgdGhvc2UgY29sdW1ucy4gVGhpcyB3YXMKbm90IGhlbHBmdWwg Zm9yIGRlYnVnZ2luZy4KCk5vdywgdGhlIGdlbmVyYXRpb24gZXhwcmVzc2lvbiBpcyBzaG93biBp bnN0ZWFkLCBtYWtpbmcgaXQgZWFzaWVyIHRvCnVuZGVyc3RhbmQgd2hhdCB2YWx1ZSB3b3VsZCBi ZSBjb21wdXRlZCBmb3IgdGhlIHZpcnR1YWwgY29sdW1uLgoKRm9yIGV4YW1wbGUsIGluc3RlYWQg b2Y6CiAgRmFpbGluZyByb3cgY29udGFpbnMgKDUsIDEwLCB2aXJ0dWFsKS4KClRoZSBlcnJvciBt ZXNzYWdlIG5vdyBzaG93czoKICBGYWlsaW5nIHJvdyBjb250YWlucyAoNSwgMTAsIGEgKiAyKS4K ClRoaXMgcmVxdWlyZWQgY2hhbmdpbmcgRXhlY0J1aWxkU2xvdFZhbHVlRGVzY3JpcHRpb24oKSB0 byBhY2NlcHQgYQpSZWxhdGlvbiBpbnN0ZWFkIG9mIGp1c3QgYW4gT2lkLCBzbyB0aGF0IGJ1aWxk X2dlbmVyYXRpb25fZXhwcmVzc2lvbigpCmNhbiBiZSBjYWxsZWQgdG8gcmV0cmlldmUgdGhlIGNv bHVtbidzIGdlbmVyYXRpb24gZXhwcmVzc2lvbi4KLS0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9l eGVjTWFpbi5jICAgICAgICAgICAgICAgfCAzMCArKysrKysrKysrKystLS0tLS0tCiBzcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2NvbmZsaWN0LmMgICAgfCAgNyArKy0tLQogc3JjL2lu Y2x1ZGUvZXhlY3V0b3IvZXhlY3V0b3IuaCAgICAgICAgICAgICAgIHwgIDIgKy0KIC4uLi9yZWdy ZXNzL2V4cGVjdGVkL2dlbmVyYXRlZF92aXJ0dWFsLm91dCAgICB8IDE4ICsrKysrLS0tLS0tCiBz cmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BhcnRpdGlvbl9tZXJnZS5vdXQgfCAgMiArLQogNSBm aWxlcyBjaGFuZ2VkLCAzMyBpbnNlcnRpb25zKCspLCAyNiBkZWxldGlvbnMoLSkKCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0 b3IvZXhlY01haW4uYwppbmRleCBiZmQzZWJjNjAxZS4uNjIwOGY2NTMwYmEgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0 b3IvZXhlY01haW4uYwpAQCAtNjEsNiArNjEsNyBAQAogI2luY2x1ZGUgInV0aWxzL2xzeXNjYWNo ZS5oIgogI2luY2x1ZGUgInV0aWxzL3BhcnRjYWNoZS5oIgogI2luY2x1ZGUgInV0aWxzL3Jscy5o IgorI2luY2x1ZGUgInV0aWxzL3J1bGV1dGlscy5oIgogI2luY2x1ZGUgInV0aWxzL3NuYXBtZ3Iu aCIKIAogCkBAIC0xOTE0LDcgKzE5MTUsNyBAQCBFeGVjUGFydGl0aW9uQ2hlY2tFbWl0RXJyb3Io UmVzdWx0UmVsSW5mbyAqcmVzdWx0UmVsSW5mbywKIAkJCQkJCQlUdXBsZVRhYmxlU2xvdCAqc2xv dCwKIAkJCQkJCQlFU3RhdGUgKmVzdGF0ZSkKIHsKLQlPaWQJCQlyb290X3JlbGlkOworCVJlbGF0 aW9uCXJvb3RfcmVsOwogCVR1cGxlRGVzYwl0dXBkZXNjOwogCWNoYXIJICAgKnZhbF9kZXNjOwog CUJpdG1hcHNldCAgKm1vZGlmaWVkQ29sczsKQEAgLTE5MzEsOCArMTkzMiw4IEBAIEV4ZWNQYXJ0 aXRpb25DaGVja0VtaXRFcnJvcihSZXN1bHRSZWxJbmZvICpyZXN1bHRSZWxJbmZvLAogCQlUdXBs ZURlc2MJb2xkX3R1cGRlc2M7CiAJCUF0dHJNYXAgICAgKm1hcDsKIAotCQlyb290X3JlbGlkID0g UmVsYXRpb25HZXRSZWxpZChyb290cmVsLT5yaV9SZWxhdGlvbkRlc2MpOwotCQl0dXBkZXNjID0g UmVsYXRpb25HZXREZXNjcihyb290cmVsLT5yaV9SZWxhdGlvbkRlc2MpOworCQlyb290X3JlbCA9 IHJvb3RyZWwtPnJpX1JlbGF0aW9uRGVzYzsKKwkJdHVwZGVzYyA9IFJlbGF0aW9uR2V0RGVzY3Io cm9vdF9yZWwpOwogCiAJCW9sZF90dXBkZXNjID0gUmVsYXRpb25HZXREZXNjcihyZXN1bHRSZWxJ bmZvLT5yaV9SZWxhdGlvbkRlc2MpOwogCQkvKiBhIHJldmVyc2UgbWFwICovCkBAIC0xOTUwLDEz ICsxOTUxLDEzIEBAIEV4ZWNQYXJ0aXRpb25DaGVja0VtaXRFcnJvcihSZXN1bHRSZWxJbmZvICpy ZXN1bHRSZWxJbmZvLAogCX0KIAllbHNlCiAJewotCQlyb290X3JlbGlkID0gUmVsYXRpb25HZXRS ZWxpZChyZXN1bHRSZWxJbmZvLT5yaV9SZWxhdGlvbkRlc2MpOwotCQl0dXBkZXNjID0gUmVsYXRp b25HZXREZXNjcihyZXN1bHRSZWxJbmZvLT5yaV9SZWxhdGlvbkRlc2MpOworCQlyb290X3JlbCA9 IHJlc3VsdFJlbEluZm8tPnJpX1JlbGF0aW9uRGVzYzsKKwkJdHVwZGVzYyA9IFJlbGF0aW9uR2V0 RGVzY3Iocm9vdF9yZWwpOwogCQltb2RpZmllZENvbHMgPSBibXNfdW5pb24oRXhlY0dldEluc2Vy dGVkQ29scyhyZXN1bHRSZWxJbmZvLCBlc3RhdGUpLAogCQkJCQkJCQkgRXhlY0dldFVwZGF0ZWRD b2xzKHJlc3VsdFJlbEluZm8sIGVzdGF0ZSkpOwogCX0KIAotCXZhbF9kZXNjID0gRXhlY0J1aWxk U2xvdFZhbHVlRGVzY3JpcHRpb24ocm9vdF9yZWxpZCwKKwl2YWxfZGVzYyA9IEV4ZWNCdWlsZFNs b3RWYWx1ZURlc2NyaXB0aW9uKHJvb3RfcmVsLAogCQkJCQkJCQkJCQkgc2xvdCwKIAkJCQkJCQkJ CQkJIHR1cGRlc2MsCiAJCQkJCQkJCQkJCSBtb2RpZmllZENvbHMsCkBAIC0yMDY4LDcgKzIwNjks NyBAQCBFeGVjQ29uc3RyYWludHMoUmVzdWx0UmVsSW5mbyAqcmVzdWx0UmVsSW5mbywKIAkJCWVs c2UKIAkJCQltb2RpZmllZENvbHMgPSBibXNfdW5pb24oRXhlY0dldEluc2VydGVkQ29scyhyZXN1 bHRSZWxJbmZvLCBlc3RhdGUpLAogCQkJCQkJCQkJCSBFeGVjR2V0VXBkYXRlZENvbHMocmVzdWx0 UmVsSW5mbywgZXN0YXRlKSk7Ci0JCQl2YWxfZGVzYyA9IEV4ZWNCdWlsZFNsb3RWYWx1ZURlc2Ny aXB0aW9uKFJlbGF0aW9uR2V0UmVsaWQocmVsKSwKKwkJCXZhbF9kZXNjID0gRXhlY0J1aWxkU2xv dFZhbHVlRGVzY3JpcHRpb24ocmVsLAogCQkJCQkJCQkJCQkJCSBzbG90LAogCQkJCQkJCQkJCQkJ CSB0dXBkZXNjLAogCQkJCQkJCQkJCQkJCSBtb2RpZmllZENvbHMsCkBAIC0yMjA1LDcgKzIyMDYs NyBAQCBSZXBvcnROb3ROdWxsVmlvbGF0aW9uRXJyb3IoUmVzdWx0UmVsSW5mbyAqcmVzdWx0UmVs SW5mbywgVHVwbGVUYWJsZVNsb3QgKnNsb3QsCiAJCW1vZGlmaWVkQ29scyA9IGJtc191bmlvbihF eGVjR2V0SW5zZXJ0ZWRDb2xzKHJlc3VsdFJlbEluZm8sIGVzdGF0ZSksCiAJCQkJCQkJCSBFeGVj R2V0VXBkYXRlZENvbHMocmVzdWx0UmVsSW5mbywgZXN0YXRlKSk7CiAKLQl2YWxfZGVzYyA9IEV4 ZWNCdWlsZFNsb3RWYWx1ZURlc2NyaXB0aW9uKFJlbGF0aW9uR2V0UmVsaWQocmVsKSwKKwl2YWxf ZGVzYyA9IEV4ZWNCdWlsZFNsb3RWYWx1ZURlc2NyaXB0aW9uKHJlbCwKIAkJCQkJCQkJCQkJIHNs b3QsCiAJCQkJCQkJCQkJCSB0dXBkZXNjLAogCQkJCQkJCQkJCQkgbW9kaWZpZWRDb2xzLApAQCAt MjMxMyw3ICsyMzE0LDcgQEAgRXhlY1dpdGhDaGVja09wdGlvbnMoV0NPS2luZCBraW5kLCBSZXN1 bHRSZWxJbmZvICpyZXN1bHRSZWxJbmZvLAogCQkJCQllbHNlCiAJCQkJCQltb2RpZmllZENvbHMg PSBibXNfdW5pb24oRXhlY0dldEluc2VydGVkQ29scyhyZXN1bHRSZWxJbmZvLCBlc3RhdGUpLAog CQkJCQkJCQkJCQkJIEV4ZWNHZXRVcGRhdGVkQ29scyhyZXN1bHRSZWxJbmZvLCBlc3RhdGUpKTsK LQkJCQkJdmFsX2Rlc2MgPSBFeGVjQnVpbGRTbG90VmFsdWVEZXNjcmlwdGlvbihSZWxhdGlvbkdl dFJlbGlkKHJlbCksCisJCQkJCXZhbF9kZXNjID0gRXhlY0J1aWxkU2xvdFZhbHVlRGVzY3JpcHRp b24ocmVsLAogCQkJCQkJCQkJCQkJCQkJIHNsb3QsCiAJCQkJCQkJCQkJCQkJCQkgdHVwZGVzYywK IAkJCQkJCQkJCQkJCQkJCSBtb2RpZmllZENvbHMsCkBAIC0yMzkyLDEyICsyMzkzLDEzIEBAIEV4 ZWNXaXRoQ2hlY2tPcHRpb25zKFdDT0tpbmQga2luZCwgUmVzdWx0UmVsSW5mbyAqcmVzdWx0UmVs SW5mbywKICAqIGNvbHVtbnMgdGhleSBhcmUuCiAgKi8KIGNoYXIgKgotRXhlY0J1aWxkU2xvdFZh bHVlRGVzY3JpcHRpb24oT2lkIHJlbG9pZCwKK0V4ZWNCdWlsZFNsb3RWYWx1ZURlc2NyaXB0aW9u KFJlbGF0aW9uIHJlbCwKIAkJCQkJCQkgIFR1cGxlVGFibGVTbG90ICpzbG90LAogCQkJCQkJCSAg VHVwbGVEZXNjIHR1cGRlc2MsCiAJCQkJCQkJICBCaXRtYXBzZXQgKm1vZGlmaWVkQ29scywKIAkJ CQkJCQkgIGludCBtYXhmaWVsZGxlbikKIHsKKwlPaWQJCQlyZWxvaWQgPSBSZWxhdGlvbkdldFJl bGlkKHJlbCk7CiAJU3RyaW5nSW5mb0RhdGEgYnVmOwogCVN0cmluZ0luZm9EYXRhIGNvbGxpc3Q7 CiAJYm9vbAkJd3JpdGVfY29tbWEgPSBmYWxzZTsKQEAgLTI0NzcsNyArMjQ3OSwxMyBAQCBFeGVj QnVpbGRTbG90VmFsdWVEZXNjcmlwdGlvbihPaWQgcmVsb2lkLAogCQlpZiAodGFibGVfcGVybSB8 fCBjb2x1bW5fcGVybSkKIAkJewogCQkJaWYgKGF0dC0+YXR0Z2VuZXJhdGVkID09IEFUVFJJQlVU RV9HRU5FUkFURURfVklSVFVBTCkKLQkJCQl2YWwgPSAidmlydHVhbCI7CisJCQl7CisJCQkJTm9k ZQkgICAqZ2VuZXhwciA9IGJ1aWxkX2dlbmVyYXRpb25fZXhwcmVzc2lvbihyZWwsIGF0dC0+YXR0 bnVtKTsKKwkJCQlMaXN0CSAgICpkcGNvbnRleHQgPSBkZXBhcnNlX2NvbnRleHRfZm9yKFJlbGF0 aW9uR2V0UmVsYXRpb25OYW1lKHJlbCksCisJCQkJCQkJCQkJCQkJCQlyZWxvaWQpOworCisJCQkJ dmFsID0gZGVwYXJzZV9leHByZXNzaW9uKGdlbmV4cHIsIGRwY29udGV4dCwgZmFsc2UsIGZhbHNl KTsKKwkJCX0KIAkJCWVsc2UgaWYgKHNsb3QtPnR0c19pc251bGxbaV0pCiAJCQkJdmFsID0gIm51 bGwiOwogCQkJZWxzZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNh bC9jb25mbGljdC5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9jb25mbGljdC5j CmluZGV4IGNhNzFhODFjN2JmLi40NzhjMGEyMjNmYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vbG9naWNhbC9jb25mbGljdC5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL2xvZ2ljYWwvY29uZmxpY3QuYwpAQCAtNDMyLDcgKzQzMiw2IEBAIGdldF90dXBsZV9kZXNj KEVTdGF0ZSAqZXN0YXRlLCBSZXN1bHRSZWxJbmZvICpyZWxpbmZvLCBDb25mbGljdFR5cGUgdHlw ZSwKIAkJCSAgIE9pZCBpbmRleG9pZCkKIHsKIAlSZWxhdGlvbglsb2NhbHJlbCA9IHJlbGluZm8t PnJpX1JlbGF0aW9uRGVzYzsKLQlPaWQJCQlyZWxpZCA9IFJlbGF0aW9uR2V0UmVsaWQobG9jYWxy ZWwpOwogCVR1cGxlRGVzYwl0dXBkZXNjID0gUmVsYXRpb25HZXREZXNjcihsb2NhbHJlbCk7CiAJ Y2hhcgkgICAqZGVzYyA9IE5VTEw7CiAKQEAgLTQ2MSw3ICs0NjAsNyBAQCBnZXRfdHVwbGVfZGVz YyhFU3RhdGUgKmVzdGF0ZSwgUmVzdWx0UmVsSW5mbyAqcmVsaW5mbywgQ29uZmxpY3RUeXBlIHR5 cGUsCiAJCSAqIFRoZSAnbW9kaWZpZWRDb2xzJyBvbmx5IGFwcGxpZXMgdG8gdGhlIG5ldyB0dXBs ZSwgaGVuY2Ugd2UgcGFzcwogCQkgKiBOVUxMIGZvciB0aGUgbG9jYWwgcm93LgogCQkgKi8KLQkJ ZGVzYyA9IEV4ZWNCdWlsZFNsb3RWYWx1ZURlc2NyaXB0aW9uKHJlbGlkLCBsb2NhbHNsb3QsIHR1 cGRlc2MsCisJCWRlc2MgPSBFeGVjQnVpbGRTbG90VmFsdWVEZXNjcmlwdGlvbihsb2NhbHJlbCwg bG9jYWxzbG90LCB0dXBkZXNjLAogCQkJCQkJCQkJCQkgTlVMTCwgNjQpOwogCiAJCWlmIChkZXNj KQpAQCAtNDgxLDcgKzQ4MCw3IEBAIGdldF90dXBsZV9kZXNjKEVTdGF0ZSAqZXN0YXRlLCBSZXN1 bHRSZWxJbmZvICpyZWxpbmZvLCBDb25mbGljdFR5cGUgdHlwZSwKIAkJICovCiAJCW1vZGlmaWVk Q29scyA9IGJtc191bmlvbihFeGVjR2V0SW5zZXJ0ZWRDb2xzKHJlbGluZm8sIGVzdGF0ZSksCiAJ CQkJCQkJCSBFeGVjR2V0VXBkYXRlZENvbHMocmVsaW5mbywgZXN0YXRlKSk7Ci0JCWRlc2MgPSBF eGVjQnVpbGRTbG90VmFsdWVEZXNjcmlwdGlvbihyZWxpZCwgcmVtb3Rlc2xvdCwKKwkJZGVzYyA9 IEV4ZWNCdWlsZFNsb3RWYWx1ZURlc2NyaXB0aW9uKGxvY2FscmVsLCByZW1vdGVzbG90LAogCQkJ CQkJCQkJCQkgdHVwZGVzYywgbW9kaWZpZWRDb2xzLAogCQkJCQkJCQkJCQkgNjQpOwogCkBAIC01 MTAsNyArNTA5LDcgQEAgZ2V0X3R1cGxlX2Rlc2MoRVN0YXRlICplc3RhdGUsIFJlc3VsdFJlbElu Zm8gKnJlbGluZm8sIENvbmZsaWN0VHlwZSB0eXBlLAogCQlpZiAoT2lkSXNWYWxpZChyZXBsaWNh X2luZGV4KSkKIAkJCWRlc2MgPSBidWlsZF9pbmRleF92YWx1ZV9kZXNjKGVzdGF0ZSwgbG9jYWxy ZWwsIHNlYXJjaHNsb3QsIHJlcGxpY2FfaW5kZXgpOwogCQllbHNlCi0JCQlkZXNjID0gRXhlY0J1 aWxkU2xvdFZhbHVlRGVzY3JpcHRpb24ocmVsaWQsIHNlYXJjaHNsb3QsIHR1cGRlc2MsIE5VTEws IDY0KTsKKwkJCWRlc2MgPSBFeGVjQnVpbGRTbG90VmFsdWVEZXNjcmlwdGlvbihsb2NhbHJlbCwg c2VhcmNoc2xvdCwgdHVwZGVzYywgTlVMTCwgNjQpOwogCiAJCWlmIChkZXNjKQogCQl7CmRpZmYg LS1naXQgYS9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjdXRvci5oIGIvc3JjL2luY2x1ZGUvZXhl Y3V0b3IvZXhlY3V0b3IuaAppbmRleCA1NWE3ZDkzMGQyNi4uMmZmYjk3ZDQ4Y2EgMTAwNjQ0Ci0t LSBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWN1dG9yLmgKKysrIGIvc3JjL2luY2x1ZGUvZXhl Y3V0b3IvZXhlY3V0b3IuaApAQCAtMjY5LDcgKzI2OSw3IEBAIGV4dGVybiB2b2lkIEV4ZWNQYXJ0 aXRpb25DaGVja0VtaXRFcnJvcihSZXN1bHRSZWxJbmZvICpyZXN1bHRSZWxJbmZvLAogCQkJCQkJ CQkJCVR1cGxlVGFibGVTbG90ICpzbG90LCBFU3RhdGUgKmVzdGF0ZSk7CiBleHRlcm4gdm9pZCBF eGVjV2l0aENoZWNrT3B0aW9ucyhXQ09LaW5kIGtpbmQsIFJlc3VsdFJlbEluZm8gKnJlc3VsdFJl bEluZm8sCiAJCQkJCQkJCSBUdXBsZVRhYmxlU2xvdCAqc2xvdCwgRVN0YXRlICplc3RhdGUpOwot ZXh0ZXJuIGNoYXIgKkV4ZWNCdWlsZFNsb3RWYWx1ZURlc2NyaXB0aW9uKE9pZCByZWxvaWQsIFR1 cGxlVGFibGVTbG90ICpzbG90LAorZXh0ZXJuIGNoYXIgKkV4ZWNCdWlsZFNsb3RWYWx1ZURlc2Ny aXB0aW9uKFJlbGF0aW9uIHJlbCwgVHVwbGVUYWJsZVNsb3QgKnNsb3QsCiAJCQkJCQkJCQkJICAg VHVwbGVEZXNjIHR1cGRlc2MsCiAJCQkJCQkJCQkJICAgQml0bWFwc2V0ICptb2RpZmllZENvbHMs CiAJCQkJCQkJCQkJICAgaW50IG1heGZpZWxkbGVuKTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQvZ2VuZXJhdGVkX3ZpcnR1YWwub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC9nZW5lcmF0ZWRfdmlydHVhbC5vdXQKaW5kZXggMjQ5ZTY4YmU2NTQuLmNhZGM1MWM1 Mjg4IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2dlbmVyYXRlZF92aXJ0 dWFsLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2dlbmVyYXRlZF92aXJ0dWFs Lm91dApAQCAtNjM4LDcgKzYzOCw3IEBAIENSRUFURSBUQUJMRSBndGVzdDIwIChhIGludCBQUklN QVJZIEtFWSwgYiBpbnQgR0VORVJBVEVEIEFMV0FZUyBBUyAoYSAqIDIpIFZJUlRVCiBJTlNFUlQg SU5UTyBndGVzdDIwIChhKSBWQUxVRVMgKDEwKTsgIC0tIG9rCiBJTlNFUlQgSU5UTyBndGVzdDIw IChhKSBWQUxVRVMgKDMwKTsgIC0tIHZpb2xhdGVzIGNvbnN0cmFpbnQKIEVSUk9SOiAgbmV3IHJv dyBmb3IgcmVsYXRpb24gImd0ZXN0MjAiIHZpb2xhdGVzIGNoZWNrIGNvbnN0cmFpbnQgImd0ZXN0 MjBfYl9jaGVjayIKLURFVEFJTDogIEZhaWxpbmcgcm93IGNvbnRhaW5zICgzMCwgdmlydHVhbCku CitERVRBSUw6ICBGYWlsaW5nIHJvdyBjb250YWlucyAoMzAsIChhICogMikpLgogQUxURVIgVEFC TEUgZ3Rlc3QyMCBBTFRFUiBDT0xVTU4gYiBTRVQgRVhQUkVTU0lPTiBBUyAoYSAqIDEwMCk7ICAt LSB2aW9sYXRlcyBjb25zdHJhaW50IChjdXJyZW50bHkgbm90IHN1cHBvcnRlZCkKIEVSUk9SOiAg QUxURVIgVEFCTEUgLyBTRVQgRVhQUkVTU0lPTiBpcyBub3Qgc3VwcG9ydGVkIGZvciB2aXJ0dWFs IGdlbmVyYXRlZCBjb2x1bW5zIGluIHRhYmxlcyB3aXRoIGNoZWNrIGNvbnN0cmFpbnRzCiBERVRB SUw6ICBDb2x1bW4gImIiIG9mIHJlbGF0aW9uICJndGVzdDIwIiBpcyBhIHZpcnR1YWwgZ2VuZXJh dGVkIGNvbHVtbi4KQEAgLTY2NiwxOCArNjY2LDE4IEBAIEFMVEVSIFRBQkxFIGd0ZXN0MjBjIEFE RCBDT05TVFJBSU5UIHdob2xlX3Jvd19jaGVjayBDSEVDSyAoZ3Rlc3QyMGMgSVMgTk9UIE5VTEwp CiBJTlNFUlQgSU5UTyBndGVzdDIwYyBWQUxVRVMgKDEpOyAgLS0gb2sKIElOU0VSVCBJTlRPIGd0 ZXN0MjBjIFZBTFVFUyAoTlVMTCk7ICAtLSBmYWlscwogRVJST1I6ICBuZXcgcm93IGZvciByZWxh dGlvbiAiZ3Rlc3QyMGMiIHZpb2xhdGVzIGNoZWNrIGNvbnN0cmFpbnQgIndob2xlX3Jvd19jaGVj ayIKLURFVEFJTDogIEZhaWxpbmcgcm93IGNvbnRhaW5zIChudWxsLCB2aXJ0dWFsKS4KK0RFVEFJ TDogIEZhaWxpbmcgcm93IGNvbnRhaW5zIChudWxsLCAoYSAqIDIpKS4KIC0tIG5vdC1udWxsIGNv bnN0cmFpbnRzCiBDUkVBVEUgVEFCTEUgZ3Rlc3QyMWEgKGEgaW50IFBSSU1BUlkgS0VZLCBiIGlu dCBHRU5FUkFURUQgQUxXQVlTIEFTIChudWxsaWYoYSwgMCkpIFZJUlRVQUwgTk9UIE5VTEwpOwog SU5TRVJUIElOVE8gZ3Rlc3QyMWEgKGEpIFZBTFVFUyAoMSk7ICAtLSBvawogSU5TRVJUIElOVE8g Z3Rlc3QyMWEgKGEpIFZBTFVFUyAoMCk7ICAtLSB2aW9sYXRlcyBjb25zdHJhaW50CiBFUlJPUjog IG51bGwgdmFsdWUgaW4gY29sdW1uICJiIiBvZiByZWxhdGlvbiAiZ3Rlc3QyMWEiIHZpb2xhdGVz IG5vdC1udWxsIGNvbnN0cmFpbnQKLURFVEFJTDogIEZhaWxpbmcgcm93IGNvbnRhaW5zICgwLCB2 aXJ0dWFsKS4KK0RFVEFJTDogIEZhaWxpbmcgcm93IGNvbnRhaW5zICgwLCBOVUxMSUYoYSwgMCkp LgogLS0gYWxzbyBjaGVjayB3aXRoIHRhYmxlIGNvbnN0cmFpbnQgc3ludGF4CiBDUkVBVEUgVEFC TEUgZ3Rlc3QyMWF4IChhIGludCBQUklNQVJZIEtFWSwgYiBpbnQgR0VORVJBVEVEIEFMV0FZUyBB UyAobnVsbGlmKGEsIDApKSBWSVJUVUFMLCBDT05TVFJBSU5UIGNjIE5PVCBOVUxMIGIpOwogSU5T RVJUIElOVE8gZ3Rlc3QyMWF4IChhKSBWQUxVRVMgKDApOyAgLS0gdmlvbGF0ZXMgY29uc3RyYWlu dAogRVJST1I6ICBudWxsIHZhbHVlIGluIGNvbHVtbiAiYiIgb2YgcmVsYXRpb24gImd0ZXN0MjFh eCIgdmlvbGF0ZXMgbm90LW51bGwgY29uc3RyYWludAotREVUQUlMOiAgRmFpbGluZyByb3cgY29u dGFpbnMgKDAsIHZpcnR1YWwpLgorREVUQUlMOiAgRmFpbGluZyByb3cgY29udGFpbnMgKDAsIE5V TExJRihhLCAwKSkuCiBJTlNFUlQgSU5UTyBndGVzdDIxYXggKGEpIFZBTFVFUyAoMSk7ICAtLW9r CiAtLSBTRVQgRVhQUkVTU0lPTiBzdXBwb3J0cyBub3QgbnVsbCBjb25zdHJhaW50CiBBTFRFUiBU QUJMRSBndGVzdDIxYXggQUxURVIgQ09MVU1OIGIgU0VUIEVYUFJFU1NJT04gQVMgKG51bGxpZihh LCAxKSk7IC0tZXJyb3IKQEAgLTY4NywxNyArNjg3LDE3IEBAIENSRUFURSBUQUJMRSBndGVzdDIx YXggKGEgaW50IFBSSU1BUlkgS0VZLCBiIGludCBHRU5FUkFURUQgQUxXQVlTIEFTIChudWxsaWYo YSwKIEFMVEVSIFRBQkxFIGd0ZXN0MjFheCBBREQgQ09OU1RSQUlOVCBjYyBOT1QgTlVMTCBiOwog SU5TRVJUIElOVE8gZ3Rlc3QyMWF4IChhKSBWQUxVRVMgKDApOyAgLS0gdmlvbGF0ZXMgY29uc3Ry YWludAogRVJST1I6ICBudWxsIHZhbHVlIGluIGNvbHVtbiAiYiIgb2YgcmVsYXRpb24gImd0ZXN0 MjFheCIgdmlvbGF0ZXMgbm90LW51bGwgY29uc3RyYWludAotREVUQUlMOiAgRmFpbGluZyByb3cg Y29udGFpbnMgKDAsIHZpcnR1YWwpLgorREVUQUlMOiAgRmFpbGluZyByb3cgY29udGFpbnMgKDAs IE5VTExJRihhLCAwKSkuCiBEUk9QIFRBQkxFIGd0ZXN0MjFheDsKIENSRUFURSBUQUJMRSBndGVz dDIxYiAoYSBpbnQsIGIgaW50IEdFTkVSQVRFRCBBTFdBWVMgQVMgKG51bGxpZihhLCAwKSkgVklS VFVBTCk7CiBBTFRFUiBUQUJMRSBndGVzdDIxYiBBTFRFUiBDT0xVTU4gYiBTRVQgTk9UIE5VTEw7 CiBJTlNFUlQgSU5UTyBndGVzdDIxYiAoYSkgVkFMVUVTICgxKTsgIC0tIG9rCiBJTlNFUlQgSU5U TyBndGVzdDIxYiAoYSkgVkFMVUVTICgyKSwgKDApOyAgLS0gdmlvbGF0ZXMgY29uc3RyYWludAog RVJST1I6ICBudWxsIHZhbHVlIGluIGNvbHVtbiAiYiIgb2YgcmVsYXRpb24gImd0ZXN0MjFiIiB2 aW9sYXRlcyBub3QtbnVsbCBjb25zdHJhaW50Ci1ERVRBSUw6ICBGYWlsaW5nIHJvdyBjb250YWlu cyAoMCwgdmlydHVhbCkuCitERVRBSUw6ICBGYWlsaW5nIHJvdyBjb250YWlucyAoMCwgTlVMTElG KGEsIDApKS4KIElOU0VSVCBJTlRPIGd0ZXN0MjFiIChhKSBWQUxVRVMgKE5VTEwpOyAgLS0gZXJy b3IKIEVSUk9SOiAgbnVsbCB2YWx1ZSBpbiBjb2x1bW4gImIiIG9mIHJlbGF0aW9uICJndGVzdDIx YiIgdmlvbGF0ZXMgbm90LW51bGwgY29uc3RyYWludAotREVUQUlMOiAgRmFpbGluZyByb3cgY29u dGFpbnMgKG51bGwsIHZpcnR1YWwpLgorREVUQUlMOiAgRmFpbGluZyByb3cgY29udGFpbnMgKG51 bGwsIE5VTExJRihhLCAwKSkuCiBBTFRFUiBUQUJMRSBndGVzdDIxYiBBTFRFUiBDT0xVTU4gYiBE Uk9QIE5PVCBOVUxMOwogSU5TRVJUIElOVE8gZ3Rlc3QyMWIgKGEpIFZBTFVFUyAoMCk7ICAtLSBv ayBub3cKIC0tIG5vdC1udWxsIGNvbnN0cmFpbnQgd2l0aCBwYXJ0aXRpb25lZCB0YWJsZQpAQCAt NzEyLDEwICs3MTIsMTAgQEAgQ1JFQVRFIFRBQkxFIGd0ZXN0bm5fY2hpbGRkZWYgUEFSVElUSU9O IE9GIGd0ZXN0bm5fcGFyZW50IGRlZmF1bHQ7CiBJTlNFUlQgSU5UTyBndGVzdG5uX3BhcmVudCBW QUxVRVMgKDIsIDIsIGRlZmF1bHQpLCAoMywgNSwgZGVmYXVsdCksICgxNCwgMTIsIGRlZmF1bHQp OyAgLS0gb2sKIElOU0VSVCBJTlRPIGd0ZXN0bm5fcGFyZW50IFZBTFVFUyAoMSwgMiwgZGVmYXVs dCk7ICAtLSBlcnJvcgogRVJST1I6ICBudWxsIHZhbHVlIGluIGNvbHVtbiAiZjMiIG9mIHJlbGF0 aW9uICJndGVzdG5uX2NoaWxkIiB2aW9sYXRlcyBub3QtbnVsbCBjb25zdHJhaW50Ci1ERVRBSUw6 ICBGYWlsaW5nIHJvdyBjb250YWlucyAoMSwgMiwgdmlydHVhbCkuCitERVRBSUw6ICBGYWlsaW5n IHJvdyBjb250YWlucyAoMSwgMiwgKE5VTExJRihmMSwgMSkgKyBOVUxMSUYoZjIsIDEwKSkpLgog SU5TRVJUIElOVE8gZ3Rlc3Rubl9wYXJlbnQgVkFMVUVTICgyLCAxMCwgZGVmYXVsdCk7ICAtLSBl cnJvcgogRVJST1I6ICBudWxsIHZhbHVlIGluIGNvbHVtbiAiZjMiIG9mIHJlbGF0aW9uICJndGVz dG5uX2NoaWxkIiB2aW9sYXRlcyBub3QtbnVsbCBjb25zdHJhaW50Ci1ERVRBSUw6ICBGYWlsaW5n IHJvdyBjb250YWlucyAoMiwgMTAsIHZpcnR1YWwpLgorREVUQUlMOiAgRmFpbGluZyByb3cgY29u dGFpbnMgKDIsIDEwLCAoTlVMTElGKGYxLCAxKSArIE5VTExJRihmMiwgMTApKSkuCiBBTFRFUiBU QUJMRSBndGVzdG5uX3BhcmVudCBBTFRFUiBDT0xVTU4gZjMgU0VUIEVYUFJFU1NJT04gQVMgKG51 bGxpZihmMSwgMikgKyBudWxsaWYoZjIsIDExKSk7ICAtLSBlcnJvcgogRVJST1I6ICBjb2x1bW4g ImYzIiBvZiByZWxhdGlvbiAiZ3Rlc3Rubl9jaGlsZCIgY29udGFpbnMgbnVsbCB2YWx1ZXMKIElO U0VSVCBJTlRPIGd0ZXN0bm5fcGFyZW50IFZBTFVFUyAoMTAsIDExLCBkZWZhdWx0KTsgIC0tIG9r CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BhcnRpdGlvbl9tZXJnZS5v dXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BhcnRpdGlvbl9tZXJnZS5vdXQKaW5kZXgg OTI1ZmU0ZjU3MGEuLmI4ZDIxYTVhN2ZhIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL3BhcnRpdGlvbl9tZXJnZS5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9wYXJ0aXRpb25fbWVyZ2Uub3V0CkBAIC0xMDczLDcgKzEwNzMsNyBAQCBJTlNFUlQgSU5UTyB0 IFZBTFVFUyAoMTYpOwogLS0gRVJST1I6ICBuZXcgcm93IGZvciByZWxhdGlvbiAidHBfMTIiIHZp b2xhdGVzIGNoZWNrIGNvbnN0cmFpbnQgInRfaV9jaGVjayIKIElOU0VSVCBJTlRPIHQgVkFMVUVT ICgwKTsKIEVSUk9SOiAgbmV3IHJvdyBmb3IgcmVsYXRpb24gInRwXzEyIiB2aW9sYXRlcyBjaGVj ayBjb25zdHJhaW50ICJ0X2lfY2hlY2siCi1ERVRBSUw6ICBGYWlsaW5nIHJvdyBjb250YWlucyAo MCwgdmlydHVhbCkuCitERVRBSUw6ICBGYWlsaW5nIHJvdyBjb250YWlucyAoMCwgKGkgKyAodGFi bGVvaWQpOjppbnRlZ2VyKSkuCiAtLSBTaG91bGQgYmUgMyByb3dzOiAoNSksICgxNSksICgxNik6 CiBTRUxFQ1QgaSBGUk9NIHQgT1JERVIgQlkgaTsKICBpICAKLS0gCjIuNTEuMgoK --d7a07d59fe64c09171a36ccc5c064e404b0b73e3da01b4d1b29214e36246--