Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dB0JV-00065u-QD for pgsql-hackers@arkaria.postgresql.org; Wed, 17 May 2017 14:52:34 +0000 Received: from localhost ([127.0.0.1] helo=postgresql.org) by malur.postgresql.org with smtp (Exim 4.84_2) (envelope-from ) id 1dB0JV-0003Qp-Co for pgsql-hackers@arkaria.postgresql.org; Wed, 17 May 2017 14:52:33 +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 1dB0DZ-0007zx-Vg; Wed, 17 May 2017 14:46:26 +0000 Received: from mail.postgrespro.ru ([93.174.131.138]) by makus.postgresql.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dB0DW-0003H8-Aa; Wed, 17 May 2017 14:46:24 +0000 Received: from localhost (localhost [127.0.0.1]) by mail.postgrespro.ru (Postfix) with ESMTP id DB29121C174B; Wed, 17 May 2017 17:46:19 +0300 (MSK) X-Virus-Scanned: Debian amavisd-new at postgrespro.ru MIME-Version: 1.0 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=postgrespro.ru; s=mail; t=1495032379; bh=5ZfZhmsKD9jcfKk78zJmVsH3NofNOlRWibe8Afgca6w=; h=Date:From:To:Cc:Subject:In-Reply-To:References; b=T+ijn2qpUZVEPzBoD3Sw9NNMlwkuaCfCYtEZrf12xL7I0QUjquNY1R7DpmrU8mV2p ni6K4vZ3tlJKVlx+NifLc70B7jXxu1iQUNA8XIGLf/WGihZ6KLanGXBa/dA6mMNxO9 YN7Lh5rVFso/H4P1gYSxBzYxAHQBNP2QHp3XNhz0= Content-Type: multipart/mixed; boundary="=_3074294515d0ba04b4c90626b997c16c" Date: Wed, 17 May 2017 17:46:19 +0300 From: Sokolov Yura To: Alvaro Herrera Cc: Heikki Linnakangas , pgsql-hackers@postgresql.org, Heikki Linnakangas , pgsql-hackers-owner@postgresql.org Subject: Re: Small improvement to compactify_tuples Organization: Postgres Professional In-Reply-To: <20170515171331.taa44gjbc7p3aaul@alvherre.pgsql> References: <20170515171331.taa44gjbc7p3aaul@alvherre.pgsql> Message-ID: <468f371fe05c1de09c4dc101435ef93d@postgrespro.ru> X-Sender: funny.falcon@postgrespro.ru User-Agent: Roundcube Webmail/1.2.4 X-Pg-Spam-Score: -2.0 (--) 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 --=_3074294515d0ba04b4c90626b997c16c Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset=UTF-8; format=flowed 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. -- Sokolov Yura aka funny.falcon Postgres Professional: https://postgrespro.ru The Russian Postgres Company --=_3074294515d0ba04b4c90626b997c16c 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=6315 RnJvbSA0ZmFmYzg3MDY5MGI3ZGU1YWVhYjdlNTgzNzgwNTQ2ZTgxNzBmNmQw IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBTb2tvbG92IFl1cmEg PGZ1bm55LmZhbGNvbkBwb3N0Z3Jlc3Byby5ydT4KRGF0ZTogTW9uLCAxNSBN YXkgMjAxNyAxNDoyMzozOSArMDMwMApTdWJqZWN0OiBbUEFUQ0ggMS8yXSBJ bXByb3ZlIGNvbXBhY3RpZnlfdHVwbGVzCgpJdGVtcyBwYXNzZWQgdG8gY29t cGFjdGlmeV90dXBsZXMgYXJlIGFsbW9zdCBzb3J0ZWQuIFNvIGNhbGwgdG8g Z2VuZXJhbApxc29ydCBtYWtlcyB1bm5lY2Vzc2FyeSBvdmVyaGVhZCBvbiBm dW5jdGlvbiBjYWxscyAoc3dhcGZ1bmMsIG1lZCwKaXRlbW9mZmNvbXBhcmUp LgoKVGhpcyBwYXRjaCBpbXBsZW1lbnRzIGJ1Y2tldCBzb3J0OgotIG9uZSBw YXNzIG9mIHN0YWJsZSBwcmVmaXggc29ydCBvbiBoaWdoIDggYml0cyBvZiBv ZmZzZXQKLSBhbmQgaW5zZXJ0aW9uIHNvcnQgZm9yIGJ1Y2tldHMgbGFyZ2Vy IHRoYW4gMSBlbGVtZW50CgpBbHNvIGZvciBzbWFsbGVyIGFycmF5cyBzaGVs bCBzb3J0IGlzIHVzZWQuCgpJbnNlcnRpb24gYW5kIFNoZWxsIHNvcnQgYXJl IGltcGxlbWVudGVkIHVzaW5nIG1hY3Jvc2VzLgoKVGhpcyBhcHByb2FjaCBh bGxvd3MgdG8gc2F2ZSAzJSBvZiBjcHUgaW4gZGVnZW5lcmF0ZSBjYXNlCiho aWdobHkgaW50ZW5zaXZlIEhPVCByYW5kb20gdXBkYXRlcyBvbiB1bmxvZ2dl ZCB0YWJsZSB3aXRoCiBzeW5jaHJvbml6ZWRfY29tbWl0PW9mZiksIGFuZCBz cGVlZHMgdXAgV0FMIHJlcGxheWluZyAoYXMgd2VyZQpmb3VuZCBieSBIZWlr a2kgTGlubmFrYW5nYXMpLgoKU2FtZSBhcHByb2FjaCB3ZXJlIGltcGxlbWVu dGVkIGJ5IEhlaWtraSBMaW5uYWthbmdhcyBzb21lIHRpbWUgYWdvIHdpdGgK c2V2ZXJhbCBkaXN0aW5jdGlvbnMuCi0tLQogc3JjL2JhY2tlbmQvc3RvcmFn ZS9wYWdlL2J1ZnBhZ2UuYyB8IDg2ICsrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKy0tCiBzcmMvaW5jbHVkZS9jLmggICAgICAgICAgICAg ICAgICAgIHwgNTkgKysrKysrKysrKysrKysrKysrKysrKysrKysKIDIgZmls ZXMgY2hhbmdlZCwgMTQyIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0p CgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9wYWdlL2J1ZnBh Z2UuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvcGFnZS9idWZwYWdlLmMKaW5k ZXggZmRmMDQ1YTQ1Yi4uYzFiYjExYzM1NCAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvc3RvcmFnZS9wYWdlL2J1ZnBhZ2UuYworKysgYi9zcmMvYmFja2Vu ZC9zdG9yYWdlL3BhZ2UvYnVmcGFnZS5jCkBAIC00MzQsNiArNDM0LDg1IEBA IGl0ZW1vZmZjb21wYXJlKGNvbnN0IHZvaWQgKml0ZW1pZHAxLCBjb25zdCB2 b2lkICppdGVtaWRwMikKIH0KIAogLyoKKyAqIFNvcnQgYW4gYXJyYXkgb2Yg aXRlbUlkU29ydCdzIG9uIGl0ZW1vZmYsIGRlc2NlbmRpbmcuCisgKgorICog SXQgdXNlcyBTaGVsbCBzb3J0LiBHaXZlbiBhcnJheSBpcyBzbWFsbCBhbmQg aXRlbW9mZmNvbXBhcmUgaXMgaW5saW5lZCwKKyAqIGl0IGlzIG11Y2ggZmFz dGVyIHRoYW4gY2FsbCB0byBxc29ydC4KKyAqLworc3RhdGljIHZvaWQKK3Nv cnRfaXRlbUlkc19zbWFsbChpdGVtSWRTb3J0IGl0ZW1pZGJhc2UsIGludCBu aXRlbXMpCit7CisJcGdfc2hlbGxfc29ydChpdGVtSWRTb3J0RGF0YSwgaXRl bWlkYmFzZSwgbml0ZW1zLCBpdGVtb2ZmY29tcGFyZSk7Cit9CisKKy8qCisg KiBTb3J0IGFuIGFycmF5IG9mIGl0ZW1JZFNvcnQncyBvbiBpdGVtb2ZmLCBk ZXNjZW5kaW5nLgorICoKKyAqIEl0IHVzZXMgYnVja2V0IHNvcnQ6CisgKiAt IHNpbmdsZSBwYXNzIG9mIHN0YWJsZSBwcmVmaXggc29ydCBvbiBoaWdoIDgg Yml0cworICogLSBhbmQgaW5zZXJ0aW9uIHNvcnQgb24gYnVja2V0cyBsYXJn ZXIgdGhhbiAxIGVsZW1lbnQKKyAqLworc3RhdGljIHZvaWQKK3NvcnRfaXRl bUlkcyhpdGVtSWRTb3J0IGl0ZW1pZGJhc2UsIGludCBuaXRlbXMpCit7CisJ aXRlbUlkU29ydERhdGEgY29weVtNYXgoTWF4SW5kZXhUdXBsZXNQZXJQYWdl LCBNYXhIZWFwVHVwbGVzUGVyUGFnZSldOworI2RlZmluZSBOU1BMSVQgMjU2 CisjZGVmaW5lIFBSRUZESVYgKEJMQ0tTWiAvIE5TUExJVCkKKwkvKiB0d28g ZXh0cmEgZWxlbWVudHMgdG8gZW11bGF0ZSBvZmZzZXQgb24gcHJldmlvdXMg c3RlcCAqLworCXVpbnQxNgkJY291bnRbTlNQTElUICsgMl0gPSB7MH07CisJ aW50CQkJaSwKKwkJCQltYXgsCisJCQkJdG90YWwsCisJCQkJcG9zLAorCQkJ CWhpZ2hiaXRzOworCisJQXNzZXJ0KG5pdGVtcyA8PSBNYXhJbmRleFR1cGxl c1BlclBhZ2UpOworCWZvciAoaSA9IDA7IGkgPCBuaXRlbXM7IGkrKykKKwl7 CisJCWhpZ2hiaXRzID0gaXRlbWlkYmFzZVtpXS5pdGVtb2ZmIC8gUFJFRkRJ VjsKKwkJY291bnRbaGlnaGJpdHNdKys7CisJfQorCS8qIHNvcnQgaW4gZGVj cmVhc2luZyBvcmRlciAqLworCW1heCA9IHRvdGFsID0gY291bnRbTlNQTElU IC0gMV07CisJZm9yIChpID0gTlNQTElUIC0gMjsgaSA+PSAwOyBpLS0pCisJ eworCQltYXggfD0gY291bnRbaV07CisJCXRvdGFsICs9IGNvdW50W2ldOwor CQljb3VudFtpXSA9IHRvdGFsOworCX0KKworCS8qCisJICogY291bnRbaysx XSBpcyBzdGFydCBvZiBidWNrZXQgaywgY291bnRba10gaXMgZW5kIG9mIGJ1 Y2tldCBrLCBhbmQKKwkgKiBjb3VudFtrXSAtIGNvdW50W2srMV0gaXMgbGVu Z3RoIG9mIGJ1Y2tldCBrLgorCSAqLworCUFzc2VydChjb3VudFswXSA9PSBu aXRlbXMpOworCWZvciAoaSA9IDA7IGkgPCBuaXRlbXM7IGkrKykKKwl7CisJ CWhpZ2hiaXRzID0gaXRlbWlkYmFzZVtpXS5pdGVtb2ZmIC8gUFJFRkRJVjsK KwkJcG9zID0gY291bnRbaGlnaGJpdHMgKyAxXTsKKwkJY291bnRbaGlnaGJp dHMgKyAxXSsrOworCQljb3B5W3Bvc10gPSBpdGVtaWRiYXNlW2ldOworCX0K KwlBc3NlcnQoY291bnRbMV0gPT0gbml0ZW1zKTsKKworCWlmIChtYXggPT0g MSkKKwkJZ290byBlbmQ7CisJLyoKKwkgKiBjb3VudFtrKzJdIGlzIHN0YXJ0 IG9mIGJ1Y2tldCBrLCBjb3VudFtrKzFdIGlzIGVuZCBvZiBidWNrZXQgaywg YW5kCisJICogY291bnRbaysxXS1jb3VudFtrKzJdIGlzIGxlbmd0aCBvZiBi dWNrZXQgay4KKwkgKi8KKwlmb3IgKGkgPSBOU1BMSVQ7IGkgPiAwOyBpLS0p CisJeworCQlwZ19pbnNlcnRpb25fc29ydChpdGVtSWRTb3J0RGF0YSwKKwkJ CQkJCSAgY29weSArIGNvdW50W2kgKyAxXSwKKwkJCQkJCSAgY291bnRbaV0g LSBjb3VudFtpICsgMV0sCisJCQkJCQkgIGl0ZW1vZmZjb21wYXJlKTsKKwl9 CitlbmQ6CisJbWVtY3B5KGl0ZW1pZGJhc2UsIGNvcHksIHNpemVvZihpdGVt SWRTb3J0RGF0YSkgKiBuaXRlbXMpOworfQorCisvKgogICogQWZ0ZXIgcmVt b3Zpbmcgb3IgbWFya2luZyBzb21lIGxpbmUgcG9pbnRlcnMgdW51c2VkLCBt b3ZlIHRoZSB0dXBsZXMgdG8KICAqIHJlbW92ZSB0aGUgZ2FwcyBjYXVzZWQg YnkgdGhlIHJlbW92ZWQgaXRlbXMuCiAgKi8KQEAgLTQ0NCw5ICs1MjMsMTAg QEAgY29tcGFjdGlmeV90dXBsZXMoaXRlbUlkU29ydCBpdGVtaWRiYXNlLCBp bnQgbml0ZW1zLCBQYWdlIHBhZ2UpCiAJT2Zmc2V0CQl1cHBlcjsKIAlpbnQJ CQlpOwogCi0JLyogc29ydCBpdGVtSWRTb3J0RGF0YSBhcnJheSBpbnRvIGRl Y3JlYXNpbmcgaXRlbW9mZiBvcmRlciAqLwotCXFzb3J0KChjaGFyICopIGl0 ZW1pZGJhc2UsIG5pdGVtcywgc2l6ZW9mKGl0ZW1JZFNvcnREYXRhKSwKLQkJ ICBpdGVtb2ZmY29tcGFyZSk7CisJaWYgKG5pdGVtcyA+IDQ4KQorCQlzb3J0 X2l0ZW1JZHMoaXRlbWlkYmFzZSwgbml0ZW1zKTsKKwllbHNlCisJCXNvcnRf aXRlbUlkc19zbWFsbChpdGVtaWRiYXNlLCBuaXRlbXMpOwogCiAJdXBwZXIg PSBwaGRyLT5wZF9zcGVjaWFsOwogCWZvciAoaSA9IDA7IGkgPCBuaXRlbXM7 IGkrKykKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2MuaCBiL3NyYy9pbmNs dWRlL2MuaAppbmRleCBmYmEwN2M2NTFmLi44Mzc5NDBkNWNmIDEwMDY0NAot LS0gYS9zcmMvaW5jbHVkZS9jLmgKKysrIGIvc3JjL2luY2x1ZGUvYy5oCkBA IC05NjIsNiArOTYyLDY1IEBAIHR5cGVkZWYgTmFtZURhdGEgKk5hbWU7CiAj ZGVmaW5lIHVubGlrZWx5KHgpICgoeCkgIT0gMCkKICNlbmRpZgogCisvKgor ICogcGdfc2hlbGxfc29ydCAtIHNvcnQgZm9yIHNtYWxsIGFycmF5cyB3aXRo IGlubGluYWJsZSBjb21wYXJhdG9yLgorICogU2luY2UgaXQgaXMgaW1wbGVt ZW50ZWQgYXMgYSBtYWNyb3MgaXQgY291bGQgYmUgb3B0aW1pemVkIHRvZ2V0 aGVyIHdpdGgKKyAqIGNvbXBhcmlzb24gZnVuY3Rpb24uCisgKiBHYXBzIGFy ZSAiZ2FwKGkpID0gc21hbGxlc3QgcHJpbWUgbnVtYmVyIGJlbG93IGVeaSIu IFRoZXkgYXJlIGNsb3NlIHRvCisgKiBJbmNlcnBpICYgU2Vkd2ljayBnYXBz LCBidXQgbG9va3MgdG8gYmUgYmV0dGVyIGluIGF2ZXJhZ2UuCisgKiBJdCBp cyBiZXN0IHVzZWQgd2l0aCBhcnJheSBzbWFsbGVyIHRoYW4gMjAwIGVsZW1l bnRzLCBhbmQgY291bGQgYmUgc2FmZWx5CisgKiB1c2VkIHVwdG8gMTAwMCBl bGVtZW50cy4gQnV0IGl0IGRlZ3JhZGVzIGZhc3QgYWZ0ZXIgdGhhdCwgYW5k IGl0IGlzCisgKiBiZXR0ZXIgdG8gdXNlIHFzb3J0LgorICoKKyAqIEFyZ3Vt ZW50czoKKyAqCSBlbGVtX3QgLSB0eXBlIG9mIGFycmF5IGVsZW1lbnQgKGZv ciBkZWNsYXJpbmcgdGVtcG9yYXJ5IHZhcmlhYmxlcykKKyAqCSBhcnJheQkt IHBvaW50ZXIgdG8gZWxlbWVudHMgdG8gYmUgc29ydGVkCisgKgkgbml0ZW1z IC0gYW1vdW50IG9mIGVsZW1lbnRzIHRvIGJlIHNvcnRlZAorICoJIGNtcAkt IGNvbXBhcmlzb24gZnVuY3Rpb24gdGhhdCBhY2NlcHRzIGFkZHJlc3Mgb2Yg ZWxlbWVudHMKKyAqCQkJICAoaXQgaXMgY29tcGF0aWJsZSB3aXRoIHFzb3J0 IGNvbXBhcmlzb24gZnVuY3Rpb24pLgorICoJIE5vdGU6IGBjbXBgIGFyZ3Vt ZW50IGV2YWx1YXRlcyBtYW55IHRpbWVzLgorICoJIE90aGVyIGFyZ3VtZW50 cyBldmFsdWF0ZXMgb25jZQorICovCisjZGVmaW5lIHBnX3NoZWxsX3NvcnRf cGFzcyhlbGVtX3QsIGNtcCwgb2ZmKSBcCisJZG8geyBcCisJCWludCBfaSwg X2o7IFwKKwkJZWxlbV90IF90ZW1wOyBcCisJCWZvciAoX2kgPSBvZmY7IF9p IDwgX247IF9pICs9IG9mZikgXAorCQl7IFwKKwkJCWlmICgoY21wKShfYXJy K19pLCBfYXJyK19pLW9mZikgPj0gMCkgXAorCQkJCWNvbnRpbnVlOyBcCisJ CQlfdGVtcCA9IF9hcnJbX2ldOyBcCisJCQlfaiA9IF9pOyBcCisJCQlkbyB7 IFwKKwkJCQlfYXJyW19qXSA9IF9hcnJbX2ogLSBvZmZdOyBcCisJCQkJX2og LT0gb2ZmOyBcCisJCQl9IHdoaWxlIChfaiA+PSBvZmYgJiYgKGNtcCkoX2Fy citfai1vZmYsICZfdGVtcCkgPiAwKTsgXAorCQkJX2Fycltfal0gPSBfdGVt cDsgXAorCQl9IFwKKwl9IHdoaWxlICgwKQorI2RlZmluZSBwZ19zaGVsbF9z b3J0KGVsZW1fdCwgYXJyYXksIG5pdGVtcywgY21wKSBcCisJZG8geyBcCisJ CWludCBfbiA9IChuaXRlbXMpOyBcCisJCWVsZW1fdCogX2FyciA9IChhcnJh eSk7IFwKKwkJc3RhdGljIGNvbnN0IGludCBfb2Zmc2V0c1tdID0gezQwMSwg MTM5LCA1MywgMTksIDcsIDN9OyBcCisJCWludCBfbm9mZiwgX29mZjsgXAor CQlmb3IgKF9ub2ZmID0gMDsgX25vZmYgPCBsZW5ndGhvZihfb2Zmc2V0cyk7 IF9ub2ZmKyspIHsgXAorCQkJX29mZiA9IF9vZmZzZXRzW19ub2ZmXTsgXAor CQkJcGdfc2hlbGxfc29ydF9wYXNzKGVsZW1fdCwgKGNtcCksIF9vZmYpOyBc CisJCX0gXAorCQlwZ19zaGVsbF9zb3J0X3Bhc3MoZWxlbV90LCAoY21wKSwg MSk7IFwKKwl9IHdoaWxlKDApCisvKgorICogcGdfaW5zZXJ0aW9uX3NvcnQg LSBqdXN0IGluc2VydGlvbiBzb3J0IGZvciBzbWFsbGVzdCBhcnJheSwgb3Ig aWYKKyAqIGFycmF5IHdhcyBhbG1vc3Qgc29ydGVkIGFscmVhZHkuIFVzZXMg c2FtZSBhcmd1bWVudHMgYXMgcGdfc2hlbGxfc29ydC4KKyAqLworI2RlZmlu ZSBwZ19pbnNlcnRpb25fc29ydChlbGVtX3QsIGFycmF5LCBuaXRlbXMsIGNt cCkgXAorCWRvIHsgXAorCQlpbnQgX24gPSAobml0ZW1zKTsgXAorCQllbGVt X3QqIF9hcnIgPSAoYXJyYXkpOyBcCisJCXBnX3NoZWxsX3NvcnRfcGFzcyhl bGVtX3QsIChjbXApLCAxKTsgXAorCX0gd2hpbGUgKDApCisKIAogLyogLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQogICoJCQkJU2VjdGlvbiA4OglyYW5kb20gc3R1 ZmYKLS0gCjIuMTEuMAoK --=_3074294515d0ba04b4c90626b997c16c 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 --=_3074294515d0ba04b4c90626b997c16c--