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 1tn6jj-0029Fo-7L for pgsql-hackers@arkaria.postgresql.org; Wed, 26 Feb 2025 02:01:24 +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 1tn6ii-00CeuM-MJ for pgsql-hackers@arkaria.postgresql.org; Wed, 26 Feb 2025 02:00:20 +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 1tn6ih-00CeuC-TB for pgsql-hackers@lists.postgresql.org; Wed, 26 Feb 2025 02:00:20 +0000 Received: from mail-pl1-x634.google.com ([2607:f8b0:4864:20::634]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1tn6id-0006LA-2P for pgsql-hackers@lists.postgresql.org; Wed, 26 Feb 2025 02:00:18 +0000 Received: by mail-pl1-x634.google.com with SMTP id d9443c01a7336-221057b6ac4so120692225ad.2 for ; Tue, 25 Feb 2025 18:00:16 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=j-davis-com.20230601.gappssmtp.com; s=20230601; t=1740535215; x=1741140015; darn=lists.postgresql.org; h=mime-version:user-agent:references:in-reply-to:date:cc:to:from :subject:message-id:from:to:cc:subject:date:message-id:reply-to; bh=bW1PR7ogaMPD5LefNzlu7o+9zNLoILmefWBu0/CiCOY=; b=yuuBZlP0Z40CGm7rAdhFB6Eur9UDGZFAPGATLJh8QfA6AVNnxYQhYZZn9R9wcznahS jFVx6ZUjgJG1ZqahGxwtVDY3vt3edjcet4zYG2st1fiEL08YCNBMrZqt1YO41m/+uMIm kftrB3FukiSCMBCHJgeDsK0MlV6Zihk2WEJYhseh3nNwxbzbjDm565IZDSw+Qao3pbuM ve146MlQcTtn+2XRgvxC8AKqunMSl7mRBP89gW90r/FCDQEw9OkQmmQd5ld1/GYnOooC +o0iIHXGmaDV98vH8Mxw03K27Z1DpO5YZhroOqLAFkrWYBg1+JggYYPgS27k3oYoHFTW bP9w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740535215; x=1741140015; h=mime-version:user-agent:references:in-reply-to:date:cc:to:from :subject:message-id:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=bW1PR7ogaMPD5LefNzlu7o+9zNLoILmefWBu0/CiCOY=; b=Vc2EKO3LhE8hAPC1ZcuBAoNR502L96ebfMl+38v4+VvMiFmfAiUdoCfKbkcQuimvp4 daadPQvlJbgzS2Av/d7TNQDt7Klr2vX4LeOPNtsgsNf4kQ+BG6Apkv/qydm7+Kyrajq7 u3QTlMtbg1DcZcpiQrrVF+mqtFy3fYNqBNFogmAjRG/meX008OlCYBilQIJ8eCHnUxK2 CV9dZUK5tA9iW4x65welH0Wr9/Vo7jmzv16OPFsBzRkvWystEhYrso7xNFUiGonAC1dq wKY0mXdSzHSv0PzxjqjeMFYjFz8v9hsnrJ6/IVeBehQUpeDSdyPvTGGh57XP8H6IjsEB n2PA== X-Forwarded-Encrypted: i=1; AJvYcCW8SVOi8YA1N6hHLA3zuz93ODCPnljQR9aSwv5HlBryXMXpPxOfDcaeaGgv1DBBDKX7xLJvs9/Fun23eGWA@lists.postgresql.org X-Gm-Message-State: AOJu0YxvLJvTOGvZF/6HrzW2k9LGcWCnJVOChmKhtbE+ZESDfJhbCeRa cuGgShzYoWwXU0BA6S2NDAReKj67JREX5xBjuim+BVLe8mvS1cl49MYNIsMokw== X-Gm-Gg: ASbGncsH2/1xpJesp3iSt/QQqVybc0T3fQNas6Tjc2+JjrtkIQvIaegq/n7vlzQQXcV sBylbySTnYOanqLw/gXxcpCIMTGqsU6WOH9sG0VXPMVeZjgAmnlvAexUsf+QwpEu4H5INu4IGxy 0QLqxFkUHWh8/AvKFBKplLbi3IDtp8KW3aPl64sbRqsCOyTAMnlDjeWxd9H3YDVwJJk7Pv88dKw v64AVBLjmiQSHUPy4p9TiiLwBC9ggLRaTzfXPQ3lNfZ3GZobvF+K3cvwsjr3/sqy905AOyrN06p 0lKfimOEwz2J6S6pPZwewMMHig== X-Google-Smtp-Source: AGHT+IFh5AtFDyWlOZ2lxq3Wbrv3nSKqqik3jNk5DcwksMz18FyoDijYW+iQcku6C15QcKugtnNx5Q== X-Received: by 2002:a17:90a:e7cb:b0:2ee:cd83:8fe7 with SMTP id 98e67ed59e1d1-2fce875d6aemr30945193a91.35.1740535215029; Tue, 25 Feb 2025 18:00:15 -0800 (PST) Received: from [172.18.4.23] ([12.126.244.130]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2230a0a63b3sm21115575ad.207.2025.02.25.18.00.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 25 Feb 2025 18:00:13 -0800 (PST) Message-ID: <6af48508a32499a8be3398cafffd29fb6188c44b.camel@j-davis.com> Subject: Re: Statistics Import and Export From: Jeff Davis To: Andres Freund , Corey Huinker Cc: Tom Lane , Michael Paquier , jian he , Nathan Bossart , Bruce Momjian , Matthias van de Meent , Magnus Hagander , Stephen Frost , Ashutosh Bapat , Peter Smith , PostgreSQL Hackers , alvherre@alvh.no-ip.org Date: Tue, 25 Feb 2025 18:00:12 -0800 In-Reply-To: References: <3670503.1740173078@sss.pgh.pa.us> <3728741.1740178078@sss.pgh.pa.us> <97b451228227c555be1a4f79c4a62ddec9a74f06.camel@j-davis.com> Content-Type: multipart/mixed; boundary="=-YAOxLY6OTfHxvtiXrv3N" User-Agent: Evolution 3.44.4-0ubuntu2 MIME-Version: 1.0 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --=-YAOxLY6OTfHxvtiXrv3N Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Mon, 2025-02-24 at 09:54 -0500, Andres Freund wrote: > Have you compared performance of with/without stats after these > optimizations? On unoptimized build with asserts enabled, dumping the regression database: --no-statistics: 1.0s master: 3.6s v3j-0001: 3.0s v3j-0002: 1.7s I plan to commit the patches soon. Regards, Jeff Davis --=-YAOxLY6OTfHxvtiXrv3N Content-Disposition: attachment; filename*0=v3j-0001-Avoid-unnecessary-relation-stats-query-in-pg_dum.pat; filename*1=ch Content-Type: text/x-patch; name="v3j-0001-Avoid-unnecessary-relation-stats-query-in-pg_dum.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 RnJvbSBkNjE3ZmIxNDIxNThlMGNhOTY0ZTViYzhiYjMzNTFkOTkzZGU2MDYyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBDb3JleSBIdWlua2VyIDxjb3JleS5odWlua2VyQGdtYWlsLmNv bT4KRGF0ZTogRnJpLCAyMSBGZWIgMjAyNSAyMzozMTowNCAtMDUwMApTdWJqZWN0OiBbUEFUQ0gg djNqIDEvMl0gQXZvaWQgdW5uZWNlc3NhcnkgcmVsYXRpb24gc3RhdHMgcXVlcnkgaW4gcGdfZHVt cC4KClRoZSBmZXcgZmllbGRzIHdlIG5lZWQgY2FuIGJlIGVhc2lseSBjb2xsZWN0ZWQgaW4gZ2V0 VGFibGVzKCkgYW5kCmdldEluZGV4ZXMoKSBhbmQgc3RvcmVkIGluIFJlbFN0YXRzSW5mby4KCkNv LWF1dGhvcmVkLWJ5OiBDb3JleSBIdWlua2VyIDxjb3JleS5odWlua2VyQGdtYWlsLmNvbT4KQ28t YXV0aG9yZWQtYnk6IEplZmYgRGF2aXMgPHBnc3FsQGotZGF2aXMuY29tPgpEaXNjdXNzaW9uOiBo dHRwczovL3Bvc3Rnci5lcy9tL0NBRGtMTT1mMGE0M2FUZDg4eFc0eENGYXlFRjI1Zy03aFRySFhf V2hWNDBIeW9jc1VHZ0BtYWlsLmdtYWlsLmNvbQotLS0KIHNyYy9iaW4vcGdfZHVtcC9wZ19kdW1w LmMgfCAxNDUgKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIHNyYy9iaW4v cGdfZHVtcC9wZ19kdW1wLmggfCAgIDUgKy0KIDIgZmlsZXMgY2hhbmdlZCwgNjQgaW5zZXJ0aW9u cygrKSwgODYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1 bXAuYyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKaW5kZXggYWZkNzkyODcxNzcuLmExODIz OTE0NjU2IDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jCisrKyBiL3NyYy9i aW4vcGdfZHVtcC9wZ19kdW1wLmMKQEAgLTU2LDYgKzU2LDcgQEAKICNpbmNsdWRlICJjb21tb24v Y29ubmVjdC5oIgogI2luY2x1ZGUgImNvbW1vbi9pbnQuaCIKICNpbmNsdWRlICJjb21tb24vcmVs cGF0aC5oIgorI2luY2x1ZGUgImNvbW1vbi9zaG9ydGVzdF9kZWMuaCIKICNpbmNsdWRlICJjb21w cmVzc19pby5oIgogI2luY2x1ZGUgImR1bXB1dGlscy5oIgogI2luY2x1ZGUgImZlX3V0aWxzL29w dGlvbl91dGlscy5oIgpAQCAtNTI0LDYgKzUyNSw5IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiph cmd2KQogCXBnX2xvZ2dpbmdfc2V0X2xldmVsKFBHX0xPR19XQVJOSU5HKTsKIAlzZXRfcGdsb2Nh bGVfcGdzZXJ2aWNlKGFyZ3ZbMF0sIFBHX1RFWFRET01BSU4oInBnX2R1bXAiKSk7CiAKKwkvKiBl bnN1cmUgdGhhdCBsb2NhbGUgZG9lcyBub3QgYWZmZWN0IGZsb2F0aW5nIHBvaW50IGludGVycHJl dGF0aW9uICovCisJc2V0bG9jYWxlKExDX05VTUVSSUMsICJDIik7CisKIAkvKgogCSAqIEluaXRp YWxpemUgd2hhdCB3ZSBuZWVkIGZvciBwYXJhbGxlbCBleGVjdXRpb24sIGVzcGVjaWFsbHkgZm9y IHRocmVhZAogCSAqIHN1cHBvcnQgb24gV2luZG93cy4KQEAgLTY4MTQsNyArNjgxOCw4IEBAIGdl dEZ1bmNzKEFyY2hpdmUgKmZvdXQpCiAgKgogICovCiBzdGF0aWMgUmVsU3RhdHNJbmZvICoKLWdl dFJlbGF0aW9uU3RhdGlzdGljcyhBcmNoaXZlICpmb3V0LCBEdW1wYWJsZU9iamVjdCAqcmVsLCBj aGFyIHJlbGtpbmQpCitnZXRSZWxhdGlvblN0YXRpc3RpY3MoQXJjaGl2ZSAqZm91dCwgRHVtcGFi bGVPYmplY3QgKnJlbCwgaW50MzIgcmVscGFnZXMsCisJCQkJCSAgZmxvYXQgcmVsdHVwbGVzLCBp bnQzMiByZWxhbGx2aXNpYmxlLCBjaGFyIHJlbGtpbmQpCiB7CiAJaWYgKCFmb3V0LT5kb3B0LT5k dW1wU3RhdGlzdGljcykKIAkJcmV0dXJuIE5VTEw7CkBAIC02ODM5LDYgKzY4NDQsOSBAQCBnZXRS ZWxhdGlvblN0YXRpc3RpY3MoQXJjaGl2ZSAqZm91dCwgRHVtcGFibGVPYmplY3QgKnJlbCwgY2hh ciByZWxraW5kKQogCQlkb2JqLT5jb21wb25lbnRzIHw9IERVTVBfQ09NUE9ORU5UX1NUQVRJU1RJ Q1M7CiAJCWRvYmotPm5hbWUgPSBwZ19zdHJkdXAocmVsLT5uYW1lKTsKIAkJZG9iai0+bmFtZXNw YWNlID0gcmVsLT5uYW1lc3BhY2U7CisJCWluZm8tPnJlbHBhZ2VzID0gcmVscGFnZXM7CisJCWlu Zm8tPnJlbHR1cGxlcyA9IHJlbHR1cGxlczsKKwkJaW5mby0+cmVsYWxsdmlzaWJsZSA9IHJlbGFs bHZpc2libGU7CiAJCWluZm8tPnJlbGtpbmQgPSByZWxraW5kOwogCQlpbmZvLT5wb3N0cG9uZWRf ZGVmID0gZmFsc2U7CiAKQEAgLTY4NzQsNiArNjg4Miw4IEBAIGdldFRhYmxlcyhBcmNoaXZlICpm b3V0LCBpbnQgKm51bVRhYmxlcykKIAlpbnQJCQlpX3JlbGhhc2luZGV4OwogCWludAkJCWlfcmVs aGFzcnVsZXM7CiAJaW50CQkJaV9yZWxwYWdlczsKKwlpbnQJCQlpX3JlbHR1cGxlczsKKwlpbnQJ CQlpX3JlbGFsbHZpc2libGU7CiAJaW50CQkJaV90b2FzdHBhZ2VzOwogCWludAkJCWlfb3duaW5n X3RhYjsKIAlpbnQJCQlpX293bmluZ19jb2w7CkBAIC02OTI0LDcgKzY5MzQsNyBAQCBnZXRUYWJs ZXMoQXJjaGl2ZSAqZm91dCwgaW50ICpudW1UYWJsZXMpCiAJCQkJCQkgImMucmVsb3duZXIsICIK IAkJCQkJCSAiYy5yZWxjaGVja3MsICIKIAkJCQkJCSAiYy5yZWxoYXNpbmRleCwgYy5yZWxoYXNy dWxlcywgYy5yZWxwYWdlcywgIgotCQkJCQkJICJjLnJlbGhhc3RyaWdnZXJzLCAiCisJCQkJCQkg ImMucmVsdHVwbGVzLCBjLnJlbGFsbHZpc2libGUsIGMucmVsaGFzdHJpZ2dlcnMsICIKIAkJCQkJ CSAiYy5yZWxwZXJzaXN0ZW5jZSwgIgogCQkJCQkJICJjLnJlbG9mdHlwZSwgIgogCQkJCQkJICJj LnJlbGFjbCwgIgpAQCAtNzA4OCw2ICs3MDk4LDggQEAgZ2V0VGFibGVzKEFyY2hpdmUgKmZvdXQs IGludCAqbnVtVGFibGVzKQogCWlfcmVsaGFzaW5kZXggPSBQUWZudW1iZXIocmVzLCAicmVsaGFz aW5kZXgiKTsKIAlpX3JlbGhhc3J1bGVzID0gUFFmbnVtYmVyKHJlcywgInJlbGhhc3J1bGVzIik7 CiAJaV9yZWxwYWdlcyA9IFBRZm51bWJlcihyZXMsICJyZWxwYWdlcyIpOworCWlfcmVsdHVwbGVz ID0gUFFmbnVtYmVyKHJlcywgInJlbHR1cGxlcyIpOworCWlfcmVsYWxsdmlzaWJsZSA9IFBRZm51 bWJlcihyZXMsICJyZWxhbGx2aXNpYmxlIik7CiAJaV90b2FzdHBhZ2VzID0gUFFmbnVtYmVyKHJl cywgInRvYXN0cGFnZXMiKTsKIAlpX293bmluZ190YWIgPSBQUWZudW1iZXIocmVzLCAib3duaW5n X3RhYiIpOwogCWlfb3duaW5nX2NvbCA9IFBRZm51bWJlcihyZXMsICJvd25pbmdfY29sIik7CkBA IC03MTM0LDYgKzcxNDYsOSBAQCBnZXRUYWJsZXMoQXJjaGl2ZSAqZm91dCwgaW50ICpudW1UYWJs ZXMpCiAKIAlmb3IgKGkgPSAwOyBpIDwgbnR1cHM7IGkrKykKIAl7CisJCWZsb2F0CQlyZWx0dXBs ZXMgPSBzdHJ0b2YoUFFnZXR2YWx1ZShyZXMsIGksIGlfcmVsdHVwbGVzKSwgTlVMTCk7CisJCWlu dDMyCQlyZWxhbGx2aXNpYmxlID0gYXRvaShQUWdldHZhbHVlKHJlcywgaSwgaV9yZWxhbGx2aXNp YmxlKSk7CisKIAkJdGJsaW5mb1tpXS5kb2JqLm9ialR5cGUgPSBET19UQUJMRTsKIAkJdGJsaW5m b1tpXS5kb2JqLmNhdElkLnRhYmxlb2lkID0gYXRvb2lkKFBRZ2V0dmFsdWUocmVzLCBpLCBpX3Jl bHRhYmxlb2lkKSk7CiAJCXRibGluZm9baV0uZG9iai5jYXRJZC5vaWQgPSBhdG9vaWQoUFFnZXR2 YWx1ZShyZXMsIGksIGlfcmVsb2lkKSk7CkBAIC03MjMzLDcgKzcyNDgsOCBAQCBnZXRUYWJsZXMo QXJjaGl2ZSAqZm91dCwgaW50ICpudW1UYWJsZXMpCiAKIAkJLyogQWRkIHN0YXRpc3RpY3MgKi8K IAkJaWYgKHRibGluZm9baV0uaW50ZXJlc3RpbmcpCi0JCQlnZXRSZWxhdGlvblN0YXRpc3RpY3Mo Zm91dCwgJnRibGluZm9baV0uZG9iaiwgdGJsaW5mb1tpXS5yZWxraW5kKTsKKwkJCWdldFJlbGF0 aW9uU3RhdGlzdGljcyhmb3V0LCAmdGJsaW5mb1tpXS5kb2JqLCB0YmxpbmZvW2ldLnJlbHBhZ2Vz LAorCQkJCQkJCQkgIHJlbHR1cGxlcywgcmVsYWxsdmlzaWJsZSwgdGJsaW5mb1tpXS5yZWxraW5k KTsKIAogCQkvKgogCQkgKiBSZWFkLWxvY2sgdGFyZ2V0IHRhYmxlcyB0byBtYWtlIHN1cmUgdGhl eSBhcmVuJ3QgRFJPUFBFRCBvciBhbHRlcmVkCkBAIC03NDk5LDYgKzc1MTUsOSBAQCBnZXRJbmRl eGVzKEFyY2hpdmUgKmZvdXQsIFRhYmxlSW5mbyB0YmxpbmZvW10sIGludCBudW1UYWJsZXMpCiAJ CQkJaV9vaWQsCiAJCQkJaV9pbmRyZWxpZCwKIAkJCQlpX2luZGV4bmFtZSwKKwkJCQlpX3JlbHBh Z2VzLAorCQkJCWlfcmVsdHVwbGVzLAorCQkJCWlfcmVsYWxsdmlzaWJsZSwKIAkJCQlpX3BhcmVu dGlkeCwKIAkJCQlpX2luZGV4ZGVmLAogCQkJCWlfaW5kbmtleWF0dHMsCkBAIC03NTUyLDYgKzc1 NzEsNyBAQCBnZXRJbmRleGVzKEFyY2hpdmUgKmZvdXQsIFRhYmxlSW5mbyB0YmxpbmZvW10sIGlu dCBudW1UYWJsZXMpCiAJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksCiAJCQkJCQkgIlNFTEVD VCB0LnRhYmxlb2lkLCB0Lm9pZCwgaS5pbmRyZWxpZCwgIgogCQkJCQkJICJ0LnJlbG5hbWUgQVMg aW5kZXhuYW1lLCAiCisJCQkJCQkgInQucmVscGFnZXMsIHQucmVsdHVwbGVzLCB0LnJlbGFsbHZp c2libGUsICIKIAkJCQkJCSAicGdfY2F0YWxvZy5wZ19nZXRfaW5kZXhkZWYoaS5pbmRleHJlbGlk KSBBUyBpbmRleGRlZiwgIgogCQkJCQkJICJpLmluZGtleSwgaS5pbmRpc2NsdXN0ZXJlZCwgIgog CQkJCQkJICJjLmNvbnR5cGUsIGMuY29ubmFtZSwgIgpAQCAtNzY1OSw2ICs3Njc5LDkgQEAgZ2V0 SW5kZXhlcyhBcmNoaXZlICpmb3V0LCBUYWJsZUluZm8gdGJsaW5mb1tdLCBpbnQgbnVtVGFibGVz KQogCWlfb2lkID0gUFFmbnVtYmVyKHJlcywgIm9pZCIpOwogCWlfaW5kcmVsaWQgPSBQUWZudW1i ZXIocmVzLCAiaW5kcmVsaWQiKTsKIAlpX2luZGV4bmFtZSA9IFBRZm51bWJlcihyZXMsICJpbmRl eG5hbWUiKTsKKwlpX3JlbHBhZ2VzID0gUFFmbnVtYmVyKHJlcywgInJlbHBhZ2VzIik7CisJaV9y ZWx0dXBsZXMgPSBQUWZudW1iZXIocmVzLCAicmVsdHVwbGVzIik7CisJaV9yZWxhbGx2aXNpYmxl ID0gUFFmbnVtYmVyKHJlcywgInJlbGFsbHZpc2libGUiKTsKIAlpX3BhcmVudGlkeCA9IFBRZm51 bWJlcihyZXMsICJwYXJlbnRpZHgiKTsKIAlpX2luZGV4ZGVmID0gUFFmbnVtYmVyKHJlcywgImlu ZGV4ZGVmIik7CiAJaV9pbmRua2V5YXR0cyA9IFBRZm51bWJlcihyZXMsICJpbmRua2V5YXR0cyIp OwpAQCAtNzcyNSw2ICs3NzQ4LDkgQEAgZ2V0SW5kZXhlcyhBcmNoaXZlICpmb3V0LCBUYWJsZUlu Zm8gdGJsaW5mb1tdLCBpbnQgbnVtVGFibGVzKQogCQkJY2hhcgkJY29udHlwZTsKIAkJCWNoYXIJ CWluZGV4a2luZDsKIAkJCVJlbFN0YXRzSW5mbyAqcmVsc3RhdHM7CisJCQlpbnQzMgkJcmVscGFn ZXMgPSBhdG9pKFBRZ2V0dmFsdWUocmVzLCBqLCBpX3JlbHBhZ2VzKSk7CisJCQlmbG9hdAkJcmVs dHVwbGVzID0gc3RydG9mKFBRZ2V0dmFsdWUocmVzLCBqLCBpX3JlbHR1cGxlcyksIE5VTEwpOwor CQkJaW50MzIJCXJlbGFsbHZpc2libGUgPSBhdG9pKFBRZ2V0dmFsdWUocmVzLCBqLCBpX3JlbGFs bHZpc2libGUpKTsKIAogCQkJaW5keGluZm9bal0uZG9iai5vYmpUeXBlID0gRE9fSU5ERVg7CiAJ CQlpbmR4aW5mb1tqXS5kb2JqLmNhdElkLnRhYmxlb2lkID0gYXRvb2lkKFBRZ2V0dmFsdWUocmVz LCBqLCBpX3RhYmxlb2lkKSk7CkBAIC03NzU5LDcgKzc3ODUsOCBAQCBnZXRJbmRleGVzKEFyY2hp dmUgKmZvdXQsIFRhYmxlSW5mbyB0YmxpbmZvW10sIGludCBudW1UYWJsZXMpCiAJCQkJaW5kZXhr aW5kID0gUkVMS0lORF9QQVJUSVRJT05FRF9JTkRFWDsKIAogCQkJY29udHlwZSA9ICooUFFnZXR2 YWx1ZShyZXMsIGosIGlfY29udHlwZSkpOwotCQkJcmVsc3RhdHMgPSBnZXRSZWxhdGlvblN0YXRp c3RpY3MoZm91dCwgJmluZHhpbmZvW2pdLmRvYmosIGluZGV4a2luZCk7CisJCQlyZWxzdGF0cyA9 IGdldFJlbGF0aW9uU3RhdGlzdGljcyhmb3V0LCAmaW5keGluZm9bal0uZG9iaiwgcmVscGFnZXMs CisJCQkJCQkJCQkJCSByZWx0dXBsZXMsIHJlbGFsbHZpc2libGUsIGluZGV4a2luZCk7CiAKIAkJ CWlmIChjb250eXBlID09ICdwJyB8fCBjb250eXBlID09ICd1JyB8fCBjb250eXBlID09ICd4JykK IAkJCXsKQEAgLTEwMzgzLDE4ICsxMDQxMCw2IEBAIGR1bXBDb21tZW50KEFyY2hpdmUgKmZvdXQs IGNvbnN0IGNoYXIgKnR5cGUsCiAJCQkJCQljYXRhbG9nSWQsIHN1YmlkLCBkdW1wSWQsIE5VTEwp OwogfQogCi0vKgotICogVGFidWxhciBkZXNjcmlwdGlvbiBvZiB0aGUgcGFyYW1ldGVycyB0byBw Z19yZXN0b3JlX3JlbGF0aW9uX3N0YXRzKCkKLSAqIHBhcmFtX25hbWUsIHBhcmFtX3R5cGUKLSAq Lwotc3RhdGljIGNvbnN0IGNoYXIgKnJlbF9zdGF0c19hcmdpbmZvW11bMl0gPSB7Ci0JeyJyZWxh dGlvbiIsICJyZWdjbGFzcyJ9LAotCXsidmVyc2lvbiIsICJpbnRlZ2VyIn0sCi0JeyJyZWxwYWdl cyIsICJpbnRlZ2VyIn0sCi0JeyJyZWx0dXBsZXMiLCAicmVhbCJ9LAotCXsicmVsYWxsdmlzaWJs ZSIsICJpbnRlZ2VyIn0sCi19OwotCiAvKgogICogVGFidWxhciBkZXNjcmlwdGlvbiBvZiB0aGUg cGFyYW1ldGVycyB0byBwZ19yZXN0b3JlX2F0dHJpYnV0ZV9zdGF0cygpCiAgKiBwYXJhbV9uYW1l LCBwYXJhbV90eXBlCkBAIC0xMDQxOSwzMCArMTA0MzQsNiBAQCBzdGF0aWMgY29uc3QgY2hhciAq YXR0X3N0YXRzX2FyZ2luZm9bXVsyXSA9IHsKIAl7InJhbmdlX2JvdW5kc19oaXN0b2dyYW0iLCAi dGV4dCJ9LAogfTsKIAotLyoKLSAqIGdldFJlbFN0YXRzRXhwb3J0UXVlcnkgLS0KLSAqCi0gKiBH ZW5lcmF0ZSBhIHF1ZXJ5IHRoYXQgd2lsbCBmZXRjaCBhbGwgcmVsYXRpb24gKGUuZy4gcGdfY2xh c3MpCi0gKiBzdGF0cyBmb3IgYSBnaXZlbiByZWxhdGlvbi4KLSAqLwotc3RhdGljIHZvaWQKLWdl dFJlbFN0YXRzRXhwb3J0UXVlcnkoUFFFeHBCdWZmZXIgcXVlcnksIEFyY2hpdmUgKmZvdXQsCi0J CQkJCSAgIGNvbnN0IGNoYXIgKnNjaGVtYW5hbWUsIGNvbnN0IGNoYXIgKnJlbG5hbWUpCi17Ci0J cmVzZXRQUUV4cEJ1ZmZlcihxdWVyeSk7Ci0JYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksCi0J CQkJCQkgIlNFTEVDVCBjLm9pZDo6cmVnY2xhc3MgQVMgcmVsYXRpb24sICIKLQkJCQkJCSAiY3Vy cmVudF9zZXR0aW5nKCdzZXJ2ZXJfdmVyc2lvbl9udW0nKSBBUyB2ZXJzaW9uLCAiCi0JCQkJCQkg ImMucmVscGFnZXMsIGMucmVsdHVwbGVzLCBjLnJlbGFsbHZpc2libGUgIgotCQkJCQkJICJGUk9N IHBnX2NsYXNzIGMgIgotCQkJCQkJICJKT0lOIHBnX25hbWVzcGFjZSBuICIKLQkJCQkJCSAiT04g bi5vaWQgPSBjLnJlbG5hbWVzcGFjZSAiCi0JCQkJCQkgIldIRVJFIG4ubnNwbmFtZSA9ICIpOwot CWFwcGVuZFN0cmluZ0xpdGVyYWxBSChxdWVyeSwgc2NoZW1hbmFtZSwgZm91dCk7Ci0JYXBwZW5k UFFFeHBCdWZmZXJTdHIocXVlcnksICIgQU5EIGMucmVsbmFtZSA9ICIpOwotCWFwcGVuZFN0cmlu Z0xpdGVyYWxBSChxdWVyeSwgcmVsbmFtZSwgZm91dCk7Ci19Ci0KIC8qCiAgKiBnZXRBdHRTdGF0 c0V4cG9ydFF1ZXJ5IC0tCiAgKgpAQCAtMTA0NTQsMjEgKzEwNDQ1LDIyIEBAIGdldEF0dFN0YXRz RXhwb3J0UXVlcnkoUFFFeHBCdWZmZXIgcXVlcnksIEFyY2hpdmUgKmZvdXQsCiAJCQkJCSAgIGNv bnN0IGNoYXIgKnNjaGVtYW5hbWUsIGNvbnN0IGNoYXIgKnJlbG5hbWUpCiB7CiAJcmVzZXRQUUV4 cEJ1ZmZlcihxdWVyeSk7Ci0JYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksCi0JCQkJCQkgIlNF TEVDVCBjLm9pZDo6cmVnY2xhc3MgQVMgcmVsYXRpb24sICIKLQkJCQkJCSAicy5hdHRuYW1lLCIK LQkJCQkJCSAicy5pbmhlcml0ZWQsIgotCQkJCQkJICJjdXJyZW50X3NldHRpbmcoJ3NlcnZlcl92 ZXJzaW9uX251bScpIEFTIHZlcnNpb24sICIKLQkJCQkJCSAicy5udWxsX2ZyYWMsIgotCQkJCQkJ ICJzLmF2Z193aWR0aCwiCi0JCQkJCQkgInMubl9kaXN0aW5jdCwiCi0JCQkJCQkgInMubW9zdF9j b21tb25fdmFscywiCi0JCQkJCQkgInMubW9zdF9jb21tb25fZnJlcXMsIgotCQkJCQkJICJzLmhp c3RvZ3JhbV9ib3VuZHMsIgotCQkJCQkJICJzLmNvcnJlbGF0aW9uLCIKLQkJCQkJCSAicy5tb3N0 X2NvbW1vbl9lbGVtcywiCi0JCQkJCQkgInMubW9zdF9jb21tb25fZWxlbV9mcmVxcywiCi0JCQkJ CQkgInMuZWxlbV9jb3VudF9oaXN0b2dyYW0sIik7CisJYXBwZW5kUFFFeHBCdWZmZXIocXVlcnks CisJCQkJCSAgIlNFTEVDVCBjLm9pZDo6cmVnY2xhc3MgQVMgcmVsYXRpb24sICIKKwkJCQkJICAi cy5hdHRuYW1lLCIKKwkJCQkJICAicy5pbmhlcml0ZWQsIgorCQkJCQkgICInJXUnOjppbnRlZ2Vy IEFTIHZlcnNpb24sICIKKwkJCQkJICAicy5udWxsX2ZyYWMsIgorCQkJCQkgICJzLmF2Z193aWR0 aCwiCisJCQkJCSAgInMubl9kaXN0aW5jdCwiCisJCQkJCSAgInMubW9zdF9jb21tb25fdmFscywi CisJCQkJCSAgInMubW9zdF9jb21tb25fZnJlcXMsIgorCQkJCQkgICJzLmhpc3RvZ3JhbV9ib3Vu ZHMsIgorCQkJCQkgICJzLmNvcnJlbGF0aW9uLCIKKwkJCQkJICAicy5tb3N0X2NvbW1vbl9lbGVt cywiCisJCQkJCSAgInMubW9zdF9jb21tb25fZWxlbV9mcmVxcywiCisJCQkJCSAgInMuZWxlbV9j b3VudF9oaXN0b2dyYW0sIiwKKwkJCQkJICBmb3V0LT5yZW1vdGVWZXJzaW9uKTsKIAogCWlmIChm b3V0LT5yZW1vdGVWZXJzaW9uID49IDE3MDAwMCkKIAkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVl cnksCkBAIC0xMDUyMSwzNCArMTA1MTMsMjEgQEAgYXBwZW5kTmFtZWRBcmd1bWVudChQUUV4cEJ1 ZmZlciBvdXQsIEFyY2hpdmUgKmZvdXQsIGNvbnN0IGNoYXIgKmFyZ25hbWUsCiAgKiBBcHBlbmQg YSBmb3JtYXR0ZWQgcGdfcmVzdG9yZV9yZWxhdGlvbl9zdGF0cyBzdGF0ZW1lbnQuCiAgKi8KIHN0 YXRpYyB2b2lkCi1hcHBlbmRSZWxTdGF0c0ltcG9ydChQUUV4cEJ1ZmZlciBvdXQsIEFyY2hpdmUg KmZvdXQsIFBHcmVzdWx0ICpyZXMpCithcHBlbmRSZWxTdGF0c0ltcG9ydChQUUV4cEJ1ZmZlciBv dXQsIEFyY2hpdmUgKmZvdXQsIGNvbnN0IFJlbFN0YXRzSW5mbyAqcnNpbmZvKQogewotCWNvbnN0 IGNoYXIgKnNlcCA9ICIiOworCWNvbnN0IGNoYXIgKnF1YWxuYW1lID0gZm10UXVhbGlmaWVkSWQo cnNpbmZvLT5kb2JqLm5hbWVzcGFjZS0+ZG9iai5uYW1lLCByc2luZm8tPmRvYmoubmFtZSk7CisJ Y2hhcgkJcmVsdHVwbGVzX3N0cltGTE9BVF9TSE9SVEVTVF9ERUNJTUFMX0xFTl07CiAKLQlpZiAo UFFudHVwbGVzKHJlcykgPT0gMCkKLQkJcmV0dXJuOworCWZsb2F0X3RvX3Nob3J0ZXN0X2RlY2lt YWxfYnVmKHJzaW5mby0+cmVsdHVwbGVzLCByZWx0dXBsZXNfc3RyKTsKIAogCWFwcGVuZFBRRXhw QnVmZmVyU3RyKG91dCwgIlNFTEVDVCAqIEZST00gcGdfY2F0YWxvZy5wZ19yZXN0b3JlX3JlbGF0 aW9uX3N0YXRzKFxuIik7Ci0KLQlmb3IgKGludCBhcmdubyA9IDA7IGFyZ25vIDwgbGVuZ3Rob2Yo cmVsX3N0YXRzX2FyZ2luZm8pOyBhcmdubysrKQotCXsKLQkJY29uc3QgY2hhciAqYXJnbmFtZSA9 IHJlbF9zdGF0c19hcmdpbmZvW2FyZ25vXVswXTsKLQkJY29uc3QgY2hhciAqYXJndHlwZSA9IHJl bF9zdGF0c19hcmdpbmZvW2FyZ25vXVsxXTsKLQkJaW50CQkJZmllbGRubyA9IFBRZm51bWJlcihy ZXMsIGFyZ25hbWUpOwotCi0JCWlmIChmaWVsZG5vIDwgMCkKLQkJCXBnX2ZhdGFsKCJyZWxhdGlv biBzdGF0cyBleHBvcnQgcXVlcnkgbWlzc2luZyBmaWVsZCAnJXMnIiwKLQkJCQkJIGFyZ25hbWUp OwotCi0JCWlmIChQUWdldGlzbnVsbChyZXMsIDAsIGZpZWxkbm8pKQotCQkJY29udGludWU7Ci0K LQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIob3V0LCBzZXApOwotCQlhcHBlbmROYW1lZEFyZ3VtZW50 KG91dCwgZm91dCwgYXJnbmFtZSwgUFFnZXR2YWx1ZShyZXMsIDAsIGZpZWxkbm8pLCBhcmd0eXBl KTsKLQotCQlzZXAgPSAiLFxuIjsKLQl9Ci0JYXBwZW5kUFFFeHBCdWZmZXJTdHIob3V0LCAiXG4p O1xuIik7CisJYXBwZW5kUFFFeHBCdWZmZXIob3V0LCAiXHQncmVsYXRpb24nLCAnJXMnOjpyZWdj bGFzcyxcbiIsIHF1YWxuYW1lKTsKKwlhcHBlbmRQUUV4cEJ1ZmZlcihvdXQsICJcdCd2ZXJzaW9u JywgJyV1Jzo6aW50ZWdlcixcbiIsCisJCQkJCSAgZm91dC0+cmVtb3RlVmVyc2lvbik7CisJYXBw ZW5kUFFFeHBCdWZmZXIob3V0LCAiXHQncmVscGFnZXMnLCAnJWQnOjppbnRlZ2VyLFxuIiwgcnNp bmZvLT5yZWxwYWdlcyk7CisJYXBwZW5kUFFFeHBCdWZmZXIob3V0LCAiXHQncmVsdHVwbGVzJywg JyVzJzo6cmVhbCxcbiIsIHJlbHR1cGxlc19zdHIpOworCWFwcGVuZFBRRXhwQnVmZmVyKG91dCwg Ilx0J3JlbGFsbHZpc2libGUnLCAnJWQnOjppbnRlZ2VyXG4pO1xuIiwKKwkJCQkJICByc2luZm8t PnJlbGFsbHZpc2libGUpOwogfQogCiAvKgpAQCAtMTA2NDMsMTUgKzEwNjIyLDExIEBAIGR1bXBS ZWxhdGlvblN0YXRzKEFyY2hpdmUgKmZvdXQsIGNvbnN0IFJlbFN0YXRzSW5mbyAqcnNpbmZvKQog CXRhZyA9IGNyZWF0ZVBRRXhwQnVmZmVyKCk7CiAJYXBwZW5kUFFFeHBCdWZmZXJTdHIodGFnLCBm bXRJZChkb2JqLT5uYW1lKSk7CiAKLQlxdWVyeSA9IGNyZWF0ZVBRRXhwQnVmZmVyKCk7CiAJb3V0 ID0gY3JlYXRlUFFFeHBCdWZmZXIoKTsKIAotCWdldFJlbFN0YXRzRXhwb3J0UXVlcnkocXVlcnks IGZvdXQsIGRvYmotPm5hbWVzcGFjZS0+ZG9iai5uYW1lLAotCQkJCQkJICAgZG9iai0+bmFtZSk7 Ci0JcmVzID0gRXhlY3V0ZVNxbFF1ZXJ5KGZvdXQsIHF1ZXJ5LT5kYXRhLCBQR1JFU19UVVBMRVNf T0spOwotCWFwcGVuZFJlbFN0YXRzSW1wb3J0KG91dCwgZm91dCwgcmVzKTsKLQlQUWNsZWFyKHJl cyk7CisJYXBwZW5kUmVsU3RhdHNJbXBvcnQob3V0LCBmb3V0LCByc2luZm8pOwogCisJcXVlcnkg PSBjcmVhdGVQUUV4cEJ1ZmZlcigpOwogCWdldEF0dFN0YXRzRXhwb3J0UXVlcnkocXVlcnksIGZv dXQsIGRvYmotPm5hbWVzcGFjZS0+ZG9iai5uYW1lLAogCQkJCQkJICAgZG9iai0+bmFtZSk7CiAJ cmVzID0gRXhlY3V0ZVNxbFF1ZXJ5KGZvdXQsIHF1ZXJ5LT5kYXRhLCBQR1JFU19UVVBMRVNfT0sp OwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuaCBiL3NyYy9iaW4vcGdfZHVt cC9wZ19kdW1wLmgKaW5kZXggZjA4ZjU5MDVhYTMuLjlkNmE0ODU3YzRiIDEwMDY0NAotLS0gYS9z cmMvYmluL3BnX2R1bXAvcGdfZHVtcC5oCisrKyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmgK QEAgLTMyOCw3ICszMjgsNyBAQCB0eXBlZGVmIHN0cnVjdCBfdGFibGVJbmZvCiAJT2lkCQkJb3du aW5nX3RhYjsJCS8qIE9JRCBvZiB0YWJsZSBvd25pbmcgc2VxdWVuY2UgKi8KIAlpbnQJCQlvd25p bmdfY29sOwkJLyogYXR0ciAjIG9mIGNvbHVtbiBvd25pbmcgc2VxdWVuY2UgKi8KIAlib29sCQlp c19pZGVudGl0eV9zZXF1ZW5jZTsKLQlpbnQJCQlyZWxwYWdlczsJCS8qIHRhYmxlJ3Mgc2l6ZSBp biBwYWdlcyAoZnJvbSBwZ19jbGFzcykgKi8KKwlpbnQzMgkJcmVscGFnZXM7CQkvKiB0YWJsZSdz IHNpemUgaW4gcGFnZXMgKGZyb20gcGdfY2xhc3MpICovCiAJaW50CQkJdG9hc3RwYWdlczsJCS8q IHRvYXN0IHRhYmxlJ3Mgc2l6ZSBpbiBwYWdlcywgaWYgYW55ICovCiAKIAlib29sCQlpbnRlcmVz dGluZzsJLyogdHJ1ZSBpZiBuZWVkIHRvIGNvbGxlY3QgbW9yZSBkYXRhICovCkBAIC00MzgsNiAr NDM4LDkgQEAgdHlwZWRlZiBzdHJ1Y3QgX2luZGV4QXR0YWNoSW5mbwogdHlwZWRlZiBzdHJ1Y3Qg X3JlbFN0YXRzSW5mbwogewogCUR1bXBhYmxlT2JqZWN0IGRvYmo7CisJaW50MzIJCXJlbHBhZ2Vz OworCWZsb2F0CQlyZWx0dXBsZXM7CisJaW50MzIJCXJlbGFsbHZpc2libGU7CiAJY2hhcgkJcmVs a2luZDsJCS8qICdyJywgJ20nLCAnaScsIGV0YyAqLwogCWJvb2wJCXBvc3Rwb25lZF9kZWY7CS8q IHN0YXRzIG11c3QgYmUgcG9zdHBvbmVkIGludG8gcG9zdC1kYXRhICovCiB9IFJlbFN0YXRzSW5m bzsKLS0gCjIuMzQuMQoK --=-YAOxLY6OTfHxvtiXrv3N Content-Disposition: attachment; filename="v3j-0002-pg_dump-prepare-attribute-stats-query.patch" Content-Type: text/x-patch; name="v3j-0002-pg_dump-prepare-attribute-stats-query.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 RnJvbSAzM2NkZTVmZGJiMjA3YTk5YmNlNjc4MDE1ZTFlNDVkZjAyMTBiYjU2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWZmIERhdmlzIDxqZWZmQGotZGF2aXMuY29tPgpEYXRlOiBU dWUsIDI1IEZlYiAyMDI1IDE3OjE1OjQ3IC0wODAwClN1YmplY3Q6IFtQQVRDSCB2M2ogMi8yXSBw Z19kdW1wOiBwcmVwYXJlIGF0dHJpYnV0ZSBzdGF0cyBxdWVyeS4KCkZvbGxvdyBwcmVjZWRlbnQg aW4gcGdfZHVtcCBmb3IgcHJlcGFyaW5nIHF1ZXJpZXMgdG8gaW1wcm92ZQpwZXJmb3JtYW5jZS4g QWxzbywgc2ltcGxpZnkgdGhlIHF1ZXJ5IGJ5IHJlbW92aW5nIHVubmVjZXNzYXJ5IGpvaW5zLgoK UmVwb3J0ZWQtYnk6IEFuZHJlcyBGcmV1bmQgPGFuZHJlc0BhbmFyYXplbC5kZT4KQ28tYXV0aG9y ZWQtYnk6IENvcmV5IEh1aW5rZXIgPGNvcmV5Lmh1aW5rZXJAZ21haWwuY29tPgpDby1hdXRob3Jl ZC1ieTogSmVmZiBEYXZpcyA8cGdzcWxAai1kYXZpcy5jb20+CkRpc2N1c3Npb246IGh0dHBzOi8v cG9zdGdyLmVzL20vQ0FEa0xNPWRSTUM2dDhncDlHVmY2eTZFX3I1RUNoUWpNQUFoX3ZQeWloX3pN aXEwenZBQG1haWwuZ21haWwuY29tCi0tLQogc3JjL2Jpbi9wZ19kdW1wL3BnX2JhY2t1cC5oIHwg ICAxICsKIHNyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMgICB8IDEyMyArKysrKysrKysrKysrKysr Ky0tLS0tLS0tLS0tLS0tLS0tLS0KIDIgZmlsZXMgY2hhbmdlZCwgNTggaW5zZXJ0aW9ucygrKSwg NjYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2JhY2t1cC5o IGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2JhY2t1cC5oCmluZGV4IDM1MGNmNjU5YzQxLi5lNzgzY2M2 OGQ4OSAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2JhY2t1cC5oCisrKyBiL3NyYy9i aW4vcGdfZHVtcC9wZ19iYWNrdXAuaApAQCAtNzIsNiArNzIsNyBAQCBlbnVtIF9kdW1wUHJlcGFy ZWRRdWVyaWVzCiAJUFJFUFFVRVJZX0RVTVBPUFIsCiAJUFJFUFFVRVJZX0RVTVBSQU5HRVRZUEUs CiAJUFJFUFFVRVJZX0RVTVBUQUJMRUFUVEFDSCwKKwlQUkVQUVVFUllfR0VUQVRUUklCVVRFU1RB VFMsCiAJUFJFUFFVRVJZX0dFVENPTFVNTkFDTFMsCiAJUFJFUFFVRVJZX0dFVERPTUFJTkNPTlNU UkFJTlRTLAogfTsKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMgYi9zcmMv YmluL3BnX2R1bXAvcGdfZHVtcC5jCmluZGV4IGExODIzOTE0NjU2Li4wZGU2Yzk1OWJiMCAxMDA2 NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYworKysgYi9zcmMvYmluL3BnX2R1bXAv cGdfZHVtcC5jCkBAIC0xMDQxNSwxMCArMTA0MTUsOCBAQCBkdW1wQ29tbWVudChBcmNoaXZlICpm b3V0LCBjb25zdCBjaGFyICp0eXBlLAogICogcGFyYW1fbmFtZSwgcGFyYW1fdHlwZQogICovCiBz dGF0aWMgY29uc3QgY2hhciAqYXR0X3N0YXRzX2FyZ2luZm9bXVsyXSA9IHsKLQl7InJlbGF0aW9u IiwgInJlZ2NsYXNzIn0sCiAJeyJhdHRuYW1lIiwgIm5hbWUifSwKIAl7ImluaGVyaXRlZCIsICJi b29sZWFuIn0sCi0JeyJ2ZXJzaW9uIiwgImludGVnZXIifSwKIAl7Im51bGxfZnJhYyIsICJmbG9h dDQifSwKIAl7ImF2Z193aWR0aCIsICJpbnRlZ2VyIn0sCiAJeyJuX2Rpc3RpbmN0IiwgImZsb2F0 NCJ9LApAQCAtMTA0MzQsNjAgKzEwNDMyLDYgQEAgc3RhdGljIGNvbnN0IGNoYXIgKmF0dF9zdGF0 c19hcmdpbmZvW11bMl0gPSB7CiAJeyJyYW5nZV9ib3VuZHNfaGlzdG9ncmFtIiwgInRleHQifSwK IH07CiAKLS8qCi0gKiBnZXRBdHRTdGF0c0V4cG9ydFF1ZXJ5IC0tCi0gKgotICogR2VuZXJhdGUg YSBxdWVyeSB0aGF0IHdpbGwgZmV0Y2ggYWxsIGF0dHJpYnV0ZSAoZS5nLiBwZ19zdGF0aXN0aWMp Ci0gKiBzdGF0cyBmb3IgYSBnaXZlbiByZWxhdGlvbi4KLSAqLwotc3RhdGljIHZvaWQKLWdldEF0 dFN0YXRzRXhwb3J0UXVlcnkoUFFFeHBCdWZmZXIgcXVlcnksIEFyY2hpdmUgKmZvdXQsCi0JCQkJ CSAgIGNvbnN0IGNoYXIgKnNjaGVtYW5hbWUsIGNvbnN0IGNoYXIgKnJlbG5hbWUpCi17Ci0JcmVz ZXRQUUV4cEJ1ZmZlcihxdWVyeSk7Ci0JYXBwZW5kUFFFeHBCdWZmZXIocXVlcnksCi0JCQkJCSAg IlNFTEVDVCBjLm9pZDo6cmVnY2xhc3MgQVMgcmVsYXRpb24sICIKLQkJCQkJICAicy5hdHRuYW1l LCIKLQkJCQkJICAicy5pbmhlcml0ZWQsIgotCQkJCQkgICInJXUnOjppbnRlZ2VyIEFTIHZlcnNp b24sICIKLQkJCQkJICAicy5udWxsX2ZyYWMsIgotCQkJCQkgICJzLmF2Z193aWR0aCwiCi0JCQkJ CSAgInMubl9kaXN0aW5jdCwiCi0JCQkJCSAgInMubW9zdF9jb21tb25fdmFscywiCi0JCQkJCSAg InMubW9zdF9jb21tb25fZnJlcXMsIgotCQkJCQkgICJzLmhpc3RvZ3JhbV9ib3VuZHMsIgotCQkJ CQkgICJzLmNvcnJlbGF0aW9uLCIKLQkJCQkJICAicy5tb3N0X2NvbW1vbl9lbGVtcywiCi0JCQkJ CSAgInMubW9zdF9jb21tb25fZWxlbV9mcmVxcywiCi0JCQkJCSAgInMuZWxlbV9jb3VudF9oaXN0 b2dyYW0sIiwKLQkJCQkJICBmb3V0LT5yZW1vdGVWZXJzaW9uKTsKLQotCWlmIChmb3V0LT5yZW1v dGVWZXJzaW9uID49IDE3MDAwMCkKLQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksCi0JCQkJ CQkJICJzLnJhbmdlX2xlbmd0aF9oaXN0b2dyYW0sIgotCQkJCQkJCSAicy5yYW5nZV9lbXB0eV9m cmFjLCIKLQkJCQkJCQkgInMucmFuZ2VfYm91bmRzX2hpc3RvZ3JhbSAiKTsKLQllbHNlCi0JCWFw cGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LAotCQkJCQkJCSAiTlVMTCBBUyByYW5nZV9sZW5ndGhf aGlzdG9ncmFtLCIKLQkJCQkJCQkgIk5VTEwgQVMgcmFuZ2VfZW1wdHlfZnJhYywiCi0JCQkJCQkJ ICJOVUxMIEFTIHJhbmdlX2JvdW5kc19oaXN0b2dyYW0gIik7Ci0KLQlhcHBlbmRQUUV4cEJ1ZmZl clN0cihxdWVyeSwKLQkJCQkJCSAiRlJPTSBwZ19zdGF0cyBzICIKLQkJCQkJCSAiSk9JTiBwZ19u YW1lc3BhY2UgbiAiCi0JCQkJCQkgIk9OIG4ubnNwbmFtZSA9IHMuc2NoZW1hbmFtZSAiCi0JCQkJ CQkgIkpPSU4gcGdfY2xhc3MgYyAiCi0JCQkJCQkgIk9OIGMucmVsbmFtZSA9IHMudGFibGVuYW1l ICIKLQkJCQkJCSAiQU5EIGMucmVsbmFtZXNwYWNlID0gbi5vaWQgIgotCQkJCQkJICJXSEVSRSBz LnNjaGVtYW5hbWUgPSAiKTsKLQlhcHBlbmRTdHJpbmdMaXRlcmFsQUgocXVlcnksIHNjaGVtYW5h bWUsIGZvdXQpOwotCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LCAiIEFORCBzLnRhYmxlbmFt ZSA9ICIpOwotCWFwcGVuZFN0cmluZ0xpdGVyYWxBSChxdWVyeSwgcmVsbmFtZSwgZm91dCk7Ci0J YXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksICIgT1JERVIgQlkgcy5hdHRuYW1lLCBzLmluaGVy aXRlZCIpOwotfQotCi0KIC8qCiAgKiBhcHBlbmROYW1lZEFyZ3VtZW50IC0tCiAgKgpAQCAtMTA1 MTMsMTcgKzEwNDU3LDE3IEBAIGFwcGVuZE5hbWVkQXJndW1lbnQoUFFFeHBCdWZmZXIgb3V0LCBB cmNoaXZlICpmb3V0LCBjb25zdCBjaGFyICphcmduYW1lLAogICogQXBwZW5kIGEgZm9ybWF0dGVk IHBnX3Jlc3RvcmVfcmVsYXRpb25fc3RhdHMgc3RhdGVtZW50LgogICovCiBzdGF0aWMgdm9pZAot YXBwZW5kUmVsU3RhdHNJbXBvcnQoUFFFeHBCdWZmZXIgb3V0LCBBcmNoaXZlICpmb3V0LCBjb25z dCBSZWxTdGF0c0luZm8gKnJzaW5mbykKK2FwcGVuZFJlbFN0YXRzSW1wb3J0KFBRRXhwQnVmZmVy IG91dCwgQXJjaGl2ZSAqZm91dCwgY29uc3QgUmVsU3RhdHNJbmZvICpyc2luZm8sCisJCQkJCSBj b25zdCBjaGFyICpxdWFsaWZpZWRfbmFtZSkKIHsKLQljb25zdCBjaGFyICpxdWFsbmFtZSA9IGZt dFF1YWxpZmllZElkKHJzaW5mby0+ZG9iai5uYW1lc3BhY2UtPmRvYmoubmFtZSwgcnNpbmZvLT5k b2JqLm5hbWUpOwogCWNoYXIJCXJlbHR1cGxlc19zdHJbRkxPQVRfU0hPUlRFU1RfREVDSU1BTF9M RU5dOwogCiAJZmxvYXRfdG9fc2hvcnRlc3RfZGVjaW1hbF9idWYocnNpbmZvLT5yZWx0dXBsZXMs IHJlbHR1cGxlc19zdHIpOwogCiAJYXBwZW5kUFFFeHBCdWZmZXJTdHIob3V0LCAiU0VMRUNUICog RlJPTSBwZ19jYXRhbG9nLnBnX3Jlc3RvcmVfcmVsYXRpb25fc3RhdHMoXG4iKTsKLQlhcHBlbmRQ UUV4cEJ1ZmZlcihvdXQsICJcdCdyZWxhdGlvbicsICclcyc6OnJlZ2NsYXNzLFxuIiwgcXVhbG5h bWUpOwogCWFwcGVuZFBRRXhwQnVmZmVyKG91dCwgIlx0J3ZlcnNpb24nLCAnJXUnOjppbnRlZ2Vy LFxuIiwKIAkJCQkJICBmb3V0LT5yZW1vdGVWZXJzaW9uKTsKKwlhcHBlbmRQUUV4cEJ1ZmZlcihv dXQsICJcdCdyZWxhdGlvbicsICclcyc6OnJlZ2NsYXNzLFxuIiwgcXVhbGlmaWVkX25hbWUpOwog CWFwcGVuZFBRRXhwQnVmZmVyKG91dCwgIlx0J3JlbHBhZ2VzJywgJyVkJzo6aW50ZWdlcixcbiIs IHJzaW5mby0+cmVscGFnZXMpOwogCWFwcGVuZFBRRXhwQnVmZmVyKG91dCwgIlx0J3JlbHR1cGxl cycsICclcyc6OnJlYWwsXG4iLCByZWx0dXBsZXNfc3RyKTsKIAlhcHBlbmRQUUV4cEJ1ZmZlcihv dXQsICJcdCdyZWxhbGx2aXNpYmxlJywgJyVkJzo6aW50ZWdlclxuKTtcbiIsCkBAIC0xMDUzNiwx MyArMTA0ODAsMTggQEAgYXBwZW5kUmVsU3RhdHNJbXBvcnQoUFFFeHBCdWZmZXIgb3V0LCBBcmNo aXZlICpmb3V0LCBjb25zdCBSZWxTdGF0c0luZm8gKnJzaW5mbykKICAqIEFwcGVuZCBhIHNlcmll cyBvZiBmb3JtYXR0ZWQgcGdfcmVzdG9yZV9hdHRyaWJ1dGVfc3RhdHMgc3RhdGVtZW50cy4KICAq Lwogc3RhdGljIHZvaWQKLWFwcGVuZEF0dFN0YXRzSW1wb3J0KFBRRXhwQnVmZmVyIG91dCwgQXJj aGl2ZSAqZm91dCwgUEdyZXN1bHQgKnJlcykKK2FwcGVuZEF0dFN0YXRzSW1wb3J0KFBRRXhwQnVm ZmVyIG91dCwgQXJjaGl2ZSAqZm91dCwgUEdyZXN1bHQgKnJlcywKKwkJCQkJIGNvbnN0IGNoYXIg KnF1YWxpZmllZF9uYW1lKQogewogCWZvciAoaW50IHJvd251bSA9IDA7IHJvd251bSA8IFBRbnR1 cGxlcyhyZXMpOyByb3dudW0rKykKIAl7CiAJCWNvbnN0IGNoYXIgKnNlcCA9ICIiOwogCiAJCWFw cGVuZFBRRXhwQnVmZmVyU3RyKG91dCwgIlNFTEVDVCAqIEZST00gcGdfY2F0YWxvZy5wZ19yZXN0 b3JlX2F0dHJpYnV0ZV9zdGF0cyhcbiIpOworCQlhcHBlbmRQUUV4cEJ1ZmZlcihvdXQsICJcdCd2 ZXJzaW9uJywgJyV1Jzo6aW50ZWdlcixcbiIsCisJCQkJCQkgIGZvdXQtPnJlbW90ZVZlcnNpb24p OworCQlhcHBlbmRQUUV4cEJ1ZmZlcihvdXQsICJcdCdyZWxhdGlvbicsICclcyc6OnJlZ2NsYXNz LFxuIiwKKwkJCQkJCSAgcXVhbGlmaWVkX25hbWUpOwogCQlmb3IgKGludCBhcmdubyA9IDA7IGFy Z25vIDwgbGVuZ3Rob2YoYXR0X3N0YXRzX2FyZ2luZm8pOyBhcmdubysrKQogCQl7CiAJCQljb25z dCBjaGFyICphcmduYW1lID0gYXR0X3N0YXRzX2FyZ2luZm9bYXJnbm9dWzBdOwpAQCAtMTA2MDcs NiArMTA1NTYsNyBAQCBkdW1wUmVsYXRpb25TdGF0cyhBcmNoaXZlICpmb3V0LCBjb25zdCBSZWxT dGF0c0luZm8gKnJzaW5mbykKIAlEdW1wYWJsZU9iamVjdCAqZG9iaiA9IChEdW1wYWJsZU9iamVj dCAqKSAmcnNpbmZvLT5kb2JqOwogCUR1bXBJZAkgICAqZGVwcyA9IE5VTEw7CiAJaW50CQkJbmRl cHMgPSAwOworCWNvbnN0IGNoYXIgKnF1YWxpZmllZF9uYW1lOwogCiAJLyogbm90aGluZyB0byBk byBpZiB3ZSBhcmUgbm90IGR1bXBpbmcgc3RhdGlzdGljcyAqLwogCWlmICghZm91dC0+ZG9wdC0+ ZHVtcFN0YXRpc3RpY3MpCkBAIC0xMDYyMiwxNSArMTA1NzIsNTYgQEAgZHVtcFJlbGF0aW9uU3Rh dHMoQXJjaGl2ZSAqZm91dCwgY29uc3QgUmVsU3RhdHNJbmZvICpyc2luZm8pCiAJdGFnID0gY3Jl YXRlUFFFeHBCdWZmZXIoKTsKIAlhcHBlbmRQUUV4cEJ1ZmZlclN0cih0YWcsIGZtdElkKGRvYmot Pm5hbWUpKTsKIAotCW91dCA9IGNyZWF0ZVBRRXhwQnVmZmVyKCk7CisJcXVlcnkgPSBjcmVhdGVQ UUV4cEJ1ZmZlcigpOworCWlmICghZm91dC0+aXNfcHJlcGFyZWRbUFJFUFFVRVJZX0dFVEFUVFJJ QlVURVNUQVRTXSkKKwl7CisJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LAorCQkJCQkJCSAi UFJFUEFSRSBnZXRBdHRyaWJ1dGVTdGF0cyhwZ19jYXRhbG9nLm5hbWUsIHBnX2NhdGFsb2cubmFt ZSkgQVNcbiIKKwkJCQkJCQkgIlNFTEVDVCBzLmF0dG5hbWUsIHMuaW5oZXJpdGVkLCAiCisJCQkJ CQkJICJzLm51bGxfZnJhYywgcy5hdmdfd2lkdGgsIHMubl9kaXN0aW5jdCwgIgorCQkJCQkJCSAi cy5tb3N0X2NvbW1vbl92YWxzLCBzLm1vc3RfY29tbW9uX2ZyZXFzLCAiCisJCQkJCQkJICJzLmhp c3RvZ3JhbV9ib3VuZHMsIHMuY29ycmVsYXRpb24sICIKKwkJCQkJCQkgInMubW9zdF9jb21tb25f ZWxlbXMsIHMubW9zdF9jb21tb25fZWxlbV9mcmVxcywgIgorCQkJCQkJCSAicy5lbGVtX2NvdW50 X2hpc3RvZ3JhbSwgIik7CisKKwkJaWYgKGZvdXQtPnJlbW90ZVZlcnNpb24gPj0gMTcwMDAwKQor CQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksCisJCQkJCQkJCSAicy5yYW5nZV9sZW5ndGhf aGlzdG9ncmFtLCBzLnJhbmdlX2VtcHR5X2ZyYWMsICIKKwkJCQkJCQkJICJzLnJhbmdlX2JvdW5k c19oaXN0b2dyYW0gIik7CisJCWVsc2UKKwkJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LAor CQkJCQkJCQkgIk5VTEwgQVMgcmFuZ2VfbGVuZ3RoX2hpc3RvZ3JhbSwiCisJCQkJCQkJCSAiTlVM TCBBUyByYW5nZV9lbXB0eV9mcmFjLCIKKwkJCQkJCQkJICJOVUxMIEFTIHJhbmdlX2JvdW5kc19o aXN0b2dyYW0gIik7CiAKLQlhcHBlbmRSZWxTdGF0c0ltcG9ydChvdXQsIGZvdXQsIHJzaW5mbyk7 CisJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LAorCQkJCQkJCSAiRlJPTSBwZ19zdGF0cyBz ICIKKwkJCQkJCQkgIldIRVJFIHMuc2NoZW1hbmFtZSA9ICQxICIKKwkJCQkJCQkgIkFORCBzLnRh YmxlbmFtZSA9ICQyICIKKwkJCQkJCQkgIk9SREVSIEJZIHMuYXR0bmFtZSwgcy5pbmhlcml0ZWQi KTsKKworCQlFeGVjdXRlU3FsU3RhdGVtZW50KGZvdXQsIHF1ZXJ5LT5kYXRhKTsKKworCQlmb3V0 LT5pc19wcmVwYXJlZFtQUkVQUVVFUllfR0VUQVRUUklCVVRFU1RBVFNdID0gdHJ1ZTsKKwkJcmVz ZXRQUUV4cEJ1ZmZlcihxdWVyeSk7CisJfQorCisJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnks ICJFWEVDVVRFIGdldEF0dHJpYnV0ZVN0YXRzKCIpOworCWFwcGVuZFN0cmluZ0xpdGVyYWxBSChx dWVyeSwgZG9iai0+bmFtZXNwYWNlLT5kb2JqLm5hbWUsIGZvdXQpOworCWFwcGVuZFBRRXhwQnVm ZmVyU3RyKHF1ZXJ5LCAiLCAiKTsKKwlhcHBlbmRTdHJpbmdMaXRlcmFsQUgocXVlcnksIGRvYmot Pm5hbWUsIGZvdXQpOworCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LCAiKTsgIik7CiAKLQlx dWVyeSA9IGNyZWF0ZVBRRXhwQnVmZmVyKCk7Ci0JZ2V0QXR0U3RhdHNFeHBvcnRRdWVyeShxdWVy eSwgZm91dCwgZG9iai0+bmFtZXNwYWNlLT5kb2JqLm5hbWUsCi0JCQkJCQkgICBkb2JqLT5uYW1l KTsKIAlyZXMgPSBFeGVjdXRlU3FsUXVlcnkoZm91dCwgcXVlcnktPmRhdGEsIFBHUkVTX1RVUExF U19PSyk7Ci0JYXBwZW5kQXR0U3RhdHNJbXBvcnQob3V0LCBmb3V0LCByZXMpOworCisJb3V0ID0g Y3JlYXRlUFFFeHBCdWZmZXIoKTsKKworCXF1YWxpZmllZF9uYW1lID0gZm10UXVhbGlmaWVkSWQo cnNpbmZvLT5kb2JqLm5hbWVzcGFjZS0+ZG9iai5uYW1lLAorCQkJCQkJCQkJcnNpbmZvLT5kb2Jq Lm5hbWUpOworCisJYXBwZW5kUmVsU3RhdHNJbXBvcnQob3V0LCBmb3V0LCByc2luZm8sIHF1YWxp ZmllZF9uYW1lKTsKKwlhcHBlbmRBdHRTdGF0c0ltcG9ydChvdXQsIGZvdXQsIHJlcywgcXVhbGlm aWVkX25hbWUpOworCiAJUFFjbGVhcihyZXMpOwogCiAJQXJjaGl2ZUVudHJ5KGZvdXQsIG5pbENh dGFsb2dJZCwgY3JlYXRlRHVtcElkKCksCi0tIAoyLjM0LjEKCg== --=-YAOxLY6OTfHxvtiXrv3N--