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 1qMZEq-002i6W-CA for pgsql-hackers@arkaria.postgresql.org; Thu, 20 Jul 2023 19:23:00 +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 1qMZEo-00FQpl-By for pgsql-hackers@arkaria.postgresql.org; Thu, 20 Jul 2023 19:22:58 +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 1qMZEn-00FQoH-Kr for pgsql-hackers@lists.postgresql.org; Thu, 20 Jul 2023 19:22:58 +0000 Received: from mail-oi1-x22a.google.com ([2607:f8b0:4864:20::22a]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1qMZEj-000YQt-IY for pgsql-hackers@postgresql.org; Thu, 20 Jul 2023 19:22:56 +0000 Received: by mail-oi1-x22a.google.com with SMTP id 5614622812f47-3a4062577c0so1480866b6e.0 for ; Thu, 20 Jul 2023 12:22:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=neon-tech.20221208.gappssmtp.com; s=20221208; t=1689880973; x=1690485773; h=in-reply-to:references:message-id:from:to:subject:cc:date :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=ALn5pR9DXEsdXpz/6UtSxBWeEmvyGjzXLbDeg2Z70po=; b=O6BwDvdkNCkX5Udj3j1aGKBHGXRWrkZEeKc5R9LiW/MGoXpHihhha4zW0139+F9bts K/LutuAy13nhsykAe12ou4ZmWbr8304sgRSpvx8/TjQQe5cbq6qQVnQaqV+jJ2c5nau/ 6FcR9snT3gOKhZ6H7CSQa35KlSHHxtcCCHBiylStel+SaBSOGU6woP0PMGj/0FKDw+n1 QwSDdJUdu+iXpZ1n2zJ52ROkVEgOTEMCyDzMWD5tJvhmSMSRSG13ASDeef/mR7TtdQDB dyU1g3mvtX8hGEpsKguh0+1YGYjNwafyaHh06oR3G+4p7I0Npt0hrMEshVKHjr2jzY0/ kbRQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1689880973; x=1690485773; 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=ALn5pR9DXEsdXpz/6UtSxBWeEmvyGjzXLbDeg2Z70po=; b=jUx8pZvX4wYLgF25OmRrZLAs/WUjhafTQ4wnpPiIKm6+TCs8u9+hx65B8A8MJqaFDv n8YdadiE1Pwd6OIm3krVhqWPrr19qpCP9GvbvzZ0VlHapjWZEJqGR6BKDWKIxw8FHP/0 v+VMAUp2RcBCT28njk3BFuXcLnEeMySmvs0A0eStDXkd/kVkcRbPRp34itremNtp3UIl /4OPspKFXMHnV+iUniJ16BI9ahwD0fuNDqABusHPPbGGtJHFYQkbY8fr015dhvqnrptZ VIXQT9PZFzNGRFGqvdVHGMgVvCIS/VosgTJ6t6fz2pOR60+79j+TkZaG5EzCYIxzsOJW tWug== X-Gm-Message-State: ABy/qLY1lvg37zM0AlygtCpBdUY+6PJwZgdayBq+BUNg9JXKipzGf/PG PoUhysQ7RC0zldbzmAFKPM4kDujVMIfQrTxvduI= X-Google-Smtp-Source: APBJJlFbIFbPQmmSJ6mc8ckh0TcZjEaceo/hjCgBj92ZukmhO0MMgC/vpzj5oAP4U86x8kks2PKbrg== X-Received: by 2002:aca:230d:0:b0:3a4:8e62:d9f1 with SMTP id e13-20020aca230d000000b003a48e62d9f1mr325624oie.1.1689880972669; Thu, 20 Jul 2023 12:22:52 -0700 (PDT) Received: from localhost ([2607:fb90:f280:130d:3996:e070:71ee:42fb]) by smtp.gmail.com with ESMTPSA id q2-20020a4aac42000000b0056422cfb35csm690829oon.40.2023.07.20.12.22.51 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 20 Jul 2023 12:22:52 -0700 (PDT) Content-Type: multipart/mixed; boundary=055f20eedcebcec9570fc3fabe491283127e33fe7a087c5921b037cd3e1b Mime-Version: 1.0 Date: Thu, 20 Jul 2023 14:22:51 -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 --055f20eedcebcec9570fc3fabe491283127e33fe7a087c5921b037cd3e1b Content-Type: multipart/alternative; boundary=558868a3ab25aa12d2b76919e4e590dbde21d32e557cff54842103184267 --558868a3ab25aa12d2b76919e4e590dbde21d32e557cff54842103184267 Content-Transfer-Encoding: quoted-printable Content-Disposition: inline Content-Type: text/plain; charset=UTF-8; format=Flowed On Wed Jul 19, 2023 at 10:07 PM CDT, Michael Paquier wrote: > So this patch causes pgbench to not stick with its historical > behavior, and the change is incompatible with the comments because the > tellers and branches tables don't use NULL for their filler attribute > anymore. Great find. This was a problem of me just not understanding the COPY=20 command properly. Relevant documentation snippet: > Specifies the string that represents a null value. The default is \N=20 > (backslash-N) in text format, and an unquoted empty string in CSV=20 > format. You might prefer an empty string even in text format for cases=20 > where you don't want to distinguish nulls from empty strings. This=20 > option is not allowed when using binary format. This new revision populates the column with the NULL value. > psql (17devel) > Type "help" for help. >=20 > tristan957=3D# select count(1) from pgbench_branches; > count=20 > ------- > 1 > (1 row) >=20 > tristan957=3D# select count(1) from pgbench_branches where filler is null= ; > count=20 > ------- > 1 > (1 row) Thanks for your testing Michael. I went ahead and added a test to make=20 sure that this behavior doesn't regress accidentally, but I am=20 struggling to get the test to fail using the previous version of this=20 patch. Do you have any advice? This is my first time writing a test for=20 Postgres. I can recreate the issue outside of the test script, but not=20 within it for whatever reason. --=20 Tristan Partin Neon (https://neon.tech) --558868a3ab25aa12d2b76919e4e590dbde21d32e557cff54842103184267-- --055f20eedcebcec9570fc3fabe491283127e33fe7a087c5921b037cd3e1b Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v6-0001-Use-COPY-instead-of-INSERT-for-populating-all-tab.patch Content-Type: text/x-patch; charset=utf-8; name=v6-0001-Use-COPY-instead-of-INSERT-for-populating-all-tab.patch RnJvbSBjZjg0YjNlYTJkN2I1ODNhYWVlM2Y4MDgwN2IyNmVmNDUyMWRiMGY2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBUcmlzdGFuIFBhcnRpbiA8dHJpc3RhbkBuZW9uLnRlY2g+CkRh dGU6IFR1ZSwgMjMgTWF5IDIwMjMgMTE6NDg6MTYgLTA1MDAKU3ViamVjdDogW1BBVENIIHY2XSBV c2UgQ09QWSBpbnN0ZWFkIG9mIElOU0VSVCBmb3IgcG9wdWxhdGluZyBhbGwgdGFibGVzCgpDT1BZ IGlzIGEgYmV0dGVyIGludGVyZmFjZSBmb3IgYnVsayBsb2FkaW5nIGFuZC9vciBoaWdoIGxhdGVu Y3kKY29ubmVjdGlvbnMuIFByZXZpb3VzbHkgQ09QWSB3YXMgb25seSB1c2VkIGZvciB0aGUgcGdi ZW5jaF9hY2NvdW50cwp0YWJsZSBiZWNhdXNlIHRoZSBhbW91bnQgb2YgZGF0YSB3YXMgc28gbXVj aCBsYXJnZXIgdGhhbiB0aGUgb3RoZXIKdGFibGVzLiBIb3dldmVyLCBhcyBhbHJlYWR5IHNhaWQg dGhlcmUgYXJlIGFsc28gZ2FpbnMgdG8gYmUgaGFkIGluIHRoZQpoaWdoIGxhdGVuY3kgY2FzZSwg c3VjaCBhcyBsb2FkaW5nIGRhdGEgYWNyb3NzIGNvbnRpbmVudHMuCi0tLQogZG9jL3NyYy9zZ21s L3JlZi9wZ2JlbmNoLnNnbWwgICAgICAgICAgICAgICAgfCAgIDggKy0KIHNyYy9iaW4vcGdiZW5j aC9wZ2JlbmNoLmMgICAgICAgICAgICAgICAgICAgIHwgMTUxICsrKysrKysrKysrLS0tLS0tLS0K IHNyYy9iaW4vcGdiZW5jaC90LzAwMV9wZ2JlbmNoX3dpdGhfc2VydmVyLnBsIHwgIDE4ICsrKwog MyBmaWxlcyBjaGFuZ2VkLCAxMTAgaW5zZXJ0aW9ucygrKSwgNjcgZGVsZXRpb25zKC0pCgpkaWZm IC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9wZ2JlbmNoLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVm L3BnYmVuY2guc2dtbAppbmRleCA4NTAwMjg1NTdkLi40NDI0NTk1Y2M2IDEwMDY0NAotLS0gYS9k b2Mvc3JjL3NnbWwvcmVmL3BnYmVuY2guc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL3BnYmVu Y2guc2dtbApAQCAtMjMxLDEwICsyMzEsMTAgQEAgcGdiZW5jaCA8b3B0aW9uYWw+IDxyZXBsYWNl YWJsZT5vcHRpb25zPC9yZXBsYWNlYWJsZT4gPC9vcHRpb25hbD4gPHJlcGxhY2VhYmxlPmQKICAg ICAgICAgICAgIGV4dGVuc2l2ZWx5IHRocm91Z2ggYSA8Y29tbWFuZD5DT1BZPC9jb21tYW5kPi4K ICAgICAgICAgICAgIDxjb21tYW5kPnBnYmVuY2g8L2NvbW1hbmQ+IHVzZXMgdGhlIEZSRUVaRSBv cHRpb24gd2l0aCB2ZXJzaW9uIDE0IG9yIGxhdGVyCiAgICAgICAgICAgICBvZiA8cHJvZHVjdG5h bWU+UG9zdGdyZVNRTDwvcHJvZHVjdG5hbWU+IHRvIHNwZWVkIHVwCi0gICAgICAgICAgICBzdWJz ZXF1ZW50IDxjb21tYW5kPlZBQ1VVTTwvY29tbWFuZD4sIHVubGVzcyBwYXJ0aXRpb25zIGFyZSBl bmFibGVkLgotICAgICAgICAgICAgVXNpbmcgPGxpdGVyYWw+ZzwvbGl0ZXJhbD4gY2F1c2VzIGxv Z2dpbmcgdG8gcHJpbnQgb25lIG1lc3NhZ2UKLSAgICAgICAgICAgIGV2ZXJ5IDEwMCwwMDAgcm93 cyB3aGlsZSBnZW5lcmF0aW5nIGRhdGEgZm9yIHRoZQotICAgICAgICAgICAgPHN0cnVjdG5hbWU+ cGdiZW5jaF9hY2NvdW50czwvc3RydWN0bmFtZT4gdGFibGUuCisgICAgICAgICAgICBzdWJzZXF1 ZW50IDxjb21tYW5kPlZBQ1VVTTwvY29tbWFuZD4uIElmIHBhcnRpdGlvbnMgYXJlIGVuYWJsZWQg Zm9yCisgICAgICAgICAgICB0aGUgPGxpdGVyYWw+cGdiZW5jaF9hY2NvdW50czwvbGl0ZXJhbD4g dGFibGUsIHRoZSBGUkVFWkUgb3B0aW9uIGlzCisgICAgICAgICAgICBub3QgZW5hYmxlZC4gVXNp bmcgPGxpdGVyYWw+ZzwvbGl0ZXJhbD4gY2F1c2VzIGxvZ2dpbmcgdG8gcHJpbnQgb25lCisgICAg ICAgICAgICBtZXNzYWdlIGV2ZXJ5IDEwMCwwMDAgcm93cyB3aGlsZSBnZW5lcmF0aW5nIGRhdGEg Zm9yIGFsbCB0YWJsZXMuCiAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgICAgPHBhcmE+CiAg ICAgICAgICAgICBXaXRoIDxsaXRlcmFsPkc8L2xpdGVyYWw+IChzZXJ2ZXItc2lkZSBkYXRhIGdl bmVyYXRpb24pLApkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2guYyBiL3NyYy9i aW4vcGdiZW5jaC9wZ2JlbmNoLmMKaW5kZXggMDg3YmFhN2Q1Ny4uZWYwMWQwNDlhMSAxMDA2NDQK LS0tIGEvc3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2guYworKysgYi9zcmMvYmluL3BnYmVuY2gvcGdi ZW5jaC5jCkBAIC00ODU5LDE3ICs0ODU5LDQ0IEBAIGluaXRUcnVuY2F0ZVRhYmxlcyhQR2Nvbm4g KmNvbikKIAkJCQkJICJwZ2JlbmNoX3RlbGxlcnMiKTsKIH0KIAotLyoKLSAqIEZpbGwgdGhlIHN0 YW5kYXJkIHRhYmxlcyB3aXRoIHNvbWUgZGF0YSBnZW5lcmF0ZWQgYW5kIHNlbnQgZnJvbSB0aGUg Y2xpZW50Ci0gKi8KK3R5cGVkZWYgdm9pZCBpbml0Um93KFBRRXhwQnVmZmVyRGF0YSAqc3FsLCBp bnQ2NCBjdXJyKTsKKwogc3RhdGljIHZvaWQKLWluaXRHZW5lcmF0ZURhdGFDbGllbnRTaWRlKFBH Y29ubiAqY29uKQoraW5pdEJyYW5jaChQUUV4cEJ1ZmZlckRhdGEgKnNxbCwgaW50NjQgY3VycikK K3sKKwlwcmludGZQUUV4cEJ1ZmZlcihzcWwsCisJCQkJCSAgSU5UNjRfRk9STUFUICJcdDBcdFxc TlxuIiwKKwkJCQkJICBjdXJyICsgMSk7Cit9CisKK3N0YXRpYyB2b2lkCitpbml0VGVsbGVyKFBR RXhwQnVmZmVyRGF0YSAqc3FsLCBpbnQ2NCBjdXJyKQoreworCXByaW50ZlBRRXhwQnVmZmVyKHNx bCwKKwkJCQkJICBJTlQ2NF9GT1JNQVQgIlx0IiBJTlQ2NF9GT1JNQVQgIlx0MFx0XFxOXG4iLAor CQkJCQkgIGN1cnIgKyAxLCBjdXJyIC8gbnRlbGxlcnMgKyAxKTsKK30KKworc3RhdGljIHZvaWQK K2luaXRBY2NvdW50KFBRRXhwQnVmZmVyRGF0YSAqc3FsLCBpbnQ2NCBjdXJyKQogeworCS8qICJm aWxsZXIiIGNvbHVtbiBkZWZhdWx0cyB0byBibGFuayBwYWRkZWQgZW1wdHkgc3RyaW5nICovCisJ cHJpbnRmUFFFeHBCdWZmZXIoc3FsLAorCQkJCQkgIElOVDY0X0ZPUk1BVCAiXHQiIElOVDY0X0ZP Uk1BVCAiXHQwXHRcbiIsCisJCQkJCSAgY3VyciArIDEsIGN1cnIgLyBuYWNjb3VudHMgKyAxKTsK K30KKworc3RhdGljIHZvaWQKK2luaXRQb3B1bGF0ZVRhYmxlKFBHY29ubiAqY29uLCBjb25zdCBj aGFyICp0YWJsZSwgaW50NjQgYmFzZSwgaW5pdFJvdyAqaW5pdF9yb3cpCit7CisJaW50CQkJbjsK KwlpbnQJCQlrOworCWludAkJCWNoYXJzID0gMDsKKwlQR3Jlc3VsdAkqcmVzOwogCVBRRXhwQnVm ZmVyRGF0YSBzcWw7Ci0JUEdyZXN1bHQgICAqcmVzOwotCWludAkJCWk7Ci0JaW50NjQJCWs7Ci0J Y2hhcgkgICAqY29weV9zdGF0ZW1lbnQ7CisJY2hhciAJCWNvcHlfc3RhdGVtZW50WzI1Nl07CisJ Y29uc3QgY2hhciAqY29weV9zdGF0ZW1lbnRfZm10ID0gImNvcHkgJXMgZnJvbSBzdGRpbiI7CisJ Y29uc3QgaW50NjQgdG90YWwgPSBiYXNlICogc2NhbGU7CiAKIAkvKiB1c2VkIHRvIHRyYWNrIGVs YXBzZWQgdGltZSBhbmQgZXN0aW1hdGUgb2YgdGhlIHJlbWFpbmluZyB0aW1lICovCiAJcGdfdGlt ZV91c2VjX3Qgc3RhcnQ7CkBAIC00ODc4LDUwICs0OTA1LDI0IEBAIGluaXRHZW5lcmF0ZURhdGFD bGllbnRTaWRlKFBHY29ubiAqY29uKQogCS8qIFN0YXkgb24gdGhlIHNhbWUgbGluZSBpZiByZXBv cnRpbmcgdG8gYSB0ZXJtaW5hbCAqLwogCWNoYXIJCWVvbCA9IGlzYXR0eShmaWxlbm8oc3RkZXJy KSkgPyAnXHInIDogJ1xuJzsKIAotCWZwcmludGYoc3RkZXJyLCAiZ2VuZXJhdGluZyBkYXRhIChj bGllbnQtc2lkZSkuLi5cbiIpOwotCi0JLyoKLQkgKiB3ZSBkbyBhbGwgb2YgdGhpcyBpbiBvbmUg dHJhbnNhY3Rpb24gdG8gZW5hYmxlIHRoZSBiYWNrZW5kJ3MKLQkgKiBkYXRhLWxvYWRpbmcgb3B0 aW1pemF0aW9ucwotCSAqLwotCWV4ZWN1dGVTdGF0ZW1lbnQoY29uLCAiYmVnaW4iKTsKLQotCS8q IHRydW5jYXRlIGF3YXkgYW55IG9sZCBkYXRhICovCi0JaW5pdFRydW5jYXRlVGFibGVzKGNvbik7 Ci0KIAlpbml0UFFFeHBCdWZmZXIoJnNxbCk7CiAKIAkvKgotCSAqIGZpbGwgYnJhbmNoZXMsIHRl bGxlcnMsIGFjY291bnRzIGluIHRoYXQgb3JkZXIgaW4gY2FzZSBmb3JlaWduIGtleXMKLQkgKiBh bHJlYWR5IGV4aXN0CisJICogVXNlIENPUFkgd2l0aCBGUkVFWkUgb24gdjE0IGFuZCBsYXRlciB3 aXRob3V0IHBhcnRpdGlvbmluZy4gIFJlbWVtYmVyCisJICogdGhhdCBwYXJ0aXRpb25zIG9ubHkg YXBwbGllcyB0byBwZ2JlbmNoX2FjY291bnRzLgogCSAqLwotCWZvciAoaSA9IDA7IGkgPCBuYnJh bmNoZXMgKiBzY2FsZTsgaSsrKQotCXsKLQkJLyogImZpbGxlciIgY29sdW1uIGRlZmF1bHRzIHRv IE5VTEwgKi8KLQkJcHJpbnRmUFFFeHBCdWZmZXIoJnNxbCwKLQkJCQkJCSAgImluc2VydCBpbnRv IHBnYmVuY2hfYnJhbmNoZXMoYmlkLGJiYWxhbmNlKSB2YWx1ZXMoJWQsMCkiLAotCQkJCQkJICBp ICsgMSk7Ci0JCWV4ZWN1dGVTdGF0ZW1lbnQoY29uLCBzcWwuZGF0YSk7Ci0JfQorCWlmIChQUXNl cnZlclZlcnNpb24oY29uKSA+PSAxNDAwMDApIHsKKwkJY29uc3QgYm9vbCBpc19wZ2JlbmNoX2Fj Y291bnRzID0gc3RyY21wKHRhYmxlLCAicGdiZW5jaF9hY2NvdW50cyIpID09IDA7CiAKLQlmb3Ig KGkgPSAwOyBpIDwgbnRlbGxlcnMgKiBzY2FsZTsgaSsrKQotCXsKLQkJLyogImZpbGxlciIgY29s dW1uIGRlZmF1bHRzIHRvIE5VTEwgKi8KLQkJcHJpbnRmUFFFeHBCdWZmZXIoJnNxbCwKLQkJCQkJ CSAgImluc2VydCBpbnRvIHBnYmVuY2hfdGVsbGVycyh0aWQsYmlkLHRiYWxhbmNlKSB2YWx1ZXMg KCVkLCVkLDApIiwKLQkJCQkJCSAgaSArIDEsIGkgLyBudGVsbGVycyArIDEpOwotCQlleGVjdXRl U3RhdGVtZW50KGNvbiwgc3FsLmRhdGEpOworCQlpZiAoIWlzX3BnYmVuY2hfYWNjb3VudHMgfHwg cGFydGl0aW9ucyA9PSAwKQorCQkJY29weV9zdGF0ZW1lbnRfZm10ID0gImNvcHkgJXMgZnJvbSBz dGRpbiB3aXRoIChmcmVlemUgb24pIjsKIAl9CiAKLQkvKgotCSAqIGFjY291bnRzIGlzIGJpZyBl bm91Z2ggdG8gYmUgd29ydGggdXNpbmcgQ09QWSBhbmQgdHJhY2tpbmcgcnVudGltZQotCSAqLwot Ci0JLyogdXNlIENPUFkgd2l0aCBGUkVFWkUgb24gdjE0IGFuZCBsYXRlciB3aXRob3V0IHBhcnRp dGlvbmluZyAqLwotCWlmIChwYXJ0aXRpb25zID09IDAgJiYgUFFzZXJ2ZXJWZXJzaW9uKGNvbikg Pj0gMTQwMDAwKQotCQljb3B5X3N0YXRlbWVudCA9ICJjb3B5IHBnYmVuY2hfYWNjb3VudHMgZnJv bSBzdGRpbiB3aXRoIChmcmVlemUgb24pIjsKLQllbHNlCi0JCWNvcHlfc3RhdGVtZW50ID0gImNv cHkgcGdiZW5jaF9hY2NvdW50cyBmcm9tIHN0ZGluIjsKKwluID0gcGdfc25wcmludGYoY29weV9z dGF0ZW1lbnQsIHNpemVvZihjb3B5X3N0YXRlbWVudCksIGNvcHlfc3RhdGVtZW50X2ZtdCwgdGFi bGUpOworCWlmIChuID49IHNpemVvZihjb3B5X3N0YXRlbWVudCkpCisJCXBnX2ZhdGFsKCJpbnZh bGlkIGJ1ZmZlciBzaXplOiBtdXN0IGJlIGF0IGxlYXN0ICVkIGNoYXJhY3RlcnMgbG9uZyIsIG4p OworCWVsc2UgaWYgKG4gPT0gLTEpCisJCXBnX2ZhdGFsKCJpbnZhbGlkIGZvcm1hdCBzdHJpbmci KTsKIAogCXJlcyA9IFBRZXhlYyhjb24sIGNvcHlfc3RhdGVtZW50KTsKIApAQCAtNDkzMSwxNCAr NDkzMiwxMSBAQCBpbml0R2VuZXJhdGVEYXRhQ2xpZW50U2lkZShQR2Nvbm4gKmNvbikKIAogCXN0 YXJ0ID0gcGdfdGltZV9ub3coKTsKIAotCWZvciAoayA9IDA7IGsgPCAoaW50NjQpIG5hY2NvdW50 cyAqIHNjYWxlOyBrKyspCisJZm9yIChrID0gMDsgayA8IHRvdGFsOyBrKyspCiAJewotCQlpbnQ2 NAkJaiA9IGsgKyAxOworCQljb25zdCBpbnQ2NAkJaiA9IGsgKyAxOwogCi0JCS8qICJmaWxsZXIi IGNvbHVtbiBkZWZhdWx0cyB0byBibGFuayBwYWRkZWQgZW1wdHkgc3RyaW5nICovCi0JCXByaW50 ZlBRRXhwQnVmZmVyKCZzcWwsCi0JCQkJCQkgIElOVDY0X0ZPUk1BVCAiXHQiIElOVDY0X0ZPUk1B VCAiXHQwXHRcbiIsCi0JCQkJCQkgIGosIGsgLyBuYWNjb3VudHMgKyAxKTsKKwkJaW5pdF9yb3co JnNxbCwgayk7CiAJCWlmIChQUXB1dGxpbmUoY29uLCBzcWwuZGF0YSkpCiAJCQlwZ19mYXRhbCgi UFFwdXRsaW5lIGZhaWxlZCIpOwogCkBAIC00OTUyLDI1ICs0OTUwLDI2IEBAIGluaXRHZW5lcmF0 ZURhdGFDbGllbnRTaWRlKFBHY29ubiAqY29uKQogCQlpZiAoKCF1c2VfcXVpZXQpICYmIChqICUg MTAwMDAwID09IDApKQogCQl7CiAJCQlkb3VibGUJCWVsYXBzZWRfc2VjID0gUEdfVElNRV9HRVRf RE9VQkxFKHBnX3RpbWVfbm93KCkgLSBzdGFydCk7Ci0JCQlkb3VibGUJCXJlbWFpbmluZ19zZWMg PSAoKGRvdWJsZSkgc2NhbGUgKiBuYWNjb3VudHMgLSBqKSAqIGVsYXBzZWRfc2VjIC8gajsKKwkJ CWRvdWJsZQkJcmVtYWluaW5nX3NlYyA9ICgoZG91YmxlKSB0b3RhbCAtIGopICogZWxhcHNlZF9z ZWMgLyBqOwogCi0JCQlmcHJpbnRmKHN0ZGVyciwgSU5UNjRfRk9STUFUICIgb2YgIiBJTlQ2NF9G T1JNQVQgIiB0dXBsZXMgKCVkJSUpIGRvbmUgKGVsYXBzZWQgJS4yZiBzLCByZW1haW5pbmcgJS4y ZiBzKSVjIiwKLQkJCQkJaiwgKGludDY0KSBuYWNjb3VudHMgKiBzY2FsZSwKLQkJCQkJKGludCkg KCgoaW50NjQpIGogKiAxMDApIC8gKG5hY2NvdW50cyAqIChpbnQ2NCkgc2NhbGUpKSwKLQkJCQkJ ZWxhcHNlZF9zZWMsIHJlbWFpbmluZ19zZWMsIGVvbCk7CisJCQljaGFycyA9IGZwcmludGYoc3Rk ZXJyLCBJTlQ2NF9GT1JNQVQgIiBvZiAiIElOVDY0X0ZPUk1BVCAiIHR1cGxlcyAoJWQlJSkgb2Yg JXMgZG9uZSAoZWxhcHNlZCAlLjJmIHMsIHJlbWFpbmluZyAlLjJmIHMpJWMiLAorCQkJCQlqLCB0 b3RhbCwKKwkJCQkJKGludCkgKChqICogMTAwKSAvIHRvdGFsKSwKKwkJCQkJdGFibGUsIGVsYXBz ZWRfc2VjLCByZW1haW5pbmdfc2VjLCBlb2wpOwogCQl9CiAJCS8qIGxldCdzIG5vdCBjYWxsIHRo ZSB0aW1pbmcgZm9yIGVhY2ggcm93LCBidXQgb25seSBlYWNoIDEwMCByb3dzICovCiAJCWVsc2Ug aWYgKHVzZV9xdWlldCAmJiAoaiAlIDEwMCA9PSAwKSkKIAkJewogCQkJZG91YmxlCQllbGFwc2Vk X3NlYyA9IFBHX1RJTUVfR0VUX0RPVUJMRShwZ190aW1lX25vdygpIC0gc3RhcnQpOwotCQkJZG91 YmxlCQlyZW1haW5pbmdfc2VjID0gKChkb3VibGUpIHNjYWxlICogbmFjY291bnRzIC0gaikgKiBl bGFwc2VkX3NlYyAvIGo7CisJCQlkb3VibGUJCXJlbWFpbmluZ19zZWMgPSAoKGRvdWJsZSkgdG90 YWwgLSBqKSAqIGVsYXBzZWRfc2VjIC8gajsKIAogCQkJLyogaGF2ZSB3ZSByZWFjaGVkIHRoZSBu ZXh0IGludGVydmFsIChvciBlbmQpPyAqLwotCQkJaWYgKChqID09IHNjYWxlICogbmFjY291bnRz KSB8fCAoZWxhcHNlZF9zZWMgPj0gbG9nX2ludGVydmFsICogTE9HX1NURVBfU0VDT05EUykpCisJ CQlpZiAoKGogPT0gdG90YWwpIHx8IChlbGFwc2VkX3NlYyA+PSBsb2dfaW50ZXJ2YWwgKiBMT0df U1RFUF9TRUNPTkRTKSkKIAkJCXsKLQkJCQlmcHJpbnRmKHN0ZGVyciwgSU5UNjRfRk9STUFUICIg b2YgIiBJTlQ2NF9GT1JNQVQgIiB0dXBsZXMgKCVkJSUpIGRvbmUgKGVsYXBzZWQgJS4yZiBzLCBy ZW1haW5pbmcgJS4yZiBzKSVjIiwKLQkJCQkJCWosIChpbnQ2NCkgbmFjY291bnRzICogc2NhbGUs Ci0JCQkJCQkoaW50KSAoKChpbnQ2NCkgaiAqIDEwMCkgLyAobmFjY291bnRzICogKGludDY0KSBz Y2FsZSkpLCBlbGFwc2VkX3NlYywgcmVtYWluaW5nX3NlYywgZW9sKTsKKwkJCQljaGFycyA9IGZw cmludGYoc3RkZXJyLCBJTlQ2NF9GT1JNQVQgIiBvZiAiIElOVDY0X0ZPUk1BVCAiIHR1cGxlcyAo JWQlJSkgb2YgJXMgZG9uZSAoZWxhcHNlZCAlLjJmIHMsIHJlbWFpbmluZyAlLjJmIHMpJWMiLAor CQkJCQkJaiwgdG90YWwsCisJCQkJCQkoaW50KSAoKGogKiAxMDApIC8gdG90YWwpLAorCQkJCQkJ dGFibGUsIGVsYXBzZWRfc2VjLCByZW1haW5pbmdfc2VjLCBlb2wpOwogCiAJCQkJLyogc2tpcCB0 byB0aGUgbmV4dCBpbnRlcnZhbCAqLwogCQkJCWxvZ19pbnRlcnZhbCA9IChpbnQpIGNlaWwoZWxh cHNlZF9zZWMgLyBMT0dfU1RFUF9TRUNPTkRTKTsKQEAgLTQ5NzgsOCArNDk3Nyw4IEBAIGluaXRH ZW5lcmF0ZURhdGFDbGllbnRTaWRlKFBHY29ubiAqY29uKQogCQl9CiAJfQogCi0JaWYgKGVvbCAh PSAnXG4nKQotCQlmcHV0YygnXG4nLCBzdGRlcnIpOwkvKiBOZWVkIHRvIG1vdmUgdG8gbmV4dCBs aW5lICovCisJaWYgKGNoYXJzICE9IDAgJiYgZW9sICE9ICdcbicpCisJCWZwcmludGYoc3RkZXJy LCAiJSpjXHIiLCBjaGFycyAtIDEsICcgJyk7IC8qIENsZWFyIHRoZSBjdXJyZW50IGxpbmUgKi8K IAogCWlmIChQUXB1dGxpbmUoY29uLCAiXFwuXG4iKSkKIAkJcGdfZmF0YWwoInZlcnkgbGFzdCBQ UXB1dGxpbmUgZmFpbGVkIik7CkBAIC00OTg3LDYgKzQ5ODYsMzIgQEAgaW5pdEdlbmVyYXRlRGF0 YUNsaWVudFNpZGUoUEdjb25uICpjb24pCiAJCXBnX2ZhdGFsKCJQUWVuZGNvcHkgZmFpbGVkIik7 CiAKIAl0ZXJtUFFFeHBCdWZmZXIoJnNxbCk7Cit9CisKKy8qCisgKiBGaWxsIHRoZSBzdGFuZGFy ZCB0YWJsZXMgd2l0aCBzb21lIGRhdGEgZ2VuZXJhdGVkIGFuZCBzZW50IGZyb20gdGhlIGNsaWVu dAorICovCitzdGF0aWMgdm9pZAoraW5pdEdlbmVyYXRlRGF0YUNsaWVudFNpZGUoUEdjb25uICpj b24pCit7CisJZnByaW50ZihzdGRlcnIsICJnZW5lcmF0aW5nIGRhdGEgKGNsaWVudC1zaWRlKS4u LlxuIik7CisKKwkvKgorCSAqIHdlIGRvIGFsbCBvZiB0aGlzIGluIG9uZSB0cmFuc2FjdGlvbiB0 byBlbmFibGUgdGhlIGJhY2tlbmQncworCSAqIGRhdGEtbG9hZGluZyBvcHRpbWl6YXRpb25zCisJ ICovCisJZXhlY3V0ZVN0YXRlbWVudChjb24sICJiZWdpbiIpOworCisJLyogdHJ1bmNhdGUgYXdh eSBhbnkgb2xkIGRhdGEgKi8KKwlpbml0VHJ1bmNhdGVUYWJsZXMoY29uKTsKKworCS8qCisJICog ZmlsbCBicmFuY2hlcywgdGVsbGVycywgYWNjb3VudHMgaW4gdGhhdCBvcmRlciBpbiBjYXNlIGZv cmVpZ24ga2V5cworCSAqIGFscmVhZHkgZXhpc3QKKwkgKi8KKwlpbml0UG9wdWxhdGVUYWJsZShj b24sICJwZ2JlbmNoX2JyYW5jaGVzIiwgbmJyYW5jaGVzLCBpbml0QnJhbmNoKTsKKwlpbml0UG9w dWxhdGVUYWJsZShjb24sICJwZ2JlbmNoX3RlbGxlcnMiLCBudGVsbGVycywgaW5pdFRlbGxlcik7 CisJaW5pdFBvcHVsYXRlVGFibGUoY29uLCAicGdiZW5jaF9hY2NvdW50cyIsIG5hY2NvdW50cywg aW5pdEFjY291bnQpOwogCiAJZXhlY3V0ZVN0YXRlbWVudChjb24sICJjb21taXQiKTsKIH0KZGlm ZiAtLWdpdCBhL3NyYy9iaW4vcGdiZW5jaC90LzAwMV9wZ2JlbmNoX3dpdGhfc2VydmVyLnBsIGIv c3JjL2Jpbi9wZ2JlbmNoL3QvMDAxX3BnYmVuY2hfd2l0aF9zZXJ2ZXIucGwKaW5kZXggZjhjYThh OTIyZC4uZDYyY2Y4NzcwMyAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ2JlbmNoL3QvMDAxX3BnYmVu Y2hfd2l0aF9zZXJ2ZXIucGwKKysrIGIvc3JjL2Jpbi9wZ2JlbmNoL3QvMDAxX3BnYmVuY2hfd2l0 aF9zZXJ2ZXIucGwKQEAgLTY3LDYgKzY3LDI0IEBAICRub2RlLT5wZ2JlbmNoKAogCV0sCiAJJ3Bn YmVuY2ggc2NhbGUgMSBpbml0aWFsaXphdGlvbicsKTsKIAorIyBDaGVjayB0aGF0IHRoZSBwZ2Jl bmNoX2JyYW5jaGVzIGFuZCBwZ2JlbmNoX3RlbGxlcnMgZmlsbGVyIGNvbHVtbnMgYXJlIGZpbGxl ZAorIyB3aXRoIE5VTExzCitmb3JlYWNoIG15ICR0YWJsZSAoJ3BnYmVuY2hfYnJhbmNoZXMnLCAn cGdiZW5jaF90ZWxsZXJzJykgeworCW15ICgkcmV0LCAkb3V0LCAkZXJyKSA9ICRub2RlLT5wc3Fs KAorCQkncG9zdGdyZXMnLAorCQkiU0VMRUNUIENPVU5UKDEpIEZST00gJHRhYmxlOworCQkgU0VM RUNUIENPVU5UKDEpIEZST00gJHRhYmxlIFdIRVJFIGZpbGxlciBpcyBOVUxMOyIsCisJCWV4dHJh X3BhcmFtcyA9PiBbJy0tbm8tYWxpZ24nLCAnLS10dXBsZXMtb25seSddKTsKKworCWlzKCRyZXQs IDAsICJwc3FsICR0YWJsZSBjb3VudHMgc3RhdHVzIGlzIDAiKTsKKwlpcygkZXJyLCAnJywgInBz cWwgJHRhYmxlIGNvdW50cyBzdGRlcnIgaXMgZW1wdHkiKTsKKwlpZiAoJG91dCA9fiBtL14oXGQr KVxuKFxkKykkL2cpIHsKKwkJaXMoJDEsICQyLCAicHNxbCAkdGFibGUgZmlsbGVyIGNvbHVtbiBm aWxsZWQgd2l0aCBOVUxMcyIpOworCX0gZWxzZSB7CisJCWZhaWwoInBzcWwgJHRhYmxlIHN0ZG91 dCBtL14oXFxkKylcbihcXGQrKSQvZyIpOworCX0KK30KKwogIyBBZ2Fpbiwgd2l0aCBhbGwgcG9z c2libGUgb3B0aW9ucwogJG5vZGUtPnBnYmVuY2goCiAJJy0taW5pdGlhbGl6ZSAtLWluaXQtc3Rl cHM9ZHRwdmcgLS1zY2FsZT0xIC0tdW5sb2dnZWQtdGFibGVzIC0tZmlsbGZhY3Rvcj05OCAtLWZv cmVpZ24ta2V5cyAtLXF1aWV0IC0tdGFibGVzcGFjZT1yZWdyZXNzX3BnYmVuY2hfdGFwXzFfdHMg LS1pbmRleC10YWJsZXNwYWNlPXJlZ3Jlc3NfcGdiZW5jaF90YXBfMV90cyAtLXBhcnRpdGlvbnM9 MiAtLXBhcnRpdGlvbi1tZXRob2Q9aGFzaCcsCi0tIApUcmlzdGFuIFBhcnRpbgpOZW9uIChodHRw czovL25lb24udGVjaCkKCg== --055f20eedcebcec9570fc3fabe491283127e33fe7a087c5921b037cd3e1b--