Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dAI8t-0007Gz-Pk for pgsql-hackers@arkaria.postgresql.org; Mon, 15 May 2017 15:42:40 +0000 Received: from localhost ([127.0.0.1] helo=postgresql.org) by malur.postgresql.org with smtp (Exim 4.84_2) (envelope-from ) id 1dAI8t-0000j6-Cf for pgsql-hackers@arkaria.postgresql.org; Mon, 15 May 2017 15:42:39 +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 1dAI6e-0005Db-1n; Mon, 15 May 2017 15:40:20 +0000 Received: from mail.postgrespro.ru ([93.174.131.138]) by makus.postgresql.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dAI6Y-0008FS-EJ; Mon, 15 May 2017 15:40:18 +0000 Received: from localhost (localhost [127.0.0.1]) by mail.postgrespro.ru (Postfix) with ESMTP id 73F4521C08AD; Mon, 15 May 2017 18:40:13 +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=1494862813; bh=vjgmMNNX2QwmTp3wCakezvW1lRIOfaabP/LOrEHHj7E=; h=Date:From:To:Cc:Subject:In-Reply-To:References; b=iGfAmDGzq8R34rSFNWbdHc8IV5809T42sU3Pgk0nNVtztxbTjP4cBWZ45wot6tv4y soRVvg1CQpvqVRFUcnEUlF2p8Jg7+F4QNwj5PptXE0S0ca3NrqS9OLmV0t+rE9sUkI EJqXfaDjTqkWFZNmkSRqyqS3258216vVFleMmiII= Content-Type: multipart/mixed; boundary="=_afd659d8511ba253049bc1269bb4b731" Date: Mon, 15 May 2017 18:40:12 +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: <216eb4d012f184b3281cecbe4fef9094@postgrespro.ru> References: <20170515150412.dkwoubknmofmvszs@alvherre.pgsql> <216eb4d012f184b3281cecbe4fef9094@postgrespro.ru> Message-ID: <5f5d52f69d810bd439026cba9fe611f8@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 --=_afd659d8511ba253049bc1269bb4b731 Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset=UTF-8; format=flowed Sokolov Yura писал 2017-05-15 18:23: > Alvaro Herrera писал 2017-05-15 18:04: >> Please add these two patches to the upcoming commitfest, >> https://commitfest.postgresql.org/ > > Thank you for suggestion. > > I've created https://commitfest.postgresql.org/14/1138/ > As I could understand, I should attach both patches to single email > to be show correctly in commitfest topic. So I do it with this email. > > Please, correct me, if I do something wrong. > > With regards. Looks like it should be single file. -- Sokolov Yura aka funny.falcon Postgres Professional: https://postgrespro.ru The Russian Postgres Company --=_afd659d8511ba253049bc1269bb4b731 Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=improve-repairing-fragmentation.patch Content-Disposition: attachment; filename=improve-repairing-fragmentation.patch; size=9571 RnJvbSAyMzEwMjMyOThhYWQzMDI0ZTMxYjQ4N2M4ZjVkMmE2ZTY4YWQxZGE5 IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBTb2tvbG92IFl1cmEg PGZ1bm55LmZhbGNvbkBwb3N0Z3Jlc3Byby5ydT4KRGF0ZTogTW9uLCAxNSBN YXkgMjAxNyAxNDoyMzozOSArMDMwMApTdWJqZWN0OiBbUEFUQ0ggMS8yXSBJ bXByb3ZlIGNvbXBhY3RpZnlfdHVwbGVzCgpJdGVtcyBwYXNzZWQgdG8gY29t cGFjdGlmeV90dXBsZXMgYXJlIGFsbW9zdCBzb3J0ZWQuIFNvIGNhbGwgdG8g Z2VuZXJhbApxc29ydCBtYWtlcyB1bm5lY2Vzc2FyeSBvdmVyaGVhZCBvbiBm dW5jdGlvbiBjYWxscyAoc3dhcGZ1bmMsIG1lZCwKaXRlbW9mZmNvbXBhcmUp LgoKVGhpcyBwYXRjaCBpbXBsZW1lbnRzIGJ1Y2tldCBzb3J0OgotIG9uZSBw YXNzIG9mIHN0YWJsZSBwcmVmaXggc29ydCBvbiBoaWdoIDggYml0cyBvZiBv ZmZzZXQKLSBhbmQgaW5zZXJ0aW9uIHNvcnQgZm9yIGJ1Y2tldHMgbGFyZ2Vy IHRoYW4gMSBlbGVtZW50CgpBbHNvIGZvciBzbWFsbGVyIGFycmF5cyBzaGVs bCBzb3J0IGlzIHVzZWQuCgpJbnNlcnRpb24gYW5kIFNoZWxsIHNvcnQgYXJl IGltcGxlbWVudGVkIHVzaW5nIG1hY3Jvc2VzLgoKVGhpcyBhcHByb2FjaCBh bGxvd3MgdG8gc2F2ZSAzJSBvZiBjcHUgaW4gZGVnZW5lcmF0ZSBjYXNlCiho aWdobHkgaW50ZW5zaXZlIEhPVCByYW5kb20gdXBkYXRlcyBvbiB1bmxvZ2dl ZCB0YWJsZSB3aXRoCiBzeW5jaHJvbml6ZWRfY29tbWl0PW9mZiksIGFuZCBz cGVlZHMgdXAgV0FMIHJlcGxheWluZyAoYXMgd2VyZQpmb3VuZCBieSBIZWlr a2kgTGlubmFrYW5nYXMpLgoKU2FtZSBhcHByb2FjaCB3ZXJlIGltcGxlbWVu dGVkIGJ5IEhlaWtraSBMaW5uYWthbmdhcyBzb21lIHRpbWUgYWdvIHdpdGgK c2V2ZXJhbCBkaXN0aW5jdGlvbnMuCi0tLQogc3JjL2JhY2tlbmQvc3RvcmFn ZS9wYWdlL2J1ZnBhZ2UuYyB8IDc4ICsrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKy0tCiBzcmMvaW5jbHVkZS9jLmggICAgICAgICAgICAg ICAgICAgIHwgNTkgKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogMiBm aWxlcyBjaGFuZ2VkLCAxMzQgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMo LSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL3BhZ2UvYnVm cGFnZS5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9wYWdlL2J1ZnBhZ2UuYwpp bmRleCBmZGYwNDVhNDViLi5jNTYzMGU4MDhiIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9zdG9yYWdlL3BhZ2UvYnVmcGFnZS5jCisrKyBiL3NyYy9iYWNr ZW5kL3N0b3JhZ2UvcGFnZS9idWZwYWdlLmMKQEAgLTQzNCw2ICs0MzQsNzcg QEAgaXRlbW9mZmNvbXBhcmUoY29uc3Qgdm9pZCAqaXRlbWlkcDEsIGNvbnN0 IHZvaWQgKml0ZW1pZHAyKQogfQogCiAvKgorICogU29ydCBhbiBhcnJheSBv ZiBpdGVtSWRTb3J0J3Mgb24gaXRlbW9mZiwgZGVzY2VuZGluZy4KKyAqCisg KiBJdCB1c2VzIFNoZWxsIHNvcnQuIEdpdmVuIGFycmF5IGlzIHNtYWxsIGFu ZCBpdGVtb2ZmY29tcGFyZSBpcyBpbmxpbmVkLAorICogaXQgaXMgbXVjaCBm YXN0ZXIgdGhhbiBjYWxsIHRvIHFzb3J0LgorICovCitzdGF0aWMgdm9pZAor c29ydF9pdGVtSWRzX3NtYWxsKGl0ZW1JZFNvcnQgaXRlbWlkYmFzZSwgaW50 IG5pdGVtcykKK3sKKwlwZ19zaGVsbF9zb3J0KGl0ZW1JZFNvcnREYXRhLCBp dGVtaWRiYXNlLCBuaXRlbXMsIGl0ZW1vZmZjb21wYXJlKTsKK30KKworLyoK KyAqIFNvcnQgYW4gYXJyYXkgb2YgaXRlbUlkU29ydCdzIG9uIGl0ZW1vZmYs IGRlc2NlbmRpbmcuCisgKgorICogSXQgdXNlcyBidWNrZXQgc29ydDoKKyAq IC0gc2luZ2xlIHBhc3Mgb2Ygc3RhYmxlIHByZWZpeCBzb3J0IG9uIGhpZ2gg OCBiaXRzCisgKiAtIGFuZCBpbnNlcnRpb24gc29ydCBvbiBidWNrZXRzIGxh cmdlciB0aGFuIDEgZWxlbWVudAorICovCitzdGF0aWMgdm9pZAorc29ydF9p dGVtSWRzKGl0ZW1JZFNvcnQgaXRlbWlkYmFzZSwgaW50IG5pdGVtcykKK3sK KwlpdGVtSWRTb3J0RGF0YSBjb3B5W01heChNYXhJbmRleFR1cGxlc1BlclBh Z2UsIE1heEhlYXBUdXBsZXNQZXJQYWdlKV07CisjZGVmaW5lIE5TUExJVCAy NTYKKyNkZWZpbmUgUFJFRkRJViAoQkxDS1NaIC8gTlNQTElUKQorCS8qIHR3 byBleHRyYSBlbGVtZW50cyB0byBlbXVsYXRlIG9mZnNldCBvbiBwcmV2aW91 cyBzdGVwICovCisJdWludDE2CQljb3VudFtOU1BMSVQgKyAyXSA9IHswfTsK KwlpbnQJCQlpLAorCQkJCXBvcywKKwkJCQloaWdoYml0czsKKworCUFzc2Vy dChuaXRlbXMgPD0gTWF4SW5kZXhUdXBsZXNQZXJQYWdlKTsKKwlmb3IgKGkg PSAwOyBpIDwgbml0ZW1zOyBpKyspCisJeworCQloaWdoYml0cyA9IGl0ZW1p ZGJhc2VbaV0uaXRlbW9mZiAvIFBSRUZESVY7CisJCWNvdW50W2hpZ2hiaXRz XSsrOworCX0KKwkvKiBzb3J0IGluIGRlY3JlYXNpbmcgb3JkZXIgKi8KKwlm b3IgKGkgPSBOU1BMSVQgLSAxOyBpICE9IDA7IGktLSkKKwkJY291bnRbaSAt IDFdICs9IGNvdW50W2ldOworCisJLyoKKwkgKiBjb3VudFtrKzFdIGlzIHN0 YXJ0IG9mIGJ1Y2tldCBrLCBjb3VudFtrXSBpcyBlbmQgb2YgYnVja2V0IGss IGFuZAorCSAqIGNvdW50W2tdIC0gY291bnRbaysxXSBpcyBsZW5ndGggb2Yg YnVja2V0IGsuCisJICovCisJQXNzZXJ0KGNvdW50WzBdID09IG5pdGVtcyk7 CisJZm9yIChpID0gMDsgaSA8IG5pdGVtczsgaSsrKQorCXsKKwkJaGlnaGJp dHMgPSBpdGVtaWRiYXNlW2ldLml0ZW1vZmYgLyBQUkVGRElWOworCQlwb3Mg PSBjb3VudFtoaWdoYml0cyArIDFdOworCQljb3VudFtoaWdoYml0cyArIDFd Kys7CisJCWNvcHlbcG9zXSA9IGl0ZW1pZGJhc2VbaV07CisJfQorCUFzc2Vy dChjb3VudFsxXSA9PSBuaXRlbXMpOworCisJLyoKKwkgKiBjb3VudFtrKzJd IGlzIHN0YXJ0IG9mIGJ1Y2tldCBrLCBjb3VudFtrKzFdIGlzIGVuZCBvZiBi dWNrZXQgaywgYW5kCisJICogY291bnRbaysxXS1jb3VudFtrKzJdIGlzIGxl bmd0aCBvZiBidWNrZXQgay4KKwkgKi8KKwlmb3IgKGkgPSBOU1BMSVQ7IGkg PiAwOyBpLS0pCisJeworCQlpZiAobGlrZWx5KGNvdW50W2ldIC0gY291bnRb aSArIDFdIDw9IDEpKQorCQkJY29udGludWU7CisJCXBnX2luc2VydGlvbl9z b3J0KGl0ZW1JZFNvcnREYXRhLAorCQkJCQkJICBjb3B5ICsgY291bnRbaSAr IDFdLAorCQkJCQkJICBjb3VudFtpXSAtIGNvdW50W2kgKyAxXSwKKwkJCQkJ CSAgaXRlbW9mZmNvbXBhcmUpOworCX0KKwltZW1jcHkoaXRlbWlkYmFzZSwg Y29weSwgc2l6ZW9mKGl0ZW1JZFNvcnREYXRhKSAqIG5pdGVtcyk7Cit9CisK Ky8qCiAgKiBBZnRlciByZW1vdmluZyBvciBtYXJraW5nIHNvbWUgbGluZSBw b2ludGVycyB1bnVzZWQsIG1vdmUgdGhlIHR1cGxlcyB0bwogICogcmVtb3Zl IHRoZSBnYXBzIGNhdXNlZCBieSB0aGUgcmVtb3ZlZCBpdGVtcy4KICAqLwpA QCAtNDQ0LDkgKzUxNSwxMCBAQCBjb21wYWN0aWZ5X3R1cGxlcyhpdGVtSWRT b3J0IGl0ZW1pZGJhc2UsIGludCBuaXRlbXMsIFBhZ2UgcGFnZSkKIAlPZmZz ZXQJCXVwcGVyOwogCWludAkJCWk7CiAKLQkvKiBzb3J0IGl0ZW1JZFNvcnRE YXRhIGFycmF5IGludG8gZGVjcmVhc2luZyBpdGVtb2ZmIG9yZGVyICovCi0J cXNvcnQoKGNoYXIgKikgaXRlbWlkYmFzZSwgbml0ZW1zLCBzaXplb2YoaXRl bUlkU29ydERhdGEpLAotCQkgIGl0ZW1vZmZjb21wYXJlKTsKKwlpZiAobml0 ZW1zID4gNDgpCisJCXNvcnRfaXRlbUlkcyhpdGVtaWRiYXNlLCBuaXRlbXMp OworCWVsc2UKKwkJc29ydF9pdGVtSWRzX3NtYWxsKGl0ZW1pZGJhc2UsIG5p dGVtcyk7CiAKIAl1cHBlciA9IHBoZHItPnBkX3NwZWNpYWw7CiAJZm9yIChp ID0gMDsgaSA8IG5pdGVtczsgaSsrKQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1 ZGUvYy5oIGIvc3JjL2luY2x1ZGUvYy5oCmluZGV4IGZiYTA3YzY1MWYuLjgz Nzk0MGQ1Y2YgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2MuaAorKysgYi9z cmMvaW5jbHVkZS9jLmgKQEAgLTk2Miw2ICs5NjIsNjUgQEAgdHlwZWRlZiBO YW1lRGF0YSAqTmFtZTsKICNkZWZpbmUgdW5saWtlbHkoeCkgKCh4KSAhPSAw KQogI2VuZGlmCiAKKy8qCisgKiBwZ19zaGVsbF9zb3J0IC0gc29ydCBmb3Ig c21hbGwgYXJyYXlzIHdpdGggaW5saW5hYmxlIGNvbXBhcmF0b3IuCisgKiBT aW5jZSBpdCBpcyBpbXBsZW1lbnRlZCBhcyBhIG1hY3JvcyBpdCBjb3VsZCBi ZSBvcHRpbWl6ZWQgdG9nZXRoZXIgd2l0aAorICogY29tcGFyaXNvbiBmdW5j dGlvbi4KKyAqIEdhcHMgYXJlICJnYXAoaSkgPSBzbWFsbGVzdCBwcmltZSBu dW1iZXIgYmVsb3cgZV5pIi4gVGhleSBhcmUgY2xvc2UgdG8KKyAqIEluY2Vy cGkgJiBTZWR3aWNrIGdhcHMsIGJ1dCBsb29rcyB0byBiZSBiZXR0ZXIgaW4g YXZlcmFnZS4KKyAqIEl0IGlzIGJlc3QgdXNlZCB3aXRoIGFycmF5IHNtYWxs ZXIgdGhhbiAyMDAgZWxlbWVudHMsIGFuZCBjb3VsZCBiZSBzYWZlbHkKKyAq IHVzZWQgdXB0byAxMDAwIGVsZW1lbnRzLiBCdXQgaXQgZGVncmFkZXMgZmFz dCBhZnRlciB0aGF0LCBhbmQgaXQgaXMKKyAqIGJldHRlciB0byB1c2UgcXNv cnQuCisgKgorICogQXJndW1lbnRzOgorICoJIGVsZW1fdCAtIHR5cGUgb2Yg YXJyYXkgZWxlbWVudCAoZm9yIGRlY2xhcmluZyB0ZW1wb3JhcnkgdmFyaWFi bGVzKQorICoJIGFycmF5CS0gcG9pbnRlciB0byBlbGVtZW50cyB0byBiZSBz b3J0ZWQKKyAqCSBuaXRlbXMgLSBhbW91bnQgb2YgZWxlbWVudHMgdG8gYmUg c29ydGVkCisgKgkgY21wCS0gY29tcGFyaXNvbiBmdW5jdGlvbiB0aGF0IGFj Y2VwdHMgYWRkcmVzcyBvZiBlbGVtZW50cworICoJCQkgIChpdCBpcyBjb21w YXRpYmxlIHdpdGggcXNvcnQgY29tcGFyaXNvbiBmdW5jdGlvbikuCisgKgkg Tm90ZTogYGNtcGAgYXJndW1lbnQgZXZhbHVhdGVzIG1hbnkgdGltZXMuCisg KgkgT3RoZXIgYXJndW1lbnRzIGV2YWx1YXRlcyBvbmNlCisgKi8KKyNkZWZp bmUgcGdfc2hlbGxfc29ydF9wYXNzKGVsZW1fdCwgY21wLCBvZmYpIFwKKwlk byB7IFwKKwkJaW50IF9pLCBfajsgXAorCQllbGVtX3QgX3RlbXA7IFwKKwkJ Zm9yIChfaSA9IG9mZjsgX2kgPCBfbjsgX2kgKz0gb2ZmKSBcCisJCXsgXAor CQkJaWYgKChjbXApKF9hcnIrX2ksIF9hcnIrX2ktb2ZmKSA+PSAwKSBcCisJ CQkJY29udGludWU7IFwKKwkJCV90ZW1wID0gX2FycltfaV07IFwKKwkJCV9q ID0gX2k7IFwKKwkJCWRvIHsgXAorCQkJCV9hcnJbX2pdID0gX2FycltfaiAt IG9mZl07IFwKKwkJCQlfaiAtPSBvZmY7IFwKKwkJCX0gd2hpbGUgKF9qID49 IG9mZiAmJiAoY21wKShfYXJyK19qLW9mZiwgJl90ZW1wKSA+IDApOyBcCisJ CQlfYXJyW19qXSA9IF90ZW1wOyBcCisJCX0gXAorCX0gd2hpbGUgKDApCisj ZGVmaW5lIHBnX3NoZWxsX3NvcnQoZWxlbV90LCBhcnJheSwgbml0ZW1zLCBj bXApIFwKKwlkbyB7IFwKKwkJaW50IF9uID0gKG5pdGVtcyk7IFwKKwkJZWxl bV90KiBfYXJyID0gKGFycmF5KTsgXAorCQlzdGF0aWMgY29uc3QgaW50IF9v ZmZzZXRzW10gPSB7NDAxLCAxMzksIDUzLCAxOSwgNywgM307IFwKKwkJaW50 IF9ub2ZmLCBfb2ZmOyBcCisJCWZvciAoX25vZmYgPSAwOyBfbm9mZiA8IGxl bmd0aG9mKF9vZmZzZXRzKTsgX25vZmYrKykgeyBcCisJCQlfb2ZmID0gX29m ZnNldHNbX25vZmZdOyBcCisJCQlwZ19zaGVsbF9zb3J0X3Bhc3MoZWxlbV90 LCAoY21wKSwgX29mZik7IFwKKwkJfSBcCisJCXBnX3NoZWxsX3NvcnRfcGFz cyhlbGVtX3QsIChjbXApLCAxKTsgXAorCX0gd2hpbGUoMCkKKy8qCisgKiBw Z19pbnNlcnRpb25fc29ydCAtIGp1c3QgaW5zZXJ0aW9uIHNvcnQgZm9yIHNt YWxsZXN0IGFycmF5LCBvciBpZgorICogYXJyYXkgd2FzIGFsbW9zdCBzb3J0 ZWQgYWxyZWFkeS4gVXNlcyBzYW1lIGFyZ3VtZW50cyBhcyBwZ19zaGVsbF9z b3J0LgorICovCisjZGVmaW5lIHBnX2luc2VydGlvbl9zb3J0KGVsZW1fdCwg YXJyYXksIG5pdGVtcywgY21wKSBcCisJZG8geyBcCisJCWludCBfbiA9IChu aXRlbXMpOyBcCisJCWVsZW1fdCogX2FyciA9IChhcnJheSk7IFwKKwkJcGdf c2hlbGxfc29ydF9wYXNzKGVsZW1fdCwgKGNtcCksIDEpOyBcCisJfSB3aGls ZSAoMCkKKwogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKgkJCQlTZWN0 aW9uIDg6CXJhbmRvbSBzdHVmZgotLSAKMi4xMS4wCgoKRnJvbSAyMDFmNGI0 YWMwN2VlYmUwNWE0ZGViNWFkZTQyY2Q0MWVjNzRiOGU4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBTb2tvbG92IFl1cmEgPGZ1bm55LmZhbGNv bkBwb3N0Z3Jlc3Byby5ydT4KRGF0ZTogTW9uLCAxNSBNYXkgMjAxNyAxNjow NDoxNCArMDMwMApTdWJqZWN0OiBbUEFUQ0ggMi8yXSBTaW1wbGlmeSBQYWdl UmVwYWlyRnJhZ21lbnRhdGlvbgoKSW4gYXNzdW1wdGlvbiB0aGF0IHBhZ2Ug dXN1YWxseSBkb2Vzbid0IGJlY29tZSBlbXB0eSwgbWVyZ2Ugc2Vjb25kIGxv b3AKYm9keSAoY29sbGVjdGluZyBpdGVtcyB3aXRoIHN0b3JhZ2UpIGludG8g Zmlyc3QgKGNvdW50aW5nIGtpbmRzIG9mCml0ZW1zKS4KLS0tCiBzcmMvYmFj a2VuZC9zdG9yYWdlL3BhZ2UvYnVmcGFnZS5jIHwgNDYgKysrKysrKysrKysr KysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCAx OCBpbnNlcnRpb25zKCspLCAyOCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9zdG9yYWdlL3BhZ2UvYnVmcGFnZS5jIGIvc3JjL2Jh Y2tlbmQvc3RvcmFnZS9wYWdlL2J1ZnBhZ2UuYwppbmRleCBjNTYzMGU4MDhi Li42MTczOGYyNDFmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdl L3BhZ2UvYnVmcGFnZS5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvcGFn ZS9idWZwYWdlLmMKQEAgLTU1NSwxMCArNTU1LDExIEBAIFBhZ2VSZXBhaXJG cmFnbWVudGF0aW9uKFBhZ2UgcGFnZSkKIAlPZmZzZXQJCXBkX3NwZWNpYWwg PSAoKFBhZ2VIZWFkZXIpIHBhZ2UpLT5wZF9zcGVjaWFsOwogCUl0ZW1JZAkJ bHA7CiAJaW50CQkJbmxpbmUsCi0JCQkJbnN0b3JhZ2UsCiAJCQkJbnVudXNl ZDsKIAlpbnQJCQlpOwogCVNpemUJCXRvdGFsbGVuOworCWl0ZW1JZFNvcnRE YXRhIGl0ZW1pZGJhc2VbTWF4SGVhcFR1cGxlc1BlclBhZ2VdOworCWl0ZW1J ZFNvcnQJaXRlbWlkcHRyID0gaXRlbWlkYmFzZTsKIAogCS8qCiAJICogSXQn cyB3b3J0aCB0aGUgdHJvdWJsZSB0byBiZSBtb3JlIHBhcmFub2lkIGhlcmUg dGhhbiBpbiBtb3N0IHBsYWNlcywKQEAgLTU3OCwxNCArNTc5LDI2IEBAIFBh Z2VSZXBhaXJGcmFnbWVudGF0aW9uKFBhZ2UgcGFnZSkKIAkJCQkJCXBkX2xv d2VyLCBwZF91cHBlciwgcGRfc3BlY2lhbCkpKTsKIAogCW5saW5lID0gUGFn ZUdldE1heE9mZnNldE51bWJlcihwYWdlKTsKLQludW51c2VkID0gbnN0b3Jh Z2UgPSAwOworCW51bnVzZWQgPSB0b3RhbGxlbiA9IDA7CiAJZm9yIChpID0g Rmlyc3RPZmZzZXROdW1iZXI7IGkgPD0gbmxpbmU7IGkrKykKIAl7CiAJCWxw ID0gUGFnZUdldEl0ZW1JZChwYWdlLCBpKTsKIAkJaWYgKEl0ZW1JZElzVXNl ZChscCkpCiAJCXsKIAkJCWlmIChJdGVtSWRIYXNTdG9yYWdlKGxwKSkKLQkJ CQluc3RvcmFnZSsrOworCQkJeworCQkJCWl0ZW1pZHB0ci0+b2Zmc2V0aW5k ZXggPSBpIC0gMTsKKwkJCQlpdGVtaWRwdHItPml0ZW1vZmYgPSBJdGVtSWRH ZXRPZmZzZXQobHApOworCQkJCWlmICh1bmxpa2VseShpdGVtaWRwdHItPml0 ZW1vZmYgPCAoaW50KSBwZF91cHBlciB8fAorCQkJCQkJCSBpdGVtaWRwdHIt Pml0ZW1vZmYgPj0gKGludCkgcGRfc3BlY2lhbCkpCisJCQkJCWVyZXBvcnQo RVJST1IsCisJCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9EQVRBX0NPUlJVUFRF RCksCisJCQkJCQkJIGVycm1zZygiY29ycnVwdGVkIGl0ZW0gcG9pbnRlcjog JXUiLAorCQkJCQkJCQkJaXRlbWlkcHRyLT5pdGVtb2ZmKSkpOworCQkJCWl0 ZW1pZHB0ci0+YWxpZ25lZGxlbiA9IE1BWEFMSUdOKEl0ZW1JZEdldExlbmd0 aChscCkpOworCQkJCXRvdGFsbGVuICs9IGl0ZW1pZHB0ci0+YWxpZ25lZGxl bjsKKwkJCQlpdGVtaWRwdHIrKzsKKwkJCX0KIAkJfQogCQllbHNlCiAJCXsK QEAgLTU5NSw3ICs2MDgsNyBAQCBQYWdlUmVwYWlyRnJhZ21lbnRhdGlvbihQ YWdlIHBhZ2UpCiAJCX0KIAl9CiAKLQlpZiAobnN0b3JhZ2UgPT0gMCkKKwlp ZiAoaXRlbWlkcHRyID09IGl0ZW1pZGJhc2UpCiAJewogCQkvKiBQYWdlIGlz IGNvbXBsZXRlbHkgZW1wdHksIHNvIGp1c3QgcmVzZXQgaXQgcXVpY2tseSAq LwogCQkoKFBhZ2VIZWFkZXIpIHBhZ2UpLT5wZF91cHBlciA9IHBkX3NwZWNp YWw7CkBAIC02MDMsMzYgKzYxNiwxMyBAQCBQYWdlUmVwYWlyRnJhZ21lbnRh dGlvbihQYWdlIHBhZ2UpCiAJZWxzZQogCXsKIAkJLyogTmVlZCB0byBjb21w YWN0IHRoZSBwYWdlIHRoZSBoYXJkIHdheSAqLwotCQlpdGVtSWRTb3J0RGF0 YSBpdGVtaWRiYXNlW01heEhlYXBUdXBsZXNQZXJQYWdlXTsKLQkJaXRlbUlk U29ydAlpdGVtaWRwdHIgPSBpdGVtaWRiYXNlOwotCi0JCXRvdGFsbGVuID0g MDsKLQkJZm9yIChpID0gMDsgaSA8IG5saW5lOyBpKyspCi0JCXsKLQkJCWxw ID0gUGFnZUdldEl0ZW1JZChwYWdlLCBpICsgMSk7Ci0JCQlpZiAoSXRlbUlk SGFzU3RvcmFnZShscCkpCi0JCQl7Ci0JCQkJaXRlbWlkcHRyLT5vZmZzZXRp bmRleCA9IGk7Ci0JCQkJaXRlbWlkcHRyLT5pdGVtb2ZmID0gSXRlbUlkR2V0 T2Zmc2V0KGxwKTsKLQkJCQlpZiAoaXRlbWlkcHRyLT5pdGVtb2ZmIDwgKGlu dCkgcGRfdXBwZXIgfHwKLQkJCQkJaXRlbWlkcHRyLT5pdGVtb2ZmID49IChp bnQpIHBkX3NwZWNpYWwpCi0JCQkJCWVyZXBvcnQoRVJST1IsCi0JCQkJCQkJ KGVycmNvZGUoRVJSQ09ERV9EQVRBX0NPUlJVUFRFRCksCi0JCQkJCQkJIGVy cm1zZygiY29ycnVwdGVkIGl0ZW0gcG9pbnRlcjogJXUiLAotCQkJCQkJCQkJ aXRlbWlkcHRyLT5pdGVtb2ZmKSkpOwotCQkJCWl0ZW1pZHB0ci0+YWxpZ25l ZGxlbiA9IE1BWEFMSUdOKEl0ZW1JZEdldExlbmd0aChscCkpOwotCQkJCXRv dGFsbGVuICs9IGl0ZW1pZHB0ci0+YWxpZ25lZGxlbjsKLQkJCQlpdGVtaWRw dHIrKzsKLQkJCX0KLQkJfQotCiAJCWlmICh0b3RhbGxlbiA+IChTaXplKSAo cGRfc3BlY2lhbCAtIHBkX2xvd2VyKSkKIAkJCWVyZXBvcnQoRVJST1IsCiAJ CQkJCShlcnJjb2RlKEVSUkNPREVfREFUQV9DT1JSVVBURUQpLAogCQkJICAg ZXJybXNnKCJjb3JydXB0ZWQgaXRlbSBsZW5ndGhzOiB0b3RhbCAldSwgYXZh aWxhYmxlIHNwYWNlICV1IiwKIAkJCQkJICAodW5zaWduZWQgaW50KSB0b3Rh bGxlbiwgcGRfc3BlY2lhbCAtIHBkX2xvd2VyKSkpOwogCi0JCWNvbXBhY3Rp ZnlfdHVwbGVzKGl0ZW1pZGJhc2UsIG5zdG9yYWdlLCBwYWdlKTsKKwkJY29t cGFjdGlmeV90dXBsZXMoaXRlbWlkYmFzZSwgKGludCkgKGl0ZW1pZHB0ciAt IGl0ZW1pZGJhc2UpLCBwYWdlKTsKIAl9CiAKIAkvKiBTZXQgaGludCBiaXQg Zm9yIFBhZ2VBZGRJdGVtICovCi0tIAoyLjExLjAKCg== --=_afd659d8511ba253049bc1269bb4b731 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 --=_afd659d8511ba253049bc1269bb4b731--