Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtp (Exim 4.80) (envelope-from ) id 1ZrLEe-0005lM-DW for pgsql-hackers@arkaria.postgresql.org; Wed, 28 Oct 2015 07:33:28 +0000 Received: from localhost ([127.0.0.1] helo=postgresql.org) by malur.postgresql.org with smtp (Exim 4.84) (envelope-from ) id 1ZrLEd-0000vU-NN for pgsql-hackers@arkaria.postgresql.org; Wed, 28 Oct 2015 07:33:27 +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) (envelope-from ) id 1ZrLEc-0000vN-H1 for pgsql-hackers@postgresql.org; Wed, 28 Oct 2015 07:33:26 +0000 Received: from newmail.postgrespro.ru ([93.174.131.138] helo=mail.postgrespro.ru) by makus.postgresql.org with esmtp (Exim 4.84) (envelope-from ) id 1ZrLEY-0002bH-LF for pgsql-hackers@postgresql.org; Wed, 28 Oct 2015 07:33:25 +0000 Received: from [192.168.100.9] (unknown [195.9.163.19]) by mail.postgrespro.ru (Postfix) with ESMTPSA id 6F10A21C3FD1 for ; Wed, 28 Oct 2015 10:33:20 +0300 (MSK) From: Valery Popov To: pgsql-hackers@postgresql.org Subject: [PROPOSAL] Max recursion depth in WITH Queries (Common Table Expressions) Message-ID: <56307A3F.4050802@postgrespro.ru> Date: Wed, 28 Oct 2015 10:33:19 +0300 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:38.0) Gecko/20100101 Thunderbird/38.3.0 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="------------000704050706050508090407" X-Pg-Spam-Score: -1.9 (-) 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 This is a multi-part message in MIME format. --------------000704050706050508090407 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Hi, Hackers Recursive queries are typically used to deal with hierarchical or tree-structured data. In some conditions when data contain relationships with cycles recursive query will loop unlimited and significantly slows the client's session. To prevent "infinite" loop I suggest the max_recursion_depth parameter, which defines the maximum recursion level during the execution of recursive query. When max_recursion_depth > 0 and the recursion level of query exceeds specified value then the execution of query interrupts with error message. In the MS SQL Server there is MAXRECURSION hint for the same purpose. Thanks! -- Regards, Valery Popov Postgres Professional http://www.postgrespro.com The Russian Postgres Company --------------000704050706050508090407 Content-Type: text/plain; charset=UTF-8; name="recurs_depth_v0.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="recurs_depth_v0.patch" ZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9jb25maWcuc2dtbCBiL2RvYy9z cmMvc2dtbC9jb25maWcuc2dtbA0KaW5kZXggMWRhN2RmYi4uMzNhNjAwOSAx MDA2NDQNCi0tLSBhL2RvYy9zcmMvc2dtbC9jb25maWcuc2dtbA0KKysrIGIv ZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sDQpAQCAtNjA0OCw2ICs2MDQ4LDIz IEBAIFNFVCBYTUwgT1BUSU9OIHsgRE9DVU1FTlQgfCBDT05URU5UIH07DQog ICAgICAgPC9saXN0aXRlbT4NCiAgICAgIDwvdmFybGlzdGVudHJ5Pg0KIA0K KyAgICAgPHZhcmxpc3RlbnRyeSBpZD0iZ3VjLW1heC1yZWN1cnNpb24tZGVw dGgiIHhyZWZsYWJlbD0ibWF4X3JlY3Vyc2lvbl9kZXB0aCI+DQorICAgICAg PHRlcm0+PHZhcm5hbWU+bWF4X3JlY3Vyc2lvbl9kZXB0aDwvdmFybmFtZT4g KDx0eXBlPmludGVnZXI8L3R5cGU+KQ0KKyAgICAgIDxpbmRleHRlcm0+DQor ICAgICAgIDxwcmltYXJ5Pjx2YXJuYW1lPm1heF9yZWN1cnNpb25fZGVwdGg8 Lz4gY29uZmlndXJhdGlvbiBwYXJhbWV0ZXI8L3ByaW1hcnk+DQorICAgICAg PC9pbmRleHRlcm0+DQorICAgICAgPC90ZXJtPg0KKyAgICAgIDxsaXN0aXRl bT4NCisgICAgICAgPHBhcmE+DQorICAgICAgICBTZXRzIHRoZSBtYXhpbXVt IHJlY3Vyc2lvbiBkZXB0aCBpbiAgPGxpdGVyYWw+V0lUSCBRdWVyaWVzPC8+ IChDb21tb24gVGFibGUgRXhwcmVzc2lvbnMpLg0KKyAgICAgICAgVGhlIGRl ZmF1bHQgdmFsdWUgaXMgMCBhbmQgaXQgbWVhbnMgbm8gbGltaXQgZm9yIHJl Y3Vyc2lvbiBkZXB0aCAoaW5maW5pdGUgbG9vcCBpcyBwb3NzaWJsZSkuIA0K KyAgICAgICAgV2hlbiA8bGl0ZXJhbD5tYXhfcmVjdXJzaW9uX2RlcHRoPC8+ ID4gMCBhbmQgdGhlIHJlY3Vyc2lvbiBsZXZlbCBvZiBxdWVyeSBleGNlZWRz IHNwZWNpZmllZCB2YWx1ZSANCisgICB0aGVuIGV4ZWN1dGlvbiBvZiBxdWVy eSBpbnRlcnJ1cHRzIHdpdGggZXJyb3IgbWVzc2FnZS4NCisgICAgICAgICBT ZWUgPHhyZWYgbGlua2VuZD0icXVlcmllcy13aXRoIj4gZm9yIG1vcmUgaW5m b3JtYXRpb24uDQorICAgICAgIDwvcGFyYT4NCisgICAgICA8L2xpc3RpdGVt Pg0KKyAgICAgPC92YXJsaXN0ZW50cnk+DQorDQogICAgICA8L3ZhcmlhYmxl bGlzdD4NCiAgICAgPC9zZWN0Mj4NCiAgICAgIDxzZWN0MiBpZD0icnVudGlt ZS1jb25maWctY2xpZW50LWZvcm1hdCI+DQpkaWZmIC0tZ2l0IGEvZG9jL3Ny Yy9zZ21sL3F1ZXJpZXMuc2dtbCBiL2RvYy9zcmMvc2dtbC9xdWVyaWVzLnNn bWwNCmluZGV4IGFiNDliZDcuLjgwYTYzYzggMTAwNjQ0DQotLS0gYS9kb2Mv c3JjL3NnbWwvcXVlcmllcy5zZ21sDQorKysgYi9kb2Mvc3JjL3NnbWwvcXVl cmllcy5zZ21sDQpAQCAtMjIxNiw2ICsyMjE2LDQ2IEBAIFNFTEVDVCBuIEZS T00gdCBMSU1JVCAxMDA7DQogICAgSW4gZWFjaCBjYXNlIGl0IGVmZmVjdGl2 ZWx5IHByb3ZpZGVzIHRlbXBvcmFyeSB0YWJsZShzKSB0aGF0IGNhbg0KICAg IGJlIHJlZmVycmVkIHRvIGluIHRoZSBtYWluIGNvbW1hbmQuDQogICA8L3Bh cmE+DQorICANCisgIDx0aXA+DQorICAgPHBhcmE+DQorICAgIEFsc28gaXQg aXMgcG9zc2libGUgdG8gbGltaXQgdGhlIG51bWJlciBvZiByZXR1cm5pbmcg cm93cyBieSBzZXR0aW5nIHBhcmFtZXRlcg0KKyAgICA8bGl0ZXJhbD5tYXhf cmVjdXJzaW9uX2RlcHRoPC8+IGluIHRoZSA8bGl0ZXJhbD5wb3N0Z3Jlc3Fs LmNvbmY8Lz4gZmlsZS4gDQorICAgIFNlZSA8eHJlZiBsaW5rZW5kPSJndWMt bWF4LXJlY3Vyc2lvbi1kZXB0aCI+IGZvciBtb3JlIGluZm9ybWF0aW9uLg0K KyAgIDwvcGFyYT4NCisgIDwvdGlwPg0KKyAgDQorICA8cGFyYT4NCisgIEFu b3RoZXIgd2F5IHRvIHNldCA8bGl0ZXJhbD5tYXhfcmVjdXJzaW9uX2RlcHRo PC8+IGlzIDxsaXRlcmFsPlNFVCBtYXhfcmVjdXJzaW9uX2RlcHRoPC8+IGNv bW1hbmQgaW4gPGxpdGVyYWw+cHNxbDwvPi4NCisgIA0KKzxwcm9ncmFtbGlz dGluZz4NCitwb3N0Z3Jlcz0jIHNob3cgbWF4X3JlY3Vyc2lvbl9kZXB0aDsN CitMT0c6ICBzdGF0ZW1lbnQ6IHNob3cgbWF4X3JlY3Vyc2lvbl9kZXB0aDsN CisgbWF4X3JlY3Vyc2lvbl9kZXB0aCANCistLS0tLS0tLS0tLS0tLS0tLS0t LS0NCisgMA0KKygxIHJvdykNCisNCitwb3N0Z3Jlcz0jIHNldCBtYXhfcmVj dXJzaW9uX2RlcHRoID0gNTsNCitMT0c6ICBzdGF0ZW1lbnQ6IHNldCBtYXhf cmVjdXJzaW9uX2RlcHRoID0gNTsNCitTRVQNCitwb3N0Z3Jlcz0jIHNob3cg bWF4X3JlY3Vyc2lvbl9kZXB0aDsNCitMT0c6ICBzdGF0ZW1lbnQ6IHNob3cg bWF4X3JlY3Vyc2lvbl9kZXB0aDsNCisgbWF4X3JlY3Vyc2lvbl9kZXB0aCAN CistLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisgNQ0KKygxIHJvdykNCis8L3By b2dyYW1saXN0aW5nPiAgDQorICAgV2hlbiA8bGl0ZXJhbD5tYXhfcmVjdXJz aW9uX2RlcHRoPC8+ID4gMCBhbmQgdGhlIHJlY3Vyc2lvbiBsZXZlbCBvZiBx dWVyeSBleGNlZWRzIHNwZWNpZmllZCB2YWx1ZSANCisgICB0aGVuIGV4ZWN1 dGlvbiBvZiBxdWVyeSBpbnRlcnJ1cHRzIHdpdGggZXJyb3IgbWVzc2FnZSBs aWtlIHRoaXM6ICANCisNCis8cHJvZ3JhbWxpc3Rpbmc+DQorICAgRVJST1I6 ICBUaGUgc3RhdGVtZW50IHRlcm1pbmF0ZWQuIFRoZSBtYXhpbXVtIHJlY3Vy c2lvbiBkZXB0aCA1IGhhcyBiZWVuIGV4aGF1c3RlZCBiZWZvcmUgc3RhdGVt ZW50IGNvbXBsZXRpb24uDQorPC9wcm9ncmFtbGlzdGluZz4NCisgICANCisg ICAgIA0KKyAgIDwvcGFyYT4NCisgIA0KICA8L3NlY3QyPg0KIA0KICA8c2Vj dDIgaWQ9InF1ZXJpZXMtd2l0aC1tb2RpZnlpbmciPg0KZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVSZWN1cnNpdmV1bmlvbi5jIGIv c3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVJlY3Vyc2l2ZXVuaW9uLmMNCmlu ZGV4IDhkZjE2MzkuLmM2MTYyNTAgMTAwNjQ0DQotLS0gYS9zcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlUmVjdXJzaXZldW5pb24uYw0KKysrIGIvc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZVJlY3Vyc2l2ZXVuaW9uLmMNCkBAIC0xMTAs NiArMTEwLDEzIEBAIEV4ZWNSZWN1cnNpdmVVbmlvbihSZWN1cnNpdmVVbmlv blN0YXRlICpub2RlKQ0KIAkvKiAyLiBFeGVjdXRlIHJlY3Vyc2l2ZSB0ZXJt ICovDQogCWZvciAoOzspDQogCXsNCisJCWlmICgod2l0aF9yZWN1cnNpdmVf bGltaXQgPiAwKSAmJiAobm9kZS0+cHMucmVjdXJzaW9uX2NudCA+PSB3aXRo X3JlY3Vyc2l2ZV9saW1pdCkpDQorCQl7DQorCQkJZXJlcG9ydChFUlJPUiwN CisJCQkJKGVycmNvZGUoRVJSQ09ERV9DT05GSUdVUkFUSU9OX0xJTUlUX0VY Q0VFREVEKSwNCisJCQkJZXJybXNnKCJUaGUgc3RhdGVtZW50IHRlcm1pbmF0 ZWQuIFRoZSBtYXhpbXVtIHJlY3Vyc2lvbiBkZXB0aCAlZCBoYXMgYmVlbiBl eGhhdXN0ZWQgYmVmb3JlIHN0YXRlbWVudCBjb21wbGV0aW9uLiIsIHdpdGhf cmVjdXJzaXZlX2xpbWl0KSkpOw0KKwkJCWJyZWFrOw0KKwkJfQ0KIAkJc2xv dCA9IEV4ZWNQcm9jTm9kZShpbm5lclBsYW4pOw0KIAkJaWYgKFR1cElzTnVs bChzbG90KSkNCiAJCXsNCkBAIC0xMzIsNiArMTM5LDkgQEAgRXhlY1JlY3Vy c2l2ZVVuaW9uKFJlY3Vyc2l2ZVVuaW9uU3RhdGUgKm5vZGUpDQogCQkJaW5u ZXJQbGFuLT5jaGdQYXJhbSA9IGJtc19hZGRfbWVtYmVyKGlubmVyUGxhbi0+ Y2hnUGFyYW0sDQogCQkJCQkJCQkJCQkJIHBsYW4tPnd0UGFyYW0pOw0KIA0K KwkJCS8qIGdvIHRvIHRoZSBuZXh0IHJlY3Vyc2lvbiBsZXZlbCAqLw0KKwkJ CW5vZGUtPnBzLnJlY3Vyc2lvbl9jbnQrKzsNCisNCiAJCQkvKiBhbmQgY29u dGludWUgZmV0Y2hpbmcgZnJvbSByZWN1cnNpdmUgdGVybSAqLw0KIAkJCWNv bnRpbnVlOw0KIAkJfQ0KQEAgLTI2MSw2ICsyNzEsMTEgQEAgRXhlY0luaXRS ZWN1cnNpdmVVbmlvbihSZWN1cnNpdmVVbmlvbiAqbm9kZSwgRVN0YXRlICpl c3RhdGUsIGludCBlZmxhZ3MpDQogCQlidWlsZF9oYXNoX3RhYmxlKHJ1c3Rh dGUpOw0KIAl9DQogDQorCS8qDQorCSAqIEluaXQgcmVjdXJzaW9uIGRlcHRo IGNvdW50ZXIuDQorCSAqLw0KKwlydXN0YXRlLT5wcy5yZWN1cnNpb25fY250 PTA7DQorDQogCXJldHVybiBydXN0YXRlOw0KIH0NCiANCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Yy5jIGIvc3JjL2JhY2tlbmQv dXRpbHMvbWlzYy9ndWMuYw0KaW5kZXggMjMwYzVjYy4uYzM5ZThjYSAxMDA2 NDQNCi0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjLmMNCisrKyBi L3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjLmMNCkBAIC0xMTIsNiArMTEy LDkgQEAgZXh0ZXJuIGNoYXIgKnRlbXBfdGFibGVzcGFjZXM7DQogZXh0ZXJu IGJvb2wgaWdub3JlX2NoZWNrc3VtX2ZhaWx1cmU7DQogZXh0ZXJuIGJvb2wg c3luY2hyb25pemVfc2Vxc2NhbnM7DQogDQorLyogUGFyYW1ldGVycyBmb3Ig Y29udHJvbGxpbmcgcmVjdXJzaXZlIGRlcHRoICovDQoraW50CXdpdGhfcmVj dXJzaXZlX2xpbWl0Ow0KKw0KICNpZmRlZiBUUkFDRV9TWU5DU0NBTg0KIGV4 dGVybiBib29sIHRyYWNlX3N5bmNzY2FuOw0KICNlbmRpZg0KQEAgLTI2Njks NiArMjY3MiwxOCBAQCBzdGF0aWMgc3RydWN0IGNvbmZpZ19pbnQgQ29uZmln dXJlTmFtZXNJbnRbXSA9DQogCQlOVUxMLCBOVUxMLCBOVUxMDQogCX0sDQog DQorCXsNCisJCXsibWF4X3JlY3Vyc2lvbl9kZXB0aCIsIFBHQ19VU0VSU0VU LCBDVVNUT01fT1BUSU9OUywNCisJCQlnZXR0ZXh0X25vb3AoIlNldHMgdGhl IG1heGltdW0gcmVjdXJzaW9uIGRlcHRoIGluIFdJVEggUkVDVVJTSVZFICIN CisJCQkJCQkgImFuZCBvdGhlciBDVEUgb3BlcmF0aW9ucy4iKSwNCisJCQln ZXR0ZXh0X25vb3AoIlNldHMgdGhlIG1heGltdW0gcmVjdXJzaW9uIGRlcHRo IGluIFdJVEggUkVDVVJTSVZFICINCisJCQkJCQkJCQkJICJhbmQgb3RoZXIg Q1RFIG9wZXJhdGlvbnMuIikNCisJCX0sDQorCQkmd2l0aF9yZWN1cnNpdmVf bGltaXQsDQorCQkwLCAwLCBJTlRfTUFYLA0KKwkJTlVMTCwgTlVMTCwgTlVM TA0KKwl9LA0KKw0KIAkvKiBFbmQtb2YtbGlzdCBtYXJrZXIgKi8NCiAJew0K IAkJe05VTEwsIDAsIDAsIE5VTEwsIE5VTEx9LCBOVUxMLCAwLCAwLCAwLCBO VUxMLCBOVUxMLCBOVUxMDQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRp bHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxlIGIvc3JjL2JhY2tlbmQv dXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxlDQppbmRleCAwNmRm YzA2Li5lNWU4ZTUzIDEwMDY0NA0KLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMv bWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxlDQorKysgYi9zcmMvYmFja2Vu ZC91dGlscy9taXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUNCkBAIC01Mjcs NiArNTI3LDcgQEANCiAjeG1sYmluYXJ5ID0gJ2Jhc2U2NCcNCiAjeG1sb3B0 aW9uID0gJ2NvbnRlbnQnDQogI2dpbl9wZW5kaW5nX2xpc3RfbGltaXQgPSA0 TUINCisjbWF4X3JlY3Vyc2lvbl9kZXB0aCA9IDAgICAgICAgICAjIG1heCBk ZXB0aCBmb3IgQ1RFIHJhbmdlIDAtSU5UX01BWCwgMCBtZWFucyBpbmZpbml0 ZQ0KIA0KICMgLSBMb2NhbGUgYW5kIEZvcm1hdHRpbmcgLQ0KIA0KZGlmZiAt LWdpdCBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL25vZGVSZWN1cnNpdmV1bmlv bi5oIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3Ivbm9kZVJlY3Vyc2l2ZXVuaW9u LmgNCmluZGV4IDUyY2FjZDguLjAzNjg1N2YgMTAwNjQ0DQotLS0gYS9zcmMv aW5jbHVkZS9leGVjdXRvci9ub2RlUmVjdXJzaXZldW5pb24uaA0KKysrIGIv c3JjL2luY2x1ZGUvZXhlY3V0b3Ivbm9kZVJlY3Vyc2l2ZXVuaW9uLmgNCkBA IC0yMCw1ICsyMCw3IEBAIGV4dGVybiBSZWN1cnNpdmVVbmlvblN0YXRlICpF eGVjSW5pdFJlY3Vyc2l2ZVVuaW9uKFJlY3Vyc2l2ZVVuaW9uICpub2RlLCBF U3RhdGUNCiBleHRlcm4gVHVwbGVUYWJsZVNsb3QgKkV4ZWNSZWN1cnNpdmVV bmlvbihSZWN1cnNpdmVVbmlvblN0YXRlICpub2RlKTsNCiBleHRlcm4gdm9p ZCBFeGVjRW5kUmVjdXJzaXZlVW5pb24oUmVjdXJzaXZlVW5pb25TdGF0ZSAq bm9kZSk7DQogZXh0ZXJuIHZvaWQgRXhlY1JlU2NhblJlY3Vyc2l2ZVVuaW9u KFJlY3Vyc2l2ZVVuaW9uU3RhdGUgKm5vZGUpOw0KKy8qIFBhcmFtZXRlcnMg Zm9yIGNvbnRyb2xsaW5nIHJlY3Vyc2l2ZSBkZXB0aCAqLw0KK2V4dGVybiBp bnQJd2l0aF9yZWN1cnNpdmVfbGltaXQ7DQogDQogI2VuZGlmICAgLyogTk9E RVJFQ1VSU0lWRVVOSU9OX0ggKi8NCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVk ZS9ub2Rlcy9leGVjbm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNu b2Rlcy5oDQppbmRleCBkYjViZDdmLi5lYjgyYzVkIDEwMDY0NA0KLS0tIGEv c3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgNCisrKyBiL3NyYy9pbmNs dWRlL25vZGVzL2V4ZWNub2Rlcy5oDQpAQCAtMTA1OSw2ICsxMDU5LDcgQEAg dHlwZWRlZiBzdHJ1Y3QgUGxhblN0YXRlDQogCVByb2plY3Rpb25JbmZvICpw c19Qcm9qSW5mbzsJLyogaW5mbyBmb3IgZG9pbmcgdHVwbGUgcHJvamVjdGlv biAqLw0KIAlib29sCQlwc19UdXBGcm9tVGxpc3Q7Lyogc3RhdGUgZmxhZyBm b3IgcHJvY2Vzc2luZyBzZXQtdmFsdWVkDQogCQkJCQkJCQkgKiBmdW5jdGlv bnMgaW4gdGFyZ2V0bGlzdCAqLw0KKwlpbnQJCQlyZWN1cnNpb25fY250OyAg LyogY291bnRlciBmb3IgcmVjdXJzaW9uIGRlcHRoICovDQogfSBQbGFuU3Rh dGU7DQogDQogLyogLS0tLS0tLS0tLS0tLS0tLQ0KZGlmZiAtLWdpdCBhL3Ny Yy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvd2l0aC5vdXQgYi9zcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL3dpdGgub3V0DQppbmRleCAyYzkyMjZjLi5kNDJj ZTA5IDEwMDY0NA0KLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC93 aXRoLm91dA0KKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC93aXRo Lm91dA0KQEAgLTIyNTYsMyArMjI1Niw2NiBAQCB3aXRoIG9yZGluYWxpdHkg YXMgKHNlbGVjdCAxIGFzIHgpIHNlbGVjdCAqIGZyb20gb3JkaW5hbGl0eTsN CiAgMQ0KICgxIHJvdykNCiANCistLQ0KKy0tIFJFQ1VSU0lPTiBERVBUSA0K Ky0tIENoZWNrIHRoZSBtYXhfcmVjdXJzaW9uX2RlcHRoIHBhcmFtZXRlcg0K Ky0tDQorQ1JFQVRFIFRBQkxFIHRlc3RfbWF4X3JlY3VycyAoIHBhcmVudCBp bnRlZ2VyLCAJY2hpbGQgaW50ZWdlcik7DQorSU5TRVJUIElOVE8gdGVzdF9t YXhfcmVjdXJzIChwYXJlbnQsIGNoaWxkKSBWQUxVRVMNCistLSBpbmZpbml0 ZSByZWN1cnNpb24NCisoMSwyKSwgKDIsMSksDQorLS1qdXN0IHRvbyBkZWVw IHBhdGgNCisoMTAwLDEwMSksICgxMDEsMTAyKSwgKDEwMiwxMDMpLCAoMTAz LDEwNCksICgxMDQsMTA1KSwgKDEwNSwwKSwNCistLWdvb2QNCisoMjAwLDIw MSksICgyMDEsMjAyKSwgKDIwMiwyMDMpLCAoMjAzLDIwNCksICgyMDQsMCks DQorLS0gdHJlZS1saWtlIHRvbyBtdWNoIG51bWJlciBvZiBub2Rlcw0KKygz MDAsMzExKSwgKDMxMSwzMTIpLCAoMzEyLDApLCAoMzAwLDMyMSksICgzMjEs MzIyKSwgKDMyMiwwKSwNCistLSB0cmVlLWxpa2UgZ29vZA0KKyg0MDAsNDEx KSwgKDQxMSw0MTIpLCAoNDEyLDApLCAoNDAwLDQyMSksICg0MjEsMCk7DQor U0VUIG1heF9yZWN1cnNpb25fZGVwdGggdG8gNTsNCitTSE9XIG1heF9yZWN1 cnNpb25fZGVwdGg7DQorIG1heF9yZWN1cnNpb25fZGVwdGggDQorLS0tLS0t LS0tLS0tLS0tLS0tLS0tDQorIDUNCisoMSByb3cpDQorDQorLS0gU3RyZXNz IHRlc3QgZm9yIG1heF9yZWN1cnNpb25fZGVwdGggcGFyYW1ldGVyDQorV0lU SCBSRUNVUlNJVkUgZyhpZCkNCitBUyAoU0VMRUNUIDE6OmludCBVTklPTiBB TEwgU0VMRUNUIGNoaWxkIEFTIGlkIGZyb20gdGVzdF9tYXhfcmVjdXJzIHR0 LCBnIHdoZXJlIHR0LnBhcmVudD1nLmlkKQ0KK1NFTEVDVCAqIEZST00gZzsN CitFUlJPUjogIFRoZSBzdGF0ZW1lbnQgdGVybWluYXRlZC4gVGhlIG1heGlt dW0gcmVjdXJzaW9uIGRlcHRoIDUgaGFzIGJlZW4gZXhoYXVzdGVkIGJlZm9y ZSBzdGF0ZW1lbnQgY29tcGxldGlvbi4NCitXSVRIIFJFQ1VSU0lWRSBnKGlk KQ0KK0FTIChTRUxFQ1QgMTAwOjppbnQgVU5JT04gQUxMIFNFTEVDVCBjaGls ZCBBUyBpZCBmcm9tIHRlc3RfbWF4X3JlY3VycyB0dCwgZyB3aGVyZSB0dC5w YXJlbnQ9Zy5pZCkNCitTRUxFQ1QgKiBGUk9NIGc7DQorRVJST1I6ICBUaGUg c3RhdGVtZW50IHRlcm1pbmF0ZWQuIFRoZSBtYXhpbXVtIHJlY3Vyc2lvbiBk ZXB0aCA1IGhhcyBiZWVuIGV4aGF1c3RlZCBiZWZvcmUgc3RhdGVtZW50IGNv bXBsZXRpb24uDQorV0lUSCBSRUNVUlNJVkUgZyhpZCkNCitBUyAoU0VMRUNU IDIwMDo6aW50IFVOSU9OIEFMTCBTRUxFQ1QgY2hpbGQgQVMgaWQgZnJvbSB0 ZXN0X21heF9yZWN1cnMgdHQsIGcgd2hlcmUgdHQucGFyZW50PWcuaWQpDQor U0VMRUNUICogRlJPTSBnOw0KK0VSUk9SOiAgVGhlIHN0YXRlbWVudCB0ZXJt aW5hdGVkLiBUaGUgbWF4aW11bSByZWN1cnNpb24gZGVwdGggNSBoYXMgYmVl biBleGhhdXN0ZWQgYmVmb3JlIHN0YXRlbWVudCBjb21wbGV0aW9uLg0KK1dJ VEggUkVDVVJTSVZFIGcoaWQpDQorQVMgKFNFTEVDVCAzMDA6OmludCBVTklP TiBBTEwgU0VMRUNUIGNoaWxkIEFTIGlkIGZyb20gdGVzdF9tYXhfcmVjdXJz IHR0LCBnIHdoZXJlIHR0LnBhcmVudD1nLmlkKQ0KK1NFTEVDVCAqIEZST00g ZzsNCisgaWQgIA0KKy0tLS0tDQorIDMwMA0KKyAzMTENCisgMzIxDQorIDMx Mg0KKyAzMjINCisgICAwDQorICAgMA0KKyg3IHJvd3MpDQorDQorV0lUSCBS RUNVUlNJVkUgZyhpZCkNCitBUyAoU0VMRUNUIDQwMDo6aW50IFVOSU9OIEFM TCBTRUxFQ1QgY2hpbGQgQVMgaWQgZnJvbSB0ZXN0X21heF9yZWN1cnMgdHQs IGcgd2hlcmUgdHQucGFyZW50PWcuaWQpDQorU0VMRUNUICogRlJPTSBnOw0K KyBpZCAgDQorLS0tLS0NCisgNDAwDQorIDQxMQ0KKyA0MjENCisgNDEyDQor ICAgMA0KKyAgIDANCisoNiByb3dzKQ0KKw0KZGlmZiAtLWdpdCBhL3NyYy90 ZXN0L3JlZ3Jlc3Mvc3FsL3dpdGguc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9z cWwvd2l0aC5zcWwNCmluZGV4IDNmZDU1ZjkuLmNlZGU2MTAgMTAwNjQ0DQot LS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC93aXRoLnNxbA0KKysrIGIvc3Jj L3Rlc3QvcmVncmVzcy9zcWwvd2l0aC5zcWwNCkBAIC0xMDE4LDMgKzEwMTgs NDUgQEAgRFJPUCBSVUxFIHlfcnVsZSBPTiB5Ow0KIGNyZWF0ZSB0YWJsZSBm b28gKHdpdGggYmF6KTsgIC0tIGZhaWwsIFdJVEggaXMgYSByZXNlcnZlZCB3 b3JkDQogY3JlYXRlIHRhYmxlIGZvbyAod2l0aCBvcmRpbmFsaXR5KTsgIC0t IGZhaWwsIFdJVEggaXMgYSByZXNlcnZlZCB3b3JkDQogd2l0aCBvcmRpbmFs aXR5IGFzIChzZWxlY3QgMSBhcyB4KSBzZWxlY3QgKiBmcm9tIG9yZGluYWxp dHk7DQorDQorLS0NCistLSBSRUNVUlNJT04gREVQVEgNCistLSBDaGVjayB0 aGUgbWF4X3JlY3Vyc2lvbl9kZXB0aCBwYXJhbWV0ZXINCistLQ0KK0NSRUFU RSBUQUJMRSB0ZXN0X21heF9yZWN1cnMgKCBwYXJlbnQgaW50ZWdlciwgCWNo aWxkIGludGVnZXIpOw0KKw0KK0lOU0VSVCBJTlRPIHRlc3RfbWF4X3JlY3Vy cyAocGFyZW50LCBjaGlsZCkgVkFMVUVTDQorLS0gaW5maW5pdGUgcmVjdXJz aW9uDQorKDEsMiksICgyLDEpLA0KKy0tanVzdCB0b28gZGVlcCBwYXRoDQor KDEwMCwxMDEpLCAoMTAxLDEwMiksICgxMDIsMTAzKSwgKDEwMywxMDQpLCAo MTA0LDEwNSksICgxMDUsMCksDQorLS1nb29kDQorKDIwMCwyMDEpLCAoMjAx LDIwMiksICgyMDIsMjAzKSwgKDIwMywyMDQpLCAoMjA0LDApLA0KKy0tIHRy ZWUtbGlrZSB0b28gbXVjaCBudW1iZXIgb2Ygbm9kZXMNCisoMzAwLDMxMSks ICgzMTEsMzEyKSwgKDMxMiwwKSwgKDMwMCwzMjEpLCAoMzIxLDMyMiksICgz MjIsMCksDQorLS0gdHJlZS1saWtlIGdvb2QNCisoNDAwLDQxMSksICg0MTEs NDEyKSwgKDQxMiwwKSwgKDQwMCw0MjEpLCAoNDIxLDApOw0KKw0KK1NFVCBt YXhfcmVjdXJzaW9uX2RlcHRoIHRvIDU7DQorU0hPVyBtYXhfcmVjdXJzaW9u X2RlcHRoOw0KKw0KKy0tIFN0cmVzcyB0ZXN0IGZvciBtYXhfcmVjdXJzaW9u X2RlcHRoIHBhcmFtZXRlcg0KK1dJVEggUkVDVVJTSVZFIGcoaWQpDQorQVMg KFNFTEVDVCAxOjppbnQgVU5JT04gQUxMIFNFTEVDVCBjaGlsZCBBUyBpZCBm cm9tIHRlc3RfbWF4X3JlY3VycyB0dCwgZyB3aGVyZSB0dC5wYXJlbnQ9Zy5p ZCkNCitTRUxFQ1QgKiBGUk9NIGc7DQorDQorV0lUSCBSRUNVUlNJVkUgZyhp ZCkNCitBUyAoU0VMRUNUIDEwMDo6aW50IFVOSU9OIEFMTCBTRUxFQ1QgY2hp bGQgQVMgaWQgZnJvbSB0ZXN0X21heF9yZWN1cnMgdHQsIGcgd2hlcmUgdHQu cGFyZW50PWcuaWQpDQorU0VMRUNUICogRlJPTSBnOw0KKw0KK1dJVEggUkVD VVJTSVZFIGcoaWQpDQorQVMgKFNFTEVDVCAyMDA6OmludCBVTklPTiBBTEwg U0VMRUNUIGNoaWxkIEFTIGlkIGZyb20gdGVzdF9tYXhfcmVjdXJzIHR0LCBn IHdoZXJlIHR0LnBhcmVudD1nLmlkKQ0KK1NFTEVDVCAqIEZST00gZzsNCisN CitXSVRIIFJFQ1VSU0lWRSBnKGlkKQ0KK0FTIChTRUxFQ1QgMzAwOjppbnQg VU5JT04gQUxMIFNFTEVDVCBjaGlsZCBBUyBpZCBmcm9tIHRlc3RfbWF4X3Jl Y3VycyB0dCwgZyB3aGVyZSB0dC5wYXJlbnQ9Zy5pZCkNCitTRUxFQ1QgKiBG Uk9NIGc7DQorDQorV0lUSCBSRUNVUlNJVkUgZyhpZCkNCitBUyAoU0VMRUNU IDQwMDo6aW50IFVOSU9OIEFMTCBTRUxFQ1QgY2hpbGQgQVMgaWQgZnJvbSB0 ZXN0X21heF9yZWN1cnMgdHQsIGcgd2hlcmUgdHQucGFyZW50PWcuaWQpDQor U0VMRUNUICogRlJPTSBnOw0K --------------000704050706050508090407 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 --------------000704050706050508090407--