Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dvgG1-0003E8-Gl for pgsql-hackers@arkaria.postgresql.org; Sat, 23 Sep 2017 08:57:54 +0000 Received: from localhost ([127.0.0.1] helo=postgresql.org) by malur.postgresql.org with smtp (Exim 4.84_2) (envelope-from ) id 1dvgG0-0002zn-TG for pgsql-hackers@arkaria.postgresql.org; Sat, 23 Sep 2017 08:57:52 +0000 Received: from makus.postgresql.org ([2001:4800:1501:1::229]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1dvgES-0000GV-Gq for pgsql-hackers@postgresql.org; Sat, 23 Sep 2017 08:56:16 +0000 Received: from mail.postgrespro.ru ([93.174.131.138]) by makus.postgresql.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dvgEO-0001y5-LG for pgsql-hackers@postgresql.org; Sat, 23 Sep 2017 08:56:15 +0000 Received: from localhost (localhost [127.0.0.1]) by mail.postgrespro.ru (Postfix) with ESMTP id 9497E21C1D0F; Sat, 23 Sep 2017 11:56:09 +0300 (MSK) X-Virus-Scanned: Debian amavisd-new at postgrespro.ru Received: from mail.postgrespro.ru (unknown [192.168.27.1]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA (256/256 bits)) (Client did not present a certificate) by mail.postgrespro.ru (Postfix) with ESMTPSA id 3185721C091B; Sat, 23 Sep 2017 11:56:07 +0300 (MSK) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=postgrespro.ru; s=mail; t=1506156969; bh=ZKnvau3vfPCJOvimhdvtwokLEaGEAuMlXP8Jiykzqdo=; h=Date:From:To:Cc:Subject:In-Reply-To:References; b=KJpT6hWJePt3WHuWEavve4njgkFcw7ldyIl1rDdJWsMA8wYpx96eeJ0hDfzZ61q6T JXZ3a1yz7lpDOUEr3tma/drPZ16pp7boDSjL70YR4AfGnfNPFVu8MuceSe9I+yy4Y4 dKweghoLUSWzxM7jOy5zBggc3RUt23LZ2eK10U0Y= MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=_f6fcc95731f763906deacaf5ceaba179" Date: Sat, 23 Sep 2017 11:56:06 +0300 From: Sokolov Yura To: Claudio Freire Cc: Alvaro Herrera , Heikki Linnakangas , PostgreSQL-Dev , Heikki Linnakangas Subject: Re: Small improvement to compactify_tuples Organization: Postgres Professional In-Reply-To: References: <20170515171331.taa44gjbc7p3aaul@alvherre.pgsql> <468f371fe05c1de09c4dc101435ef93d@postgrespro.ru> <9c4bc2ff302be669717101bc33127fd0@postgrespro.ru> Message-ID: <6873f723fd9cfed7389a2f461016e167@postgrespro.ru> X-Sender: funny.falcon@postgrespro.ru User-Agent: Roundcube Webmail/1.2.4 List-Archive: List-Help: List-ID: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: X-Mailing-List: pgsql-hackers Precedence: bulk Sender: pgsql-hackers-owner@postgresql.org --=_f6fcc95731f763906deacaf5ceaba179 Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset=UTF-8; format=flowed Hello, Claudio. Thank you for review and confirm of improvement. On 2017-09-23 01:12, Claudio Freire wrote: > On Tue, Sep 12, 2017 at 12:49 PM, Sokolov Yura > wrote: >> On 2017-07-21 13:49, Sokolov Yura wrote: >>> >>> On 2017-05-17 17:46, Sokolov Yura wrote: >>>> >>>> Alvaro Herrera писал 2017-05-15 20:13: >>>>> >>>>> As I understand, these patches are logically separate, so putting >>>>> them >>>>> together in a single file isn't such a great idea. If you don't >>>>> edit >>>>> the patches further, then you're all set because we already have >>>>> the >>>>> previously archived patches. Next commitfest starts in a few >>>>> months >>>>> yet, and if you feel the need to submit corrected versions in the >>>>> meantime, please do submit in separate files. (Some would even >>>>> argue >>>>> that each should be its own thread, but I don't think that's >>>>> necessary.) >>>> >>>> >>>> Thank you for explanation. >>>> >>>> I'm adding new version of first patch with minor improvement: >>>> - I added detection of a case when all buckets are trivial >>>> (ie 0 or 1 element). In this case no need to sort buckets at all. >>> >>> >>> I'm putting rebased version of second patch. >> >> >> Again rebased version of both patches. >> Now second patch applies cleanly independent of first patch. > > Patch 1 applies cleanly, builds, and make check runs fine. > > The code looks similar in style to surrounding code too, so I'm not > going to complain about the abundance of underscores in the macros :-p > > I can reproduce the results in the OP's benchmark, with slightly > different numbers, but an overall improvement of ~6%, which matches > the OP's relative improvement. > > Algorithmically, everything looks sound. > > > A few minor comments about patch 1: > > + if (max == 1) > + goto end; > > That goto is unnecessary, you could just as simply say > > if (max > 1) > { > ... > } Done. (I don't like indentation, though :-( ) > > > +#define pg_shell_sort_pass(elem_t, cmp, off) \ > + do { \ > + int _i, _j; \ > + elem_t _temp; \ > + for (_i = off; _i < _n; _i += off) \ > + { \ > > _n right there isn't declared in the macro, and it isn't an argument > either. It should be an argument, having stuff inherited from the > enclosing context like that is confusing. > > Same with _arr, btw. pg_shell_sort_pass is not intended to be used outside pg_shell_sort and ph_insertion_sort, so I think, stealing from their context is ok. Nonetheless, done. > > > Patch 2 LGTM. -- Sokolov Yura aka funny_falcon Postgres Professional: https://postgrespro.ru The Russian Postgres Company --=_f6fcc95731f763906deacaf5ceaba179 Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=0001-Improve-compactify_tuples.patch Content-Disposition: attachment; filename=0001-Improve-compactify_tuples.patch; size=6514 RnJvbSBlNDg2MDE0YzBhNzU0NWY3YmIyMjY0ZDBkN2FjOTZmMDU0NGVhY2Ri IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBTb2tvbG92IFl1cmEg PGZ1bm55LmZhbGNvbkBwb3N0Z3Jlc3Byby5ydT4KRGF0ZTogTW9uLCAxNSBN YXkgMjAxNyAxNDoyMzozOSArMDMwMApTdWJqZWN0OiBbUEFUQ0hdIEltcHJv dmUgY29tcGFjdGlmeV90dXBsZXMKCkl0ZW1zIHBhc3NlZCB0byBjb21wYWN0 aWZ5X3R1cGxlcyBhcmUgYWxtb3N0IHNvcnRlZC4gU28gY2FsbCB0byBnZW5l cmFsCnFzb3J0IG1ha2VzIHVubmVjZXNzYXJ5IG92ZXJoZWFkIG9uIGZ1bmN0 aW9uIGNhbGxzIChzd2FwZnVuYywgbWVkLAppdGVtb2ZmY29tcGFyZSkuCgpU aGlzIHBhdGNoIGltcGxlbWVudHMgYnVja2V0IHNvcnQ6Ci0gb25lIHBhc3Mg b2Ygc3RhYmxlIHByZWZpeCBzb3J0IG9uIGhpZ2ggOCBiaXRzIG9mIG9mZnNl dAotIGFuZCBpbnNlcnRpb24gc29ydCBmb3IgYnVja2V0cyBsYXJnZXIgdGhh biAxIGVsZW1lbnQKCkFsc28gZm9yIHNtYWxsZXIgYXJyYXlzIHNoZWxsIHNv cnQgaXMgdXNlZC4KCkluc2VydGlvbiBhbmQgU2hlbGwgc29ydCBhcmUgaW1w bGVtZW50ZWQgdXNpbmcgbWFjcm9zZXMuCgpUaGlzIGFwcHJvYWNoIGFsbG93 cyB0byBzYXZlIDMlIG9mIGNwdSBpbiBkZWdlbmVyYXRlIGNhc2UKKGhpZ2hs eSBpbnRlbnNpdmUgSE9UIHJhbmRvbSB1cGRhdGVzIG9uIHVubG9nZ2VkIHRh YmxlIHdpdGgKIHN5bmNocm9uaXplZF9jb21taXQ9b2ZmKSwgYW5kIHNwZWVk cyB1cCBXQUwgcmVwbGF5aW5nIChhcyB3ZXJlCmZvdW5kIGJ5IEhlaWtraSBM aW5uYWthbmdhcykuCgpTYW1lIGFwcHJvYWNoIHdlcmUgaW1wbGVtZW50ZWQg YnkgSGVpa2tpIExpbm5ha2FuZ2FzIHNvbWUgdGltZSBhZ28gd2l0aApzZXZl cmFsIGRpc3RpbmN0aW9ucy4KLS0tCiBzcmMvYmFja2VuZC9zdG9yYWdlL3Bh Z2UvYnVmcGFnZS5jIHwgODcgKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrLS0KIHNyYy9pbmNsdWRlL2MuaCAgICAgICAgICAgICAgICAg ICAgfCA2MyArKysrKysrKysrKysrKysrKysrKysrKysrKysKIDIgZmlsZXMg Y2hhbmdlZCwgMTQ3IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCgpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9wYWdlL2J1ZnBhZ2Uu YyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvcGFnZS9idWZwYWdlLmMKaW5kZXgg NDE2NDJlYjU5Yy4uMGY5ZjdkNWRmYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvc3RvcmFnZS9wYWdlL2J1ZnBhZ2UuYworKysgYi9zcmMvYmFja2VuZC9z dG9yYWdlL3BhZ2UvYnVmcGFnZS5jCkBAIC00MzQsNiArNDM0LDg2IEBAIGl0 ZW1vZmZjb21wYXJlKGNvbnN0IHZvaWQgKml0ZW1pZHAxLCBjb25zdCB2b2lk ICppdGVtaWRwMikKIH0KIAogLyoKKyAqIFNvcnQgYW4gYXJyYXkgb2YgaXRl bUlkU29ydCdzIG9uIGl0ZW1vZmYsIGRlc2NlbmRpbmcuCisgKgorICogSXQg dXNlcyBTaGVsbCBzb3J0LiBHaXZlbiBhcnJheSBpcyBzbWFsbCBhbmQgaXRl bW9mZmNvbXBhcmUgaXMgaW5saW5lZCwKKyAqIGl0IGlzIG11Y2ggZmFzdGVy IHRoYW4gY2FsbCB0byBxc29ydC4KKyAqLworc3RhdGljIHZvaWQKK3NvcnRf aXRlbUlkc19zbWFsbChpdGVtSWRTb3J0IGl0ZW1pZGJhc2UsIGludCBuaXRl bXMpCit7CisJcGdfc2hlbGxfc29ydChpdGVtSWRTb3J0RGF0YSwgaXRlbWlk YmFzZSwgbml0ZW1zLCBpdGVtb2ZmY29tcGFyZSk7Cit9CisKKy8qCisgKiBT b3J0IGFuIGFycmF5IG9mIGl0ZW1JZFNvcnQncyBvbiBpdGVtb2ZmLCBkZXNj ZW5kaW5nLgorICoKKyAqIEl0IHVzZXMgYnVja2V0IHNvcnQ6CisgKiAtIHNp bmdsZSBwYXNzIG9mIHN0YWJsZSBwcmVmaXggc29ydCBvbiBoaWdoIDggYml0 cworICogLSBhbmQgaW5zZXJ0aW9uIHNvcnQgb24gYnVja2V0cyBsYXJnZXIg dGhhbiAxIGVsZW1lbnQKKyAqLworc3RhdGljIHZvaWQKK3NvcnRfaXRlbUlk cyhpdGVtSWRTb3J0IGl0ZW1pZGJhc2UsIGludCBuaXRlbXMpCit7CisJaXRl bUlkU29ydERhdGEgY29weVtNYXgoTWF4SW5kZXhUdXBsZXNQZXJQYWdlLCBN YXhIZWFwVHVwbGVzUGVyUGFnZSldOworI2RlZmluZSBOU1BMSVQgMjU2Cisj ZGVmaW5lIFBSRUZESVYgKEJMQ0tTWiAvIE5TUExJVCkKKwkvKiB0d28gZXh0 cmEgZWxlbWVudHMgdG8gZW11bGF0ZSBvZmZzZXQgb24gcHJldmlvdXMgc3Rl cCAqLworCXVpbnQxNgkJY291bnRbTlNQTElUICsgMl0gPSB7MH07CisJaW50 CQkJaSwKKwkJCQltYXgsCisJCQkJdG90YWwsCisJCQkJcG9zLAorCQkJCWhp Z2hiaXRzOworCisJQXNzZXJ0KG5pdGVtcyA8PSBNYXhJbmRleFR1cGxlc1Bl clBhZ2UpOworCWZvciAoaSA9IDA7IGkgPCBuaXRlbXM7IGkrKykKKwl7CisJ CWhpZ2hiaXRzID0gaXRlbWlkYmFzZVtpXS5pdGVtb2ZmIC8gUFJFRkRJVjsK KwkJY291bnRbaGlnaGJpdHNdKys7CisJfQorCS8qIHNvcnQgaW4gZGVjcmVh c2luZyBvcmRlciAqLworCW1heCA9IHRvdGFsID0gY291bnRbTlNQTElUIC0g MV07CisJZm9yIChpID0gTlNQTElUIC0gMjsgaSA+PSAwOyBpLS0pCisJewor CQltYXggfD0gY291bnRbaV07CisJCXRvdGFsICs9IGNvdW50W2ldOworCQlj b3VudFtpXSA9IHRvdGFsOworCX0KKworCS8qCisJICogY291bnRbaysxXSBp cyBzdGFydCBvZiBidWNrZXQgaywgY291bnRba10gaXMgZW5kIG9mIGJ1Y2tl dCBrLCBhbmQKKwkgKiBjb3VudFtrXSAtIGNvdW50W2srMV0gaXMgbGVuZ3Ro IG9mIGJ1Y2tldCBrLgorCSAqLworCUFzc2VydChjb3VudFswXSA9PSBuaXRl bXMpOworCWZvciAoaSA9IDA7IGkgPCBuaXRlbXM7IGkrKykKKwl7CisJCWhp Z2hiaXRzID0gaXRlbWlkYmFzZVtpXS5pdGVtb2ZmIC8gUFJFRkRJVjsKKwkJ cG9zID0gY291bnRbaGlnaGJpdHMgKyAxXTsKKwkJY291bnRbaGlnaGJpdHMg KyAxXSsrOworCQljb3B5W3Bvc10gPSBpdGVtaWRiYXNlW2ldOworCX0KKwlB c3NlcnQoY291bnRbMV0gPT0gbml0ZW1zKTsKKworCWlmIChtYXggPiAxKQor CXsKKwkJLyoKKwkJICogY291bnRbaysyXSBpcyBzdGFydCBvZiBidWNrZXQg aywgY291bnRbaysxXSBpcyBlbmQgb2YgYnVja2V0IGssIGFuZAorCQkgKiBj b3VudFtrKzFdLWNvdW50W2srMl0gaXMgbGVuZ3RoIG9mIGJ1Y2tldCBrLgor CQkgKi8KKwkJZm9yIChpID0gTlNQTElUOyBpID4gMDsgaS0tKQorCQl7CisJ CQlwZ19pbnNlcnRpb25fc29ydChpdGVtSWRTb3J0RGF0YSwKKwkJCQkJCQkg IGNvcHkgKyBjb3VudFtpICsgMV0sCisJCQkJCQkJICBjb3VudFtpXSAtIGNv dW50W2kgKyAxXSwKKwkJCQkJCQkgIGl0ZW1vZmZjb21wYXJlKTsKKwkJfQor CX0KKworCW1lbWNweShpdGVtaWRiYXNlLCBjb3B5LCBzaXplb2YoaXRlbUlk U29ydERhdGEpICogbml0ZW1zKTsKK30KKworLyoKICAqIEFmdGVyIHJlbW92 aW5nIG9yIG1hcmtpbmcgc29tZSBsaW5lIHBvaW50ZXJzIHVudXNlZCwgbW92 ZSB0aGUgdHVwbGVzIHRvCiAgKiByZW1vdmUgdGhlIGdhcHMgY2F1c2VkIGJ5 IHRoZSByZW1vdmVkIGl0ZW1zLgogICovCkBAIC00NDQsOSArNTI0LDEwIEBA IGNvbXBhY3RpZnlfdHVwbGVzKGl0ZW1JZFNvcnQgaXRlbWlkYmFzZSwgaW50 IG5pdGVtcywgUGFnZSBwYWdlKQogCU9mZnNldAkJdXBwZXI7CiAJaW50CQkJ aTsKIAotCS8qIHNvcnQgaXRlbUlkU29ydERhdGEgYXJyYXkgaW50byBkZWNy ZWFzaW5nIGl0ZW1vZmYgb3JkZXIgKi8KLQlxc29ydCgoY2hhciAqKSBpdGVt aWRiYXNlLCBuaXRlbXMsIHNpemVvZihpdGVtSWRTb3J0RGF0YSksCi0JCSAg aXRlbW9mZmNvbXBhcmUpOworCWlmIChuaXRlbXMgPiA0OCkKKwkJc29ydF9p dGVtSWRzKGl0ZW1pZGJhc2UsIG5pdGVtcyk7CisJZWxzZQorCQlzb3J0X2l0 ZW1JZHNfc21hbGwoaXRlbWlkYmFzZSwgbml0ZW1zKTsKIAogCXVwcGVyID0g cGhkci0+cGRfc3BlY2lhbDsKIAlmb3IgKGkgPSAwOyBpIDwgbml0ZW1zOyBp KyspCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jLmggYi9zcmMvaW5jbHVk ZS9jLmgKaW5kZXggYjZhOTY5Nzg3YS4uNWYzN2FkNDUwMiAxMDA2NDQKLS0t IGEvc3JjL2luY2x1ZGUvYy5oCisrKyBiL3NyYy9pbmNsdWRlL2MuaApAQCAt OTUxLDYgKzk1MSw2OSBAQCB0eXBlZGVmIE5hbWVEYXRhICpOYW1lOwogI2Rl ZmluZSB1bmxpa2VseSh4KSAoKHgpICE9IDApCiAjZW5kaWYKIAorLyogcGdf c2hlbGxfc29ydF9wYXNzIGlzIG5vdCBpbnRlbmRlZCB0byBiZSB1c2VkIG91 dHNpZGUgb2YgZm9sbG93aW5nIG1hY3JvcyAqLworI2RlZmluZSBwZ19zaGVs bF9zb3J0X3Bhc3MoZWxlbV90LCBjbXAsIG9mZiwgX24sIF9hcnIpIFwKKwlk byB7IFwKKwkJaW50IF9pLCBfajsgXAorCQllbGVtX3QgX3RlbXA7IFwKKwkJ Zm9yIChfaSA9IG9mZjsgX2kgPCBfbjsgX2kgKz0gb2ZmKSBcCisJCXsgXAor CQkJaWYgKGNtcChfYXJyK19pLCBfYXJyK19pLW9mZikgPj0gMCkgXAorCQkJ CWNvbnRpbnVlOyBcCisJCQlfdGVtcCA9IF9hcnJbX2ldOyBcCisJCQlfaiA9 IF9pOyBcCisJCQlkbyB7IFwKKwkJCQlfYXJyW19qXSA9IF9hcnJbX2ogLSBv ZmZdOyBcCisJCQkJX2ogLT0gb2ZmOyBcCisJCQl9IHdoaWxlIChfaiA+PSBv ZmYgJiYgY21wKF9hcnIrX2otb2ZmLCAmX3RlbXApID4gMCk7IFwKKwkJCV9h cnJbX2pdID0gX3RlbXA7IFwKKwkJfSBcCisJfSB3aGlsZSAoMCkKKworLyoK KyAqIHBnX3NoZWxsX3NvcnQgLSBzb3J0IGZvciBzbWFsbCBhcnJheXMgd2l0 aCBpbmxpbmFibGUgY29tcGFyYXRvci4KKyAqIFNpbmNlIGl0IGlzIGltcGxl bWVudGVkIGFzIGEgbWFjcm9zIGl0IGNvdWxkIGJlIG9wdGltaXplZCB0b2dl dGhlciB3aXRoCisgKiBjb21wYXJpc29uIGZ1bmN0aW9uLgorICogR2FwcyBh cmUgImdhcChpKSA9IHNtYWxsZXN0IHByaW1lIG51bWJlciBiZWxvdyBlXmki LiBUaGV5IGFyZSBjbG9zZSB0bworICogSW5jZXJwaSAmIFNlZHdpY2sgZ2Fw cywgYnV0IGxvb2tzIHRvIGJlIGJldHRlciBpbiBhdmVyYWdlLgorICogSXQg aXMgYmVzdCB1c2VkIHdpdGggYXJyYXkgc21hbGxlciB0aGFuIDIwMCBlbGVt ZW50cywgYW5kIGNvdWxkIGJlIHNhZmVseQorICogdXNlZCB1cHRvIDEwMDAg ZWxlbWVudHMuIEJ1dCBpdCBkZWdyYWRlcyBmYXN0IGFmdGVyIHRoYXQsIGFu ZCBpdCBpcworICogYmV0dGVyIHRvIHVzZSBxc29ydC4KKyAqCisgKiBBcmd1 bWVudHM6CisgKgkgZWxlbV90IC0gdHlwZSBvZiBhcnJheSBlbGVtZW50IChm b3IgZGVjbGFyaW5nIHRlbXBvcmFyeSB2YXJpYWJsZXMpCisgKgkgYXJyYXkJ LSBwb2ludGVyIHRvIGVsZW1lbnRzIHRvIGJlIHNvcnRlZAorICoJIG5pdGVt cyAtIGFtb3VudCBvZiBlbGVtZW50cyB0byBiZSBzb3J0ZWQKKyAqCSBjbXAJ LSBjb21wYXJpc29uIGZ1bmN0aW9uIHRoYXQgYWNjZXB0cyBhZGRyZXNzIG9m IGVsZW1lbnRzCisgKgkJCSAgKGl0IGlzIGNvbXBhdGlibGUgd2l0aCBxc29y dCBjb21wYXJpc29uIGZ1bmN0aW9uKS4KKyAqCSBOb3RlOiBgY21wYCBhcmd1 bWVudCBldmFsdWF0ZXMgbWFueSB0aW1lcyBhbmQgaGFzIG5vIHBhcmVudGhl c2VzIGFyb3VuZAorICoJIGFwcGxpY2F0aW9uIChzbyBpdCBjYW4gYmUgYSBt YWNybyB3aXRoIGFyZ3VtZW50cykuCisgKgkgT3RoZXIgYXJndW1lbnRzIGV2 YWx1YXRlcyBvbmNlLgorICovCisjZGVmaW5lIHBnX3NoZWxsX3NvcnQoZWxl bV90LCBhcnJheSwgbml0ZW1zLCBjbXApIFwKKwlkbyB7IFwKKwkJaW50IF9u ID0gKG5pdGVtcyk7IFwKKwkJZWxlbV90KiBfYXJyID0gKGFycmF5KTsgXAor CQlzdGF0aWMgY29uc3QgaW50IF9vZmZzZXRzW10gPSB7NDAxLCAxMzksIDUz LCAxOSwgNywgM307IFwKKwkJaW50IF9ub2ZmLCBfb2ZmOyBcCisJCWZvciAo X25vZmYgPSAwOyBfbm9mZiA8IGxlbmd0aG9mKF9vZmZzZXRzKTsgX25vZmYr KykgeyBcCisJCQlfb2ZmID0gX29mZnNldHNbX25vZmZdOyBcCisJCQlwZ19z aGVsbF9zb3J0X3Bhc3MoZWxlbV90LCBjbXAsIF9vZmYsIF9uLCBfYXJyKTsg XAorCQl9IFwKKwkJcGdfc2hlbGxfc29ydF9wYXNzKGVsZW1fdCwgY21wLCAx LCBfbiwgX2Fycik7IFwKKwl9IHdoaWxlKDApCisKKy8qCisgKiBwZ19pbnNl cnRpb25fc29ydCAtIGp1c3QgaW5zZXJ0aW9uIHNvcnQgZm9yIHNtYWxsZXN0 IGFycmF5LCBvciBpZgorICogYXJyYXkgd2FzIGFsbW9zdCBzb3J0ZWQgYWxy ZWFkeS4gVXNlcyBzYW1lIGFyZ3VtZW50cyBhcyBwZ19zaGVsbF9zb3J0Lgor ICovCisjZGVmaW5lIHBnX2luc2VydGlvbl9zb3J0KGVsZW1fdCwgYXJyYXks IG5pdGVtcywgY21wKSBcCisJZG8geyBcCisJCWludCBfbiA9IChuaXRlbXMp OyBcCisJCWVsZW1fdCogX2FyciA9IChhcnJheSk7IFwKKwkJcGdfc2hlbGxf c29ydF9wYXNzKGVsZW1fdCwgY21wLCAxLCBfbiwgX2Fycik7IFwKKwl9IHdo aWxlICgwKQorCiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqCQkJCVNl Y3Rpb24gODoJcmFuZG9tIHN0dWZmCi0tIAoyLjExLjAKCg== --=_f6fcc95731f763906deacaf5ceaba179 Content-Type: text/plain Content-Disposition: inline Content-Transfer-Encoding: 8bit MIME-Version: 1.0 -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers --=_f6fcc95731f763906deacaf5ceaba179--