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 1qMBUl-001cIW-9n for pgsql-hackers@arkaria.postgresql.org; Wed, 19 Jul 2023 18:01:51 +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 1qMBUi-008obC-Lu for pgsql-hackers@arkaria.postgresql.org; Wed, 19 Jul 2023 18:01:48 +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 1qMBUi-008oZr-4h for pgsql-hackers@lists.postgresql.org; Wed, 19 Jul 2023 18:01:48 +0000 Received: from mail-oa1-x29.google.com ([2001:4860:4864:20::29]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1qMBUS-000M3y-3h for pgsql-hackers@postgresql.org; Wed, 19 Jul 2023 18:01:46 +0000 Received: by mail-oa1-x29.google.com with SMTP id 586e51a60fabf-1b06ea7e7beso5545266fac.0 for ; Wed, 19 Jul 2023 11:01:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=neon-tech.20221208.gappssmtp.com; s=20221208; t=1689789691; x=1692381691; h=in-reply-to:references:message-id:from:to:subject:cc:date :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=rGJQCww7owjDtUd0mHAbDrl302S80lRmNFs1gjMIY5w=; b=nKliD09zkVDvafh8D5ResEwwNzdQA6dnNwxEU54oxV3G3Wa7ZGsi7fxPeRQKt8Tu/2 yvDfhVrcPOb/qIcHWxNPwFUSKW4MyY/2PeKl7Ou+TqvSw27eyk78w8VQvqo2STO3zI3q ba86a0TjX0DUsPYVX/gxh5M/Dn21yWh9smhKxH0D57ugF0SIDoBkLSlaZ8htThyLqyi0 cQ+DooB1XzjrcjfEoaRgxCGBv76dGSn9fsUrYqMvMwsegx3KafPhN94jVsJ0Fw2wKbzg 4EVtqRpi7Q2DzKyQFZmkiNG+96MvxWF5ZHLPIbItJqokaJUfi1U52LyeMSxklkk3KFdv i9Uw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1689789691; x=1692381691; h=in-reply-to:references:message-id:from:to:subject:cc:date :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=rGJQCww7owjDtUd0mHAbDrl302S80lRmNFs1gjMIY5w=; b=I1z+ZafqvLxSPqSEAgH+eYj5SUSQKcZw5kViNbDdPgDS/viOQrmEvHpvDX3XQmAXn+ BGHJj7AG/goeiKXzRQqngjfaVEOFsgoZGvugEKeOz3kT5mmDY+trBO4QHKxrYLevSrNZ P9Oo2Z/5JaQ+R5ZZQv90PCsb5O5PPjHLT+5sg5CTYFrzJpQ77ybp4jjdB7DOCTOM40q/ CT/DBF64kSo8LkitXb6vMoSBj2jEehhDAoRuAZCztC3H8zbHQvGBmX6YcoUrmL0eVwt9 cnG/+z/FxaZF+l9dWRJDvQOtC6q5vZnOcJMG8lXhbKABPGeU1ICgcSYX0Iyh2LfvXGrg RB8w== X-Gm-Message-State: ABy/qLYdYDAf6PS72b3GIxH+BZurAKzx+pGewPDxhqTlo7r8xc3Of7kW axRWQznvuQZN7cO9fGB+cR+uxA== X-Google-Smtp-Source: APBJJlEsVgdC8CmireetDEjk21K5puOEP23XkBck1Jxh69Ng4oMAGxB+X+u3SG59Jdh1ZiJMcaDcWw== X-Received: by 2002:a05:6870:d248:b0:1b3:cee4:cac9 with SMTP id h8-20020a056870d24800b001b3cee4cac9mr7878261oac.33.1689789690789; Wed, 19 Jul 2023 11:01:30 -0700 (PDT) Received: from localhost ([2607:fb90:f280:130d:3996:e070:71ee:42fb]) by smtp.gmail.com with ESMTPSA id zf10-20020a0568716a8a00b001aaa093932bsm2171305oab.11.2023.07.19.11.01.29 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 19 Jul 2023 11:01:30 -0700 (PDT) Content-Type: multipart/mixed; boundary=bc8ffa670a36d53b58ab1bb138c3aa8d22b6d298cf04d3c0022993fb8406 Mime-Version: 1.0 Date: Wed, 19 Jul 2023 13:01:29 -0500 Cc: Subject: Re: Use COPY for populating all pgbench tables To: "Michael Paquier" From: "Tristan Partin" Message-Id: X-Mailer: aerc 0.15.2-105-g00bf476582f7 References: In-Reply-To: List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --bc8ffa670a36d53b58ab1bb138c3aa8d22b6d298cf04d3c0022993fb8406 Content-Type: multipart/alternative; boundary=fb7e7301f83b9ef6c46096b5ed9f09c4651d7881c28fde5d2e47eb30caf1 --fb7e7301f83b9ef6c46096b5ed9f09c4651d7881c28fde5d2e47eb30caf1 Content-Transfer-Encoding: quoted-printable Content-Disposition: inline Content-Type: text/plain; charset=UTF-8; format=Flowed On Wed Jul 12, 2023 at 10:52 PM CDT, Michael Paquier wrote: > On Wed, Jul 12, 2023 at 09:29:35AM -0500, Tristan Partin wrote: > > On Wed Jul 12, 2023 at 1:06 AM CDT, Michael Paquier wrote: > >> This would use the freeze option only on pgbench_accounts when no > >> partitioning is defined, but my point was a bit different. We could > >> use the FREEZE option on the teller and branch tables as well, no? > >> Okay, the impact is limited compared to accounts in terms of amount of > >> data loaded, but perhaps some people like playing with large scaling > >> factors where this could show a benefit in the initial data loading. > >=20 > > Perhaps, should they all be keyed off the same option? Seemed like in > > your previous comment you wanted multiple options. Sorry for not readin= g > > your comment correctly. > > I would have though that --partition should only apply to the > pgbench_accounts table, while FREEZE should apply where it is possible > to use it, aka all the COPY queries except when pgbench_accounts is a > partition. Would you do something different, like not applying FREEZE > to pgbench_tellers and pgbench_branches as these have much less tuples > than pgbench_accounts? Michael, I think I completely misunderstood you. From what I can tell, you want to use FREEZE wherever possible. I think the new patch covers your comment and fixes the documentation. I am hoping that I have finally gotten what you are looking for. --=20 Tristan Partin Neon (https://neon.tech) --fb7e7301f83b9ef6c46096b5ed9f09c4651d7881c28fde5d2e47eb30caf1-- --bc8ffa670a36d53b58ab1bb138c3aa8d22b6d298cf04d3c0022993fb8406 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v4-0001-Use-COPY-instead-of-INSERT-for-populating-all-tab.patch Content-Type: text/x-patch; charset=utf-8; name=v4-0001-Use-COPY-instead-of-INSERT-for-populating-all-tab.patch RnJvbSA2ZmNjNjg1ZmFkOTY0MDgxOGRhN2M4YzVmZjhhMTBkM2ZjZjFhYWVkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBUcmlzdGFuIFBhcnRpbiA8dHJpc3RhbkBuZW9uLnRlY2g+CkRh dGU6IFR1ZSwgMjMgTWF5IDIwMjMgMTE6NDg6MTYgLTA1MDAKU3ViamVjdDogW1BBVENIIHY0XSBV c2UgQ09QWSBpbnN0ZWFkIG9mIElOU0VSVCBmb3IgcG9wdWxhdGluZyBhbGwgdGFibGVzCgpDT1BZ IGlzIGEgYmV0dGVyIGludGVyZmFjZSBmb3IgYnVsayBsb2FkaW5nIGFuZC9vciBoaWdoIGxhdGVu Y3kKY29ubmVjdGlvbnMuIFByZXZpb3VzbHkgQ09QWSB3YXMgb25seSB1c2VkIGZvciB0aGUgcGdi ZW5jaF9hY2NvdW50cwp0YWJsZSBiZWNhdXNlIHRoZSBhbW91bnQgb2YgZGF0YSB3YXMgc28gbXVj aCBsYXJnZXIgdGhhbiB0aGUgb3RoZXIKdGFibGVzLiBIb3dldmVyLCBhcyBhbHJlYWR5IHNhaWQg dGhlcmUgYXJlIGFsc28gZ2FpbnMgdG8gYmUgaGFkIGluIHRoZQpoaWdoIGxhdGVuY3kgY2FzZSwg c3VjaCBhcyBsb2FkaW5nIGRhdGEgYWNyb3NzIGNvbnRpbmVudHMuCi0tLQogc3JjL2Jpbi9wZ2Jl bmNoL3BnYmVuY2guYyB8IDE1NSArKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0t LQogMSBmaWxlIGNoYW5nZWQsIDkwIGluc2VydGlvbnMoKyksIDY1IGRlbGV0aW9ucygtKQoKZGlm ZiAtLWdpdCBhL3NyYy9iaW4vcGdiZW5jaC9wZ2JlbmNoLmMgYi9zcmMvYmluL3BnYmVuY2gvcGdi ZW5jaC5jCmluZGV4IDA4N2JhYTdkNTcuLjZkYjE1MDAxNTEgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4v cGdiZW5jaC9wZ2JlbmNoLmMKKysrIGIvc3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2guYwpAQCAtNDg1 OSwxNyArNDg1OSw0NiBAQCBpbml0VHJ1bmNhdGVUYWJsZXMoUEdjb25uICpjb24pCiAJCQkJCSAi cGdiZW5jaF90ZWxsZXJzIik7CiB9CiAKLS8qCi0gKiBGaWxsIHRoZSBzdGFuZGFyZCB0YWJsZXMg d2l0aCBzb21lIGRhdGEgZ2VuZXJhdGVkIGFuZCBzZW50IGZyb20gdGhlIGNsaWVudAotICovCit0 eXBlZGVmIHZvaWQgaW5pdFJvdyhQUUV4cEJ1ZmZlckRhdGEgKnNxbCwgaW50NjQgY3Vycik7CisK IHN0YXRpYyB2b2lkCi1pbml0R2VuZXJhdGVEYXRhQ2xpZW50U2lkZShQR2Nvbm4gKmNvbikKK2lu aXRCcmFuY2goUFFFeHBCdWZmZXJEYXRhICpzcWwsIGludDY0IGN1cnIpCit7CisJLyogImZpbGxl ciIgY29sdW1uIGRlZmF1bHRzIHRvIE5VTEwgKi8KKwlwcmludGZQUUV4cEJ1ZmZlcihzcWwsCisJ CQkJCSAgSU5UNjRfRk9STUFUICJcdDBcdFxuIiwKKwkJCQkJICBjdXJyICsgMSk7Cit9CisKK3N0 YXRpYyB2b2lkCitpbml0VGVsbGVyKFBRRXhwQnVmZmVyRGF0YSAqc3FsLCBpbnQ2NCBjdXJyKQor eworCS8qICJmaWxsZXIiIGNvbHVtbiBkZWZhdWx0cyB0byBOVUxMICovCisJcHJpbnRmUFFFeHBC dWZmZXIoc3FsLAorCQkJCQkgIElOVDY0X0ZPUk1BVCAiXHQiIElOVDY0X0ZPUk1BVCAiXHQwXHRc biIsCisJCQkJCSAgY3VyciArIDEsIGN1cnIgLyBudGVsbGVycyArIDEpOworfQorCitzdGF0aWMg dm9pZAoraW5pdEFjY291bnQoUFFFeHBCdWZmZXJEYXRhICpzcWwsIGludDY0IGN1cnIpCit7CisJ LyogImZpbGxlciIgY29sdW1uIGRlZmF1bHRzIHRvIGJsYW5rIHBhZGRlZCBlbXB0eSBzdHJpbmcg Ki8KKwlwcmludGZQUUV4cEJ1ZmZlcihzcWwsCisJCQkJCSAgSU5UNjRfRk9STUFUICJcdCIgSU5U NjRfRk9STUFUICJcdDBcdFxuIiwKKwkJCQkJICBjdXJyICsgMSwgY3VyciAvIG5hY2NvdW50cyAr IDEpOworfQorCitzdGF0aWMgdm9pZAoraW5pdFBvcHVsYXRlVGFibGUoUEdjb25uICpjb24sIGNv bnN0IGNoYXIgKnRhYmxlLCBpbnQ2NCBiYXNlLCBpbml0Um93ICppbml0X3JvdykKIHsKKwlpbnQJ CQluOworCWludAkJCWs7CisJaW50CQkJY2hhcnMgPSAwOworCVBHcmVzdWx0CSpyZXM7CiAJUFFF eHBCdWZmZXJEYXRhIHNxbDsKLQlQR3Jlc3VsdCAgICpyZXM7Ci0JaW50CQkJaTsKLQlpbnQ2NAkJ azsKLQljaGFyCSAgICpjb3B5X3N0YXRlbWVudDsKKwljaGFyIAkJY29weV9zdGF0ZW1lbnRbMjU2 XTsKKwljb25zdCBjaGFyICpjb3B5X3N0YXRlbWVudF9mbXQ7CisJY29uc3QgaW50NjQgdG90YWwg PSBiYXNlICogc2NhbGU7CiAKIAkvKiB1c2VkIHRvIHRyYWNrIGVsYXBzZWQgdGltZSBhbmQgZXN0 aW1hdGUgb2YgdGhlIHJlbWFpbmluZyB0aW1lICovCiAJcGdfdGltZV91c2VjX3Qgc3RhcnQ7CkBA IC00ODc4LDUwICs0OTA3LDIyIEBAIGluaXRHZW5lcmF0ZURhdGFDbGllbnRTaWRlKFBHY29ubiAq Y29uKQogCS8qIFN0YXkgb24gdGhlIHNhbWUgbGluZSBpZiByZXBvcnRpbmcgdG8gYSB0ZXJtaW5h bCAqLwogCWNoYXIJCWVvbCA9IGlzYXR0eShmaWxlbm8oc3RkZXJyKSkgPyAnXHInIDogJ1xuJzsK IAotCWZwcmludGYoc3RkZXJyLCAiZ2VuZXJhdGluZyBkYXRhIChjbGllbnQtc2lkZSkuLi5cbiIp OwotCi0JLyoKLQkgKiB3ZSBkbyBhbGwgb2YgdGhpcyBpbiBvbmUgdHJhbnNhY3Rpb24gdG8gZW5h YmxlIHRoZSBiYWNrZW5kJ3MKLQkgKiBkYXRhLWxvYWRpbmcgb3B0aW1pemF0aW9ucwotCSAqLwot CWV4ZWN1dGVTdGF0ZW1lbnQoY29uLCAiYmVnaW4iKTsKLQotCS8qIHRydW5jYXRlIGF3YXkgYW55 IG9sZCBkYXRhICovCi0JaW5pdFRydW5jYXRlVGFibGVzKGNvbik7Ci0KIAlpbml0UFFFeHBCdWZm ZXIoJnNxbCk7CiAKIAkvKgotCSAqIGZpbGwgYnJhbmNoZXMsIHRlbGxlcnMsIGFjY291bnRzIGlu IHRoYXQgb3JkZXIgaW4gY2FzZSBmb3JlaWduIGtleXMKLQkgKiBhbHJlYWR5IGV4aXN0CisJICog VXNlIENPUFkgd2l0aCBGUkVFWkUgb24gdjE0IGFuZCBsYXRlciB3aXRob3V0IHBhcnRpdGlvbmlu Zy4gIFJlbWVtYmVyCisJICogdGhhdCBwYXJ0aXRpb25zIG9ubHkgYXBwbGllcyB0byBwZ2JlbmNo X2FjY291bnRzLgogCSAqLwotCWZvciAoaSA9IDA7IGkgPCBuYnJhbmNoZXMgKiBzY2FsZTsgaSsr KQotCXsKLQkJLyogImZpbGxlciIgY29sdW1uIGRlZmF1bHRzIHRvIE5VTEwgKi8KLQkJcHJpbnRm UFFFeHBCdWZmZXIoJnNxbCwKLQkJCQkJCSAgImluc2VydCBpbnRvIHBnYmVuY2hfYnJhbmNoZXMo YmlkLGJiYWxhbmNlKSB2YWx1ZXMoJWQsMCkiLAotCQkJCQkJICBpICsgMSk7Ci0JCWV4ZWN1dGVT dGF0ZW1lbnQoY29uLCBzcWwuZGF0YSk7Ci0JfQotCi0JZm9yIChpID0gMDsgaSA8IG50ZWxsZXJz ICogc2NhbGU7IGkrKykKLQl7Ci0JCS8qICJmaWxsZXIiIGNvbHVtbiBkZWZhdWx0cyB0byBOVUxM ICovCi0JCXByaW50ZlBRRXhwQnVmZmVyKCZzcWwsCi0JCQkJCQkgICJpbnNlcnQgaW50byBwZ2Jl bmNoX3RlbGxlcnModGlkLGJpZCx0YmFsYW5jZSkgdmFsdWVzICglZCwlZCwwKSIsCi0JCQkJCQkg IGkgKyAxLCBpIC8gbnRlbGxlcnMgKyAxKTsKLQkJZXhlY3V0ZVN0YXRlbWVudChjb24sIHNxbC5k YXRhKTsKLQl9Ci0KLQkvKgotCSAqIGFjY291bnRzIGlzIGJpZyBlbm91Z2ggdG8gYmUgd29ydGgg dXNpbmcgQ09QWSBhbmQgdHJhY2tpbmcgcnVudGltZQotCSAqLwotCi0JLyogdXNlIENPUFkgd2l0 aCBGUkVFWkUgb24gdjE0IGFuZCBsYXRlciB3aXRob3V0IHBhcnRpdGlvbmluZyAqLwotCWlmIChw YXJ0aXRpb25zID09IDAgJiYgUFFzZXJ2ZXJWZXJzaW9uKGNvbikgPj0gMTQwMDAwKQotCQljb3B5 X3N0YXRlbWVudCA9ICJjb3B5IHBnYmVuY2hfYWNjb3VudHMgZnJvbSBzdGRpbiB3aXRoIChmcmVl emUgb24pIjsKKwlpZiAocGFydGl0aW9ucyA9PSAwICYmIHN0cmNtcCh0YWJsZSwgInBnYmVuY2hf YWNjb3VudHMiKSA9PSAwICYmIFBRc2VydmVyVmVyc2lvbihjb24pID49IDE0MDAwMCkKKwkJY29w eV9zdGF0ZW1lbnRfZm10ID0gImNvcHkgJXMgZnJvbSBzdGRpbiB3aXRoIChmcmVlemUgb24pIjsK IAllbHNlCi0JCWNvcHlfc3RhdGVtZW50ID0gImNvcHkgcGdiZW5jaF9hY2NvdW50cyBmcm9tIHN0 ZGluIjsKKwkJY29weV9zdGF0ZW1lbnRfZm10ID0gImNvcHkgJXMgZnJvbSBzdGRpbiI7CisKKwlu ID0gcGdfc25wcmludGYoY29weV9zdGF0ZW1lbnQsIHNpemVvZihjb3B5X3N0YXRlbWVudCksIGNv cHlfc3RhdGVtZW50X2ZtdCwgdGFibGUpOworCWlmIChuID49IHNpemVvZihjb3B5X3N0YXRlbWVu dCkpCisJCXBnX2ZhdGFsKCJpbnZhbGlkIGJ1ZmZlciBzaXplOiBtdXN0IGJlIGF0IGxlYXN0ICVk IGNoYXJhY3RlcnMgbG9uZyIsIG4pOworCWVsc2UgaWYgKG4gPT0gLTEpCisJCXBnX2ZhdGFsKCJp bnZhbGlkIGZvcm1hdCBzdHJpbmciKTsKIAogCXJlcyA9IFBRZXhlYyhjb24sIGNvcHlfc3RhdGVt ZW50KTsKIApAQCAtNDkzMSwxNCArNDkzMiwxMSBAQCBpbml0R2VuZXJhdGVEYXRhQ2xpZW50U2lk ZShQR2Nvbm4gKmNvbikKIAogCXN0YXJ0ID0gcGdfdGltZV9ub3coKTsKIAotCWZvciAoayA9IDA7 IGsgPCAoaW50NjQpIG5hY2NvdW50cyAqIHNjYWxlOyBrKyspCisJZm9yIChrID0gMDsgayA8IHRv dGFsOyBrKyspCiAJewotCQlpbnQ2NAkJaiA9IGsgKyAxOworCQljb25zdCBpbnQ2NAkJaiA9IGsg KyAxOwogCi0JCS8qICJmaWxsZXIiIGNvbHVtbiBkZWZhdWx0cyB0byBibGFuayBwYWRkZWQgZW1w dHkgc3RyaW5nICovCi0JCXByaW50ZlBRRXhwQnVmZmVyKCZzcWwsCi0JCQkJCQkgIElOVDY0X0ZP Uk1BVCAiXHQiIElOVDY0X0ZPUk1BVCAiXHQwXHRcbiIsCi0JCQkJCQkgIGosIGsgLyBuYWNjb3Vu dHMgKyAxKTsKKwkJaW5pdF9yb3coJnNxbCwgayk7CiAJCWlmIChQUXB1dGxpbmUoY29uLCBzcWwu ZGF0YSkpCiAJCQlwZ19mYXRhbCgiUFFwdXRsaW5lIGZhaWxlZCIpOwogCkBAIC00OTUyLDI1ICs0 OTUwLDI2IEBAIGluaXRHZW5lcmF0ZURhdGFDbGllbnRTaWRlKFBHY29ubiAqY29uKQogCQlpZiAo KCF1c2VfcXVpZXQpICYmIChqICUgMTAwMDAwID09IDApKQogCQl7CiAJCQlkb3VibGUJCWVsYXBz ZWRfc2VjID0gUEdfVElNRV9HRVRfRE9VQkxFKHBnX3RpbWVfbm93KCkgLSBzdGFydCk7Ci0JCQlk b3VibGUJCXJlbWFpbmluZ19zZWMgPSAoKGRvdWJsZSkgc2NhbGUgKiBuYWNjb3VudHMgLSBqKSAq IGVsYXBzZWRfc2VjIC8gajsKKwkJCWRvdWJsZQkJcmVtYWluaW5nX3NlYyA9ICgoZG91YmxlKSB0 b3RhbCAtIGopICogZWxhcHNlZF9zZWMgLyBqOwogCi0JCQlmcHJpbnRmKHN0ZGVyciwgSU5UNjRf Rk9STUFUICIgb2YgIiBJTlQ2NF9GT1JNQVQgIiB0dXBsZXMgKCVkJSUpIGRvbmUgKGVsYXBzZWQg JS4yZiBzLCByZW1haW5pbmcgJS4yZiBzKSVjIiwKLQkJCQkJaiwgKGludDY0KSBuYWNjb3VudHMg KiBzY2FsZSwKLQkJCQkJKGludCkgKCgoaW50NjQpIGogKiAxMDApIC8gKG5hY2NvdW50cyAqIChp bnQ2NCkgc2NhbGUpKSwKLQkJCQkJZWxhcHNlZF9zZWMsIHJlbWFpbmluZ19zZWMsIGVvbCk7CisJ CQljaGFycyA9IGZwcmludGYoc3RkZXJyLCBJTlQ2NF9GT1JNQVQgIiBvZiAiIElOVDY0X0ZPUk1B VCAiIHR1cGxlcyAoJWQlJSkgb2YgJXMgZG9uZSAoZWxhcHNlZCAlLjJmIHMsIHJlbWFpbmluZyAl LjJmIHMpJWMiLAorCQkJCQlqLCB0b3RhbCwKKwkJCQkJKGludCkgKChqICogMTAwKSAvIHRvdGFs KSwKKwkJCQkJdGFibGUsIGVsYXBzZWRfc2VjLCByZW1haW5pbmdfc2VjLCBlb2wpOwogCQl9CiAJ CS8qIGxldCdzIG5vdCBjYWxsIHRoZSB0aW1pbmcgZm9yIGVhY2ggcm93LCBidXQgb25seSBlYWNo IDEwMCByb3dzICovCiAJCWVsc2UgaWYgKHVzZV9xdWlldCAmJiAoaiAlIDEwMCA9PSAwKSkKIAkJ ewogCQkJZG91YmxlCQllbGFwc2VkX3NlYyA9IFBHX1RJTUVfR0VUX0RPVUJMRShwZ190aW1lX25v dygpIC0gc3RhcnQpOwotCQkJZG91YmxlCQlyZW1haW5pbmdfc2VjID0gKChkb3VibGUpIHNjYWxl ICogbmFjY291bnRzIC0gaikgKiBlbGFwc2VkX3NlYyAvIGo7CisJCQlkb3VibGUJCXJlbWFpbmlu Z19zZWMgPSAoKGRvdWJsZSkgdG90YWwgLSBqKSAqIGVsYXBzZWRfc2VjIC8gajsKIAogCQkJLyog aGF2ZSB3ZSByZWFjaGVkIHRoZSBuZXh0IGludGVydmFsIChvciBlbmQpPyAqLwotCQkJaWYgKChq ID09IHNjYWxlICogbmFjY291bnRzKSB8fCAoZWxhcHNlZF9zZWMgPj0gbG9nX2ludGVydmFsICog TE9HX1NURVBfU0VDT05EUykpCisJCQlpZiAoKGogPT0gdG90YWwpIHx8IChlbGFwc2VkX3NlYyA+ PSBsb2dfaW50ZXJ2YWwgKiBMT0dfU1RFUF9TRUNPTkRTKSkKIAkJCXsKLQkJCQlmcHJpbnRmKHN0 ZGVyciwgSU5UNjRfRk9STUFUICIgb2YgIiBJTlQ2NF9GT1JNQVQgIiB0dXBsZXMgKCVkJSUpIGRv bmUgKGVsYXBzZWQgJS4yZiBzLCByZW1haW5pbmcgJS4yZiBzKSVjIiwKLQkJCQkJCWosIChpbnQ2 NCkgbmFjY291bnRzICogc2NhbGUsCi0JCQkJCQkoaW50KSAoKChpbnQ2NCkgaiAqIDEwMCkgLyAo bmFjY291bnRzICogKGludDY0KSBzY2FsZSkpLCBlbGFwc2VkX3NlYywgcmVtYWluaW5nX3NlYywg ZW9sKTsKKwkJCQljaGFycyA9IGZwcmludGYoc3RkZXJyLCBJTlQ2NF9GT1JNQVQgIiBvZiAiIElO VDY0X0ZPUk1BVCAiIHR1cGxlcyAoJWQlJSkgb2YgJXMgZG9uZSAoZWxhcHNlZCAlLjJmIHMsIHJl bWFpbmluZyAlLjJmIHMpJWMiLAorCQkJCQkJaiwgdG90YWwsCisJCQkJCQkoaW50KSAoKGogKiAx MDApIC8gdG90YWwpLAorCQkJCQkJdGFibGUsIGVsYXBzZWRfc2VjLCByZW1haW5pbmdfc2VjLCBl b2wpOwogCiAJCQkJLyogc2tpcCB0byB0aGUgbmV4dCBpbnRlcnZhbCAqLwogCQkJCWxvZ19pbnRl cnZhbCA9IChpbnQpIGNlaWwoZWxhcHNlZF9zZWMgLyBMT0dfU1RFUF9TRUNPTkRTKTsKQEAgLTQ5 NzgsOCArNDk3Nyw4IEBAIGluaXRHZW5lcmF0ZURhdGFDbGllbnRTaWRlKFBHY29ubiAqY29uKQog CQl9CiAJfQogCi0JaWYgKGVvbCAhPSAnXG4nKQotCQlmcHV0YygnXG4nLCBzdGRlcnIpOwkvKiBO ZWVkIHRvIG1vdmUgdG8gbmV4dCBsaW5lICovCisJaWYgKGNoYXJzICE9IDAgJiYgZW9sICE9ICdc bicpCisJCWZwcmludGYoc3RkZXJyLCAiJSpjXHIiLCBjaGFycyAtIDEsICcgJyk7IC8qIENsZWFy IHRoZSBjdXJyZW50IGxpbmUgKi8KIAogCWlmIChQUXB1dGxpbmUoY29uLCAiXFwuXG4iKSkKIAkJ cGdfZmF0YWwoInZlcnkgbGFzdCBQUXB1dGxpbmUgZmFpbGVkIik7CkBAIC00OTg3LDYgKzQ5ODYs MzIgQEAgaW5pdEdlbmVyYXRlRGF0YUNsaWVudFNpZGUoUEdjb25uICpjb24pCiAJCXBnX2ZhdGFs KCJQUWVuZGNvcHkgZmFpbGVkIik7CiAKIAl0ZXJtUFFFeHBCdWZmZXIoJnNxbCk7Cit9CisKKy8q CisgKiBGaWxsIHRoZSBzdGFuZGFyZCB0YWJsZXMgd2l0aCBzb21lIGRhdGEgZ2VuZXJhdGVkIGFu ZCBzZW50IGZyb20gdGhlIGNsaWVudAorICovCitzdGF0aWMgdm9pZAoraW5pdEdlbmVyYXRlRGF0 YUNsaWVudFNpZGUoUEdjb25uICpjb24pCit7CisJZnByaW50ZihzdGRlcnIsICJnZW5lcmF0aW5n IGRhdGEgKGNsaWVudC1zaWRlKS4uLlxuIik7CisKKwkvKgorCSAqIHdlIGRvIGFsbCBvZiB0aGlz IGluIG9uZSB0cmFuc2FjdGlvbiB0byBlbmFibGUgdGhlIGJhY2tlbmQncworCSAqIGRhdGEtbG9h ZGluZyBvcHRpbWl6YXRpb25zCisJICovCisJZXhlY3V0ZVN0YXRlbWVudChjb24sICJiZWdpbiIp OworCisJLyogdHJ1bmNhdGUgYXdheSBhbnkgb2xkIGRhdGEgKi8KKwlpbml0VHJ1bmNhdGVUYWJs ZXMoY29uKTsKKworCS8qCisJICogZmlsbCBicmFuY2hlcywgdGVsbGVycywgYWNjb3VudHMgaW4g dGhhdCBvcmRlciBpbiBjYXNlIGZvcmVpZ24ga2V5cworCSAqIGFscmVhZHkgZXhpc3QKKwkgKi8K Kwlpbml0UG9wdWxhdGVUYWJsZShjb24sICJwZ2JlbmNoX2JyYW5jaGVzIiwgbmJyYW5jaGVzLCBp bml0QnJhbmNoKTsKKwlpbml0UG9wdWxhdGVUYWJsZShjb24sICJwZ2JlbmNoX3RlbGxlcnMiLCBu dGVsbGVycywgaW5pdFRlbGxlcik7CisJaW5pdFBvcHVsYXRlVGFibGUoY29uLCAicGdiZW5jaF9h Y2NvdW50cyIsIG5hY2NvdW50cywgaW5pdEFjY291bnQpOwogCiAJZXhlY3V0ZVN0YXRlbWVudChj b24sICJjb21taXQiKTsKIH0KLS0gClRyaXN0YW4gUGFydGluCk5lb24gKGh0dHBzOi8vbmVvbi50 ZWNoKQoK --bc8ffa670a36d53b58ab1bb138c3aa8d22b6d298cf04d3c0022993fb8406--