Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1gm2lj-0007JV-ML for pgsql-hackers@arkaria.postgresql.org; Tue, 22 Jan 2019 20:35:36 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.89) (envelope-from ) id 1gm2li-00069u-8d for pgsql-hackers@arkaria.postgresql.org; Tue, 22 Jan 2019 20:35:34 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1gm2li-00069k-1U for pgsql-hackers@lists.postgresql.org; Tue, 22 Jan 2019 20:35:34 +0000 Received: from courriel.mines-paristech.fr ([77.158.173.149] helo=antispam-1.ensmp.fr) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1gm2le-0007d5-7f for pgsql-hackers@lists.postgresql.org; Tue, 22 Jan 2019 20:35:33 +0000 Received: from smtp-5.mines-paristech.fr (smtp.mines-paristech.fr [77.158.173.146]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by antispam-1.ensmp.fr (antispam.mines-paristech.fr) with ESMTPS id 3482C55EC3; Tue, 22 Jan 2019 21:35:29 +0100 (CET) Received: from lancre (115.237.219.88.rev.sfr.net [88.219.237.115]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp-5.mines-paristech.fr (Postfix) with ESMTPSA id D48EA2033F; Tue, 22 Jan 2019 21:35:28 +0100 (CET) Date: Tue, 22 Jan 2019 21:35:27 +0100 (CET) From: Fabien COELHO X-X-Sender: fabien@lancre To: Tom Lane cc: PostgreSQL Developers Subject: Re: PSA: we lack TAP test coverage on NetBSD and OpenBSD In-Reply-To: <9718.1548175497@sss.pgh.pa.us> Message-ID: References: <9427.1547701450@sss.pgh.pa.us> <21538.1547770868@sss.pgh.pa.us> <4615.1547792324@sss.pgh.pa.us> <29225.1547834182@sss.pgh.pa.us> <7879.1548015981@sss.pgh.pa.us> <9718.1548175497@sss.pgh.pa.us> User-Agent: Alpine 2.21 (DEB 202 2017-01-01) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="8323329-1271396271-1548189328=:16643" X-CLAMAV-SCAN: ok X-VRSPAM-SCORE: 0 X-VRSPAM-STATE: legit X-VRSPAM-CAUSE: gggruggvucftvghtrhhoucdtuddrgedtledrheekgddufeejucetufdoteggodetrfcurfhrohhfihhlvgemucggtfgfnhhsuhgsshgtrhhisggvnecuuegrihhlohhuthemuceftddtnecunecujfgurhepfffhvffujgfkfhgfgggtsehmtderredtredvnecuhfhrohhmpefhrggsihgvnhcuvefqgffnjffquceotghovghlhhhosegtrhhirdgvnhhsmhhprdhfrheqnecukfhppeekkedrvdduledrvdefjedrudduheenucfrrghrrghmpehmohguvgepshhmthhpohhuth X-VRSPAM-EXTCAUSE: mhhouggvpehsmhhtphhouhht List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. --8323329-1271396271-1548189328=:16643 Content-Type: text/plain; format=flowed; charset=US-ASCII Hello Tom, >>>> Here is a POC which defines an internal interface for a PRNG, and use it >>>> within pgbench, with several possible implementations which default to >>>> rand48. > >>> I seriously dislike this patch. pgbench's random support is quite >>> overengineered already IMO, and this proposes to add a whole batch of >>> new code and new APIs to fix a very small bug. > >> My intention is rather to discuss postgres' PRNG, in passing. Full success >> on this point:-) > > Our immediate problem is to fix a portability failure, which we need to > back-patch into at least one released branch, ergo conservatism is > warranted. Sure, the patch I sent is definitely not for backpatching, it is for discussion. > I had in mind something more like the attached. Yep. I'm not too happy that it mixes API levels, and about the int/double/int path. Attached an updated version which relies on pg_jrand48 instead. Also, as the pseudo-random state is fully controlled, seeded test results are deterministic so the expected value can be fully checked. I did a few sanity tests which were all ok. I think that this version is appropriate for backpatching. I also think that it would be appropriate to consider having a better PRNG to replace rand48 in a future release. -- Fabien. --8323329-1271396271-1548189328=:16643 Content-Type: text/x-diff; name=pgbench-prng-3.patch Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: Content-Disposition: attachment; filename=pgbench-prng-3.patch ZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdiZW5jaC9wZ2JlbmNoLmMgYi9zcmMv YmluL3BnYmVuY2gvcGdiZW5jaC5jDQppbmRleCBiNWM3NWNlMWM2Li4yN2Fh YzQ3OWUzIDEwMDY0NA0KLS0tIGEvc3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2gu Yw0KKysrIGIvc3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2guYw0KQEAgLTE4NSw3 ICsxODUsNyBAQCBpbnQ2NAkJbGF0ZW5jeV9saW1pdCA9IDA7DQogY2hhcgkg ICAqdGFibGVzcGFjZSA9IE5VTEw7DQogY2hhcgkgICAqaW5kZXhfdGFibGVz cGFjZSA9IE5VTEw7DQogDQotLyogcmFuZG9tIHNlZWQgdXNlZCB3aGVuIGNh bGxpbmcgc3JhbmRvbSgpICovDQorLyogcmFuZG9tIHNlZWQgdXNlZCB0byBp bml0aWFsaXplIGJhc2VfcmFuZG9tX3NlcXVlbmNlICovDQogaW50NjQJCXJh bmRvbV9zZWVkID0gLTE7DQogDQogLyoNCkBAIC0yODcsNiArMjg3LDkgQEAg dHlwZWRlZiBzdHJ1Y3QgUmFuZG9tU3RhdGUNCiAJdW5zaWduZWQgc2hvcnQg eHNlZWRbM107DQogfSBSYW5kb21TdGF0ZTsNCiANCisvKiBWYXJpb3VzIHJh bmRvbSBzZXF1ZW5jZXMgYXJlIGluaXRpYWxpemVkIGZyb20gdGhpcyBvbmUu ICovDQorc3RhdGljIFJhbmRvbVN0YXRlIGJhc2VfcmFuZG9tX3NlcXVlbmNl Ow0KKw0KIC8qDQogICogQ29ubmVjdGlvbiBzdGF0ZSBtYWNoaW5lIHN0YXRl cy4NCiAgKi8NCkBAIC01OTgsNiArNjAxLDggQEAgc3RhdGljIGNvbnN0IEJ1 aWx0aW5TY3JpcHQgYnVpbHRpbl9zY3JpcHRbXSA9DQogDQogDQogLyogRnVu Y3Rpb24gcHJvdG90eXBlcyAqLw0KK3N0YXRpYyB2b2lkIGluaXRSYW5kb21T dGF0ZShSYW5kb21TdGF0ZSAqcmFuZG9tX3N0YXRlKTsNCitzdGF0aWMgaW50 NjQgZ2V0cmFuZChSYW5kb21TdGF0ZSAqcmFuZG9tX3N0YXRlLCBpbnQ2NCBt aW4sIGludDY0IG1heCk7DQogc3RhdGljIHZvaWQgc2V0TnVsbFZhbHVlKFBn QmVuY2hWYWx1ZSAqcHYpOw0KIHN0YXRpYyB2b2lkIHNldEJvb2xWYWx1ZShQ Z0JlbmNoVmFsdWUgKnB2LCBib29sIGJ2YWwpOw0KIHN0YXRpYyB2b2lkIHNl dEludFZhbHVlKFBnQmVuY2hWYWx1ZSAqcHYsIGludDY0IGl2YWwpOw0KQEAg LTgzMywxNiArODM4LDI4IEBAIHN0cnRvZG91YmxlKGNvbnN0IGNoYXIgKnN0 ciwgYm9vbCBlcnJvck9LLCBkb3VibGUgKmR2KQ0KIA0KIC8qDQogICogSW5p dGlhbGl6ZSBhIHJhbmRvbSBzdGF0ZSBzdHJ1Y3QuDQorICoNCisgKiBXZSBk ZXJpdmUgdGhlIHNlZWQgZnJvbSBiYXNlX3JhbmRvbV9zZXF1ZW5jZSwgd2hp Y2ggbXVzdCBiZSBzZXQgdXAgYWxyZWFkeS4NCiAgKi8NCiBzdGF0aWMgdm9p ZA0KIGluaXRSYW5kb21TdGF0ZShSYW5kb21TdGF0ZSAqcmFuZG9tX3N0YXRl KQ0KIHsNCi0JcmFuZG9tX3N0YXRlLT54c2VlZFswXSA9IHJhbmRvbSgpOw0K LQlyYW5kb21fc3RhdGUtPnhzZWVkWzFdID0gcmFuZG9tKCk7DQotCXJhbmRv bV9zdGF0ZS0+eHNlZWRbMl0gPSByYW5kb20oKTsNCisJcmFuZG9tX3N0YXRl LT54c2VlZFswXSA9ICh1bnNpZ25lZCBzaG9ydCkNCisJCXBnX2pyYW5kNDgo YmFzZV9yYW5kb21fc2VxdWVuY2UueHNlZWQpICYgMHhGRkZGOw0KKwlyYW5k b21fc3RhdGUtPnhzZWVkWzFdID0gKHVuc2lnbmVkIHNob3J0KQ0KKwkJcGdf anJhbmQ0OChiYXNlX3JhbmRvbV9zZXF1ZW5jZS54c2VlZCkgJiAweEZGRkY7 DQorCXJhbmRvbV9zdGF0ZS0+eHNlZWRbMl0gPSAodW5zaWduZWQgc2hvcnQp DQorCQlwZ19qcmFuZDQ4KGJhc2VfcmFuZG9tX3NlcXVlbmNlLnhzZWVkKSAm IDB4RkZGRjsNCiB9DQogDQotLyogcmFuZG9tIG51bWJlciBnZW5lcmF0b3I6 IHVuaWZvcm0gZGlzdHJpYnV0aW9uIGZyb20gbWluIHRvIG1heCBpbmNsdXNp dmUgKi8NCisvKg0KKyAqIFJhbmRvbSBudW1iZXIgZ2VuZXJhdG9yOiB1bmlm b3JtIGRpc3RyaWJ1dGlvbiBmcm9tIG1pbiB0byBtYXggaW5jbHVzaXZlLg0K KyAqDQorICogQWx0aG91Z2ggdGhlIGxpbWl0cyBhcmUgZXhwcmVzc2VkIGFz IGludDY0LCB5b3UgY2FuJ3QgZ2VuZXJhdGUgdGhlIGZ1bGwNCisgKiBpbnQ2 NCByYW5nZSBpbiBvbmUgY2FsbCwgYmVjYXVzZSB0aGUgZGlmZmVyZW5jZSBv ZiB0aGUgbGltaXRzIG11c3RuJ3QNCisgKiBvdmVyZmxvdyBpbnQ2NC4gIElu IHByYWN0aWNlIGl0J3MgdW53aXNlIHRvIGFzayBmb3IgbW9yZSB0aGFuIGFu IGludDMyDQorICogcmFuZ2UsIGJlY2F1c2Ugb2YgdGhlIGxpbWl0ZWQgcHJl Y2lzaW9uIG9mIHBnX2VyYW5kNDgoKS4NCisgKi8NCiBzdGF0aWMgaW50NjQN CiBnZXRyYW5kKFJhbmRvbVN0YXRlICpyYW5kb21fc3RhdGUsIGludDY0IG1p biwgaW50NjQgbWF4KQ0KIHsNCkBAIC01MTI2LDEyICs1MTQzLDE0IEBAIHBy aW50UmVzdWx0cyhUU3RhdGUgKnRocmVhZHMsIFN0YXRzRGF0YSAqdG90YWws IGluc3RyX3RpbWUgdG90YWxfdGltZSwNCiAJfQ0KIH0NCiANCi0vKiBjYWxs IHNyYW5kb20gYmFzZWQgb24gc29tZSBzZWVkLiBOVUxMIHRyaWdnZXJzIHRo ZSBkZWZhdWx0IGJlaGF2aW9yLiAqLw0KKy8qDQorICogU2V0IHVwIGEgcmFu ZG9tIHNlZWQgYWNjb3JkaW5nIHRvIHNlZWQgcGFyYW1ldGVyIChOVUxMIG1l YW5zIGRlZmF1bHQpLA0KKyAqIGFuZCBpbml0aWFsaXplIGJhc2VfcmFuZG9t X3NlcXVlbmNlIGZvciB1c2UgaW4gaW5pdGlhbGl6aW5nIG90aGVyIHNlcXVl bmNlcy4NCisgKi8NCiBzdGF0aWMgYm9vbA0KIHNldF9yYW5kb21fc2VlZChj b25zdCBjaGFyICpzZWVkKQ0KIHsNCi0JLyogc3JhbmRvbSBleHBlY3RzIGFu IHVuc2lnbmVkIGludCAqLw0KLQl1bnNpZ25lZCBpbnQgaXNlZWQ7DQorCXVp bnQ2NAkJaXNlZWQ7DQogDQogCWlmIChzZWVkID09IE5VTEwgfHwgc3RyY21w KHNlZWQsICJ0aW1lIikgPT0gMCkNCiAJew0KQEAgLTUxMzksNyArNTE1OCw3 IEBAIHNldF9yYW5kb21fc2VlZChjb25zdCBjaGFyICpzZWVkKQ0KIAkJaW5z dHJfdGltZQlub3c7DQogDQogCQlJTlNUUl9USU1FX1NFVF9DVVJSRU5UKG5v dyk7DQotCQlpc2VlZCA9ICh1bnNpZ25lZCBpbnQpIElOU1RSX1RJTUVfR0VU X01JQ1JPU0VDKG5vdyk7DQorCQlpc2VlZCA9ICh1aW50NjQpIElOU1RSX1RJ TUVfR0VUX01JQ1JPU0VDKG5vdyk7DQogCX0NCiAJZWxzZSBpZiAoc3RyY21w KHNlZWQsICJyYW5kIikgPT0gMCkNCiAJew0KQEAgLTUxNTUsNyArNTE3NCw3 IEBAIHNldF9yYW5kb21fc2VlZChjb25zdCBjaGFyICpzZWVkKQ0KIAkJLyog cGFyc2Ugc2VlZCB1bnNpZ25lZCBpbnQgdmFsdWUgKi8NCiAJCWNoYXIJCWdh cmJhZ2U7DQogDQotCQlpZiAoc3NjYW5mKHNlZWQsICIldSVjIiwgJmlzZWVk LCAmZ2FyYmFnZSkgIT0gMSkNCisJCWlmIChzc2NhbmYoc2VlZCwgVUlOVDY0 X0ZPUk1BVCAiJWMiLCAmaXNlZWQsICZnYXJiYWdlKSAhPSAxKQ0KIAkJew0K IAkJCWZwcmludGYoc3RkZXJyLA0KIAkJCQkJInVucmVjb2duaXplZCByYW5k b20gc2VlZCBvcHRpb24gXCIlc1wiOiBleHBlY3RpbmcgYW4gdW5zaWduZWQg aW50ZWdlciwgXCJ0aW1lXCIgb3IgXCJyYW5kXCJcbiIsDQpAQCAtNTE2NSwx MCArNTE4NCwxNCBAQCBzZXRfcmFuZG9tX3NlZWQoY29uc3QgY2hhciAqc2Vl ZCkNCiAJfQ0KIA0KIAlpZiAoc2VlZCAhPSBOVUxMKQ0KLQkJZnByaW50Zihz dGRlcnIsICJzZXR0aW5nIHJhbmRvbSBzZWVkIHRvICV1XG4iLCBpc2VlZCk7 DQotCXNyYW5kb20oaXNlZWQpOw0KLQkvKiBubyBwcmVjaXNpb24gbG9zczog MzIgYml0IHVuc2lnbmVkIGludCBjYXN0IHRvIDY0IGJpdCBpbnQgKi8NCisJ CWZwcmludGYoc3RkZXJyLCAic2V0dGluZyByYW5kb20gc2VlZCB0byAiIFVJ TlQ2NF9GT1JNQVQgIlxuIiwgaXNlZWQpOw0KIAlyYW5kb21fc2VlZCA9IGlz ZWVkOw0KKw0KKwkvKiBGaWxsIGJhc2VfcmFuZG9tX3NlcXVlbmNlIHdpdGgg bG93LW9yZGVyIGJpdHMgb2Ygc2VlZCAqLw0KKwliYXNlX3JhbmRvbV9zZXF1 ZW5jZS54c2VlZFswXSA9IGlzZWVkICYgMHhGRkZGOw0KKwliYXNlX3JhbmRv bV9zZXF1ZW5jZS54c2VlZFsxXSA9IChpc2VlZCA+PiAxNikgJiAweEZGRkY7 DQorCWJhc2VfcmFuZG9tX3NlcXVlbmNlLnhzZWVkWzJdID0gKGlzZWVkID4+ IDMyKSAmIDB4RkZGRjsNCisNCiAJcmV0dXJuIHRydWU7DQogfQ0KIA0KQEAg LTU4NjIsMTAgKzU4ODUsOSBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJn dikNCiAJLyogc2V0IGRlZmF1bHQgc2VlZCBmb3IgaGFzaCBmdW5jdGlvbnMg Ki8NCiAJaWYgKGxvb2t1cFZhcmlhYmxlKCZzdGF0ZVswXSwgImRlZmF1bHRf c2VlZCIpID09IE5VTEwpDQogCXsNCi0JCXVpbnQ2NAkJc2VlZCA9ICgodWlu dDY0KSAocmFuZG9tKCkgJiAweEZGRkYpIDw8IDQ4KSB8DQotCQkoKHVpbnQ2 NCkgKHJhbmRvbSgpICYgMHhGRkZGKSA8PCAzMikgfA0KLQkJKCh1aW50NjQp IChyYW5kb20oKSAmIDB4RkZGRikgPDwgMTYpIHwNCi0JCSh1aW50NjQpIChy YW5kb20oKSAmIDB4RkZGRik7DQorCQl1aW50NjQJCXNlZWQgPQ0KKwkJCSgo dWludDY0KSBwZ19qcmFuZDQ4KGJhc2VfcmFuZG9tX3NlcXVlbmNlLnhzZWVk KSAmIDB4RkZGRkZGRkYpIHwNCisJCQkoKCh1aW50NjQpIHBnX2pyYW5kNDgo YmFzZV9yYW5kb21fc2VxdWVuY2UueHNlZWQpICYgMHhGRkZGRkZGRikgPDwg MzIpOw0KIA0KIAkJZm9yIChpID0gMDsgaSA8IG5jbGllbnRzOyBpKyspDQog CQkJaWYgKCFwdXRWYXJpYWJsZUludCgmc3RhdGVbaV0sICJzdGFydHVwIiwg ImRlZmF1bHRfc2VlZCIsIChpbnQ2NCkgc2VlZCkpDQpkaWZmIC0tZ2l0IGEv c3JjL2Jpbi9wZ2JlbmNoL3QvMDAxX3BnYmVuY2hfd2l0aF9zZXJ2ZXIucGwg Yi9zcmMvYmluL3BnYmVuY2gvdC8wMDFfcGdiZW5jaF93aXRoX3NlcnZlci5w bA0KaW5kZXggYzg3NzQ4MDg2YS4uNGFhYWM3NmMwMyAxMDA2NDQNCi0tLSBh L3NyYy9iaW4vcGdiZW5jaC90LzAwMV9wZ2JlbmNoX3dpdGhfc2VydmVyLnBs DQorKysgYi9zcmMvYmluL3BnYmVuY2gvdC8wMDFfcGdiZW5jaF93aXRoX3Nl cnZlci5wbA0KQEAgLTI1OSwxMSArMjU5LDExIEBAIHBnYmVuY2goDQogCVsN CiAJCXFye3NldHRpbmcgcmFuZG9tIHNlZWQgdG8gNTQzMlxifSwNCiANCi0J CSMgQWZ0ZXIgZXhwbGljaXQgc2VlZGluZywgdGhlIGZvdXIgKiByYW5kb20g Y2hlY2tzICgxLTMsMjApIHNob3VsZCBiZQ0KLQkJIyBkZXRlcm1pbmlzdGlj LCBidXQgbm90IG5lY2Vzc2FyaWx5IHBvcnRhYmxlLg0KLQkJcXJ7Y29tbWFu ZD0xLjogaW50IDFcZFxifSwgICAgICAgICMgdW5pZm9ybSByYW5kb206IDEy IG9uIGxpbnV4DQotCQlxcntjb21tYW5kPTIuOiBpbnQgMVxkXGRcYn0sICAg ICAgIyBleHBvbmVudGlhbCByYW5kb206IDEwNiBvbiBsaW51eA0KLQkJcXJ7 Y29tbWFuZD0zLjogaW50IDFcZFxkXGRcYn0sICAgICMgZ2F1c3NpYW4gcmFu ZG9tOiAxNDYyIG9uIGxpbnV4DQorCQkjIEFmdGVyIGV4cGxpY2l0IHNlZWRp bmcsIHRoZSBmb3VyIHJhbmRvbSBjaGVja3MgKDEtMywyMCkgYXJlDQorCQkj IGRldGVybWluaXN0aWMNCisJCXFye2NvbW1hbmQ9MS46IGludCAxM1xifSwg ICAgICAjIHVuaWZvcm0gcmFuZG9tDQorCQlxcntjb21tYW5kPTIuOiBpbnQg MTE2XGJ9LCAgICAgIyBleHBvbmVudGlhbCByYW5kb20NCisJCXFye2NvbW1h bmQ9My46IGludCAxNDk4XGJ9LCAgICAjIGdhdXNzaWFuIHJhbmRvbQ0KIAkJ cXJ7Y29tbWFuZD00LjogaW50IDRcYn0sDQogCQlxcntjb21tYW5kPTUuOiBp bnQgNVxifSwNCiAJCXFye2NvbW1hbmQ9Ni46IGludCA2XGJ9LA0KQEAgLTI3 Niw3ICsyNzYsNyBAQCBwZ2JlbmNoKA0KIAkJcXJ7Y29tbWFuZD0xNS46IGRv dWJsZSAxNVxifSwNCiAJCXFye2NvbW1hbmQ9MTYuOiBkb3VibGUgMTZcYn0s DQogCQlxcntjb21tYW5kPTE3LjogZG91YmxlIDE3XGJ9LA0KLQkJcXJ7Y29t bWFuZD0yMC46IGludCBcZFxifSwgICAgIyB6aXBmaWFuIHJhbmRvbTogMSBv biBsaW51eA0KKwkJcXJ7Y29tbWFuZD0yMC46IGludCAxXGJ9LCAgICAgICMg emlwZmlhbiByYW5kb20NCiAJCXFye2NvbW1hbmQ9MjEuOiBkb3VibGUgLTI3 XGJ9LA0KIAkJcXJ7Y29tbWFuZD0yMi46IGRvdWJsZSAxMDI0XGJ9LA0KIAkJ cXJ7Y29tbWFuZD0yMy46IGRvdWJsZSAxXGJ9LA0K --8323329-1271396271-1548189328=:16643--