Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtp (Exim 4.84_2) (envelope-from ) id 1duI9U-0002Y6-2i for pgsql-hackers@arkaria.postgresql.org; Tue, 19 Sep 2017 13:01:24 +0000 Received: from localhost ([127.0.0.1] helo=postgresql.org) by malur.postgresql.org with smtp (Exim 4.84_2) (envelope-from ) id 1duI9T-0005QO-F8 for pgsql-hackers@arkaria.postgresql.org; Tue, 19 Sep 2017 13:01:23 +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 1duI7r-0008Qy-BJ for pgsql-hackers@postgresql.org; Tue, 19 Sep 2017 12:59:43 +0000 Received: from mail-wm0-x22d.google.com ([2a00:1450:400c:c09::22d]) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.84_2) (envelope-from ) id 1duI7n-0007IP-Nl for pgsql-hackers@postgresql.org; Tue, 19 Sep 2017 12:59:41 +0000 Received: by mail-wm0-x22d.google.com with SMTP id v142so4964739wmv.5 for ; Tue, 19 Sep 2017 05:59:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=2ndquadrant-com.20150623.gappssmtp.com; s=20150623; h=to:from:subject:message-id:date:user-agent:mime-version :content-language; bh=s/BlA9U1cych13510H7mo/+2G6u0zu99G0eMt+QMFfg=; b=nO6UjlVntkCM61uLBQykPxmZrmbMFmnL2c3VuPy8fpyS9t1SKhXu6V+KTYDfkiQXGy /tb93EDI5XNve+e5L/+CaFstVTJAbTpWOMLaGjG+GBLaC0Du1uC7DkjghiUQyLvL+ThB i0ZMUALZ12695Ct/CIxxVlaXWk9NV5kbL4LgC/5l3FuguayMFQDVKPmUyIyIzvCw5tJb gy4oVYpwrgl1Sznqz8HWsRX3CxzMQz8Zr+Tu+NBwpb6BpgsStjHKgZf2l7GtcIITOp5y hGwPE1N2nOd1ar8A7T1ztsXytC4FPxeGwn87iuqd1oTC1SyIK2Dt70bJFDeotW7Ma99K 3YdQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:to:from:subject:message-id:date:user-agent :mime-version:content-language; bh=s/BlA9U1cych13510H7mo/+2G6u0zu99G0eMt+QMFfg=; b=T/FfGK1SphHhsypbGoSJ+iTe9N2HiZHhOnTzH/4cLB35pGXiC8s05FnH6zPRK7BxO7 PLMypWxQOO+l1SBiSQaSwH6/pdm/Gxe8UQ08T5R9+ltlvNyDAH7J93wgjLx0ekeLDMUU Pydilaruo4brNNO9yyxz1rZUy7OLidOKKvnu35zi7/imzebVwufDy7XIdoUG0xgn0sGE 3rdKpcFyoWz6Z+DEHVd9aV128Sktq+hcPKp6fXhfITIsVl/S7Bs+a56sDdP5fhiH0iHD FugY1BV3VKCvKZOD/M3XyZ0t+sVYk3NsC8ySE2W6X5kSaF2FMkl4uHWEEQ5mwimBeohD qmow== X-Gm-Message-State: AHPjjUhQxKzveXALVngMJQvN9Aq0QwB+E3uZjzUXXr4dKh8/MtreMGqU 9IFA6OzQ8a+kLf+nzX1pjKa0Z+//NNdeNxd4Sv5zb57w7r+eDZ/ThDKYZKjkFXxMt5RC0mXw09J ggWO8z0IoeW38hKWN0lvA1NVjklhONQRWgrsdMA7SkqjDWFatOP638RfNrUD/+1PgXnRIGYjUmz wUv/jfzKN63jQ= X-Google-Smtp-Source: AOwi7QAV8P4M0+4bW2d0yeV9ZXoLPPsT/B3vejXmq37DIj9OBw5Khm5rXpYjIB3GqjL3FDndNBVU2g== X-Received: by 10.28.188.86 with SMTP id m83mr961690wmf.83.1505825977073; Tue, 19 Sep 2017 05:59:37 -0700 (PDT) Received: from [10.137.2.17] ([212.24.157.174]) by smtp.gmail.com with ESMTPSA id a19sm10487619wra.64.2017.09.19.05.59.35 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 19 Sep 2017 05:59:36 -0700 (PDT) To: PostgreSQL-development From: Tomas Vondra Subject: user-defined numeric data types triggering ERROR: unsupported type Message-ID: Date: Tue, 19 Sep 2017 14:59:34 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.3.0 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="------------13791677A5209857C57CD807" Content-Language: en-US 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. --------------13791677A5209857C57CD807 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit Hi, while testing a custom data type FIXEDDECIMAL [1], implementing a numeric-like data type with limited range, I ran into a several issues that I suspect may not be entirely intentional / expected behavior. [1] https://github.com/2ndQuadrant/fixeddecimal Attached is a minimal subset of the extension SQL definition, which may be more convenient when looking into the issue. The most important issue is that when planning a simple query, the estimation of range queries on a column with the custom data type fails like this: test=# create table t (a fixeddecimal); CREATE TABLE test=# insert into t select random() from generate_series(1,100000); INSERT 0 100000 test=# analyze t; ANALYZE test=# select * from t where a > 0.9; ERROR: unsupported type: 16385 The error message here comes from convert_numeric_to_scalar, which gets called during histogram processing (ineq_histogram_selectivity) when approximating the histogram. convert_to_scalar does this: switch (valuetypeid) { ... case NUMERICOID: ... *scaledvalue = convert_numeric_to_scalar(value, valuetypid); *scaledlobound = convert_numeric_to_scalar(lobound, boundstypid); *scaledhibound = convert_numeric_to_scalar(hibound, boundstypid); return true; ... } The first call works fine, as the constant really is numeric (valuetypeid=1700). But the histogram boundaries are using the custom data type, causing the error as convert_numeric_to_scalar expects only a bunch of hard-coded data types. So it's pretty much guaranteed to fail with any user-defined data type. This seems a bit unfortunate :-( One solution would be to implement custom estimation function, replacing scalarltsel/scalargtsel. But that seems rather unnecessary, especially considering there is an implicit cast from fixeddecimal to numeric. Another thing is that when there's just an MCV, the estimation works just fine. So I see two basic ways to fix this: * Make convert_numeric_to_scalar smarter, so that it checks if there is an implicit cast to numeric, and fail only if it does not find one. * Make convert_to_scalar smarter, so that it does return false for unexpected data types, so that ineq_histogram_selectivity uses the default estimate of 0.5 (for that one bucket). Both options seem more favorable than what's happening currently. Is there anything I missed, making those fixes unacceptable? If anything, the fact that MCV estimates work while histogram does not makes this somewhat unpredictable - a change in the data distribution (or perhaps even just a different sample in ANALYZE) may result in sudden failures. I ran into one additional strange thing while investigating this. The attached SQL script defines two operator classes - fixeddecimal_ops and fixeddecimal_numeric_ops, defining (fixeddecimal,fixeddecimal) and (fixeddecimal,numeric) operators. Dropping one of those operator classes changes the estimates in a somewhat suspicious ways. When only fixeddecimal_ops is defined, we get this: test=# explain select * from t where a > 0.1; QUERY PLAN -------------------------------------------------------- Seq Scan on t (cost=0.00..1943.00 rows=33333 width=8) Filter: ((a)::numeric > 0.1) (2 rows) That is, we get the default estimate for inequality clauses, 33%. But when only fixeddecimal_numeric_ops, we get this: test=# explain select * from t where a > 0.1; QUERY PLAN -------------------------------------------------------- Seq Scan on t (cost=0.00..1693.00 rows=50000 width=8) Filter: (a > 0.1) (2 rows) That is, we get 50% estimate, because that's what scalarineqsel uses when it ineq_histogram_selectivity can't compute selectivity from a histogram for some reason. Wouldn't it make it more sense to use the default 33% estimate here? regards -- Tomas Vondra http://www.2ndQuadrant.com PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services --------------13791677A5209857C57CD807 Content-Type: application/sql; name="fixeddecimal-minimal.sql" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="fixeddecimal-minimal.sql" Ci0tLS0tLS0tLS0tLS0tLS0tLQotLSBGSVhFRERFQ0lNQUwgLS0KLS0tLS0t LS0tLS0tLS0tLS0tCgpDUkVBVEUgVFlQRSBGSVhFRERFQ0lNQUw7CgpDUkVB VEUgRlVOQ1RJT04gZml4ZWRkZWNpbWFsaW4oY3N0cmluZywgb2lkLCBpbnQ0 KQpSRVRVUk5TIEZJWEVEREVDSU1BTApBUyAnZml4ZWRkZWNpbWFsJywgJ2Zp eGVkZGVjaW1hbGluJwpMQU5HVUFHRSBDIElNTVVUQUJMRSBTVFJJQ1Q7CgpD UkVBVEUgRlVOQ1RJT04gZml4ZWRkZWNpbWFsb3V0KGZpeGVkZGVjaW1hbCkK UkVUVVJOUyBjc3RyaW5nCkFTICdmaXhlZGRlY2ltYWwnLCAnZml4ZWRkZWNp bWFsb3V0JwpMQU5HVUFHRSBDIElNTVVUQUJMRSBTVFJJQ1Q7CgpDUkVBVEUg RlVOQ1RJT04gZml4ZWRkZWNpbWFscmVjdihpbnRlcm5hbCkKUkVUVVJOUyBG SVhFRERFQ0lNQUwKQVMgJ2ZpeGVkZGVjaW1hbCcsICdmaXhlZGRlY2ltYWxy ZWN2JwpMQU5HVUFHRSBDIElNTVVUQUJMRSBTVFJJQ1Q7CgpDUkVBVEUgRlVO Q1RJT04gZml4ZWRkZWNpbWFsc2VuZChGSVhFRERFQ0lNQUwpClJFVFVSTlMg Ynl0ZWEKQVMgJ2ZpeGVkZGVjaW1hbCcsICdmaXhlZGRlY2ltYWxzZW5kJwpM QU5HVUFHRSBDIElNTVVUQUJMRSBTVFJJQ1Q7CgpDUkVBVEUgRlVOQ1RJT04g Zml4ZWRkZWNpbWFsdHlwbW9kaW4oX2NzdHJpbmcpClJFVFVSTlMgSU5UNApB UyAnZml4ZWRkZWNpbWFsJywgJ2ZpeGVkZGVjaW1hbHR5cG1vZGluJwpMQU5H VUFHRSBDIElNTVVUQUJMRSBTVFJJQ1Q7CgpDUkVBVEUgRlVOQ1RJT04gZml4 ZWRkZWNpbWFsdHlwbW9kb3V0KElOVDQpClJFVFVSTlMgY3N0cmluZwpBUyAn Zml4ZWRkZWNpbWFsJywgJ2ZpeGVkZGVjaW1hbHR5cG1vZG91dCcKTEFOR1VB R0UgQyBJTU1VVEFCTEUgU1RSSUNUOwoKCkNSRUFURSBUWVBFIEZJWEVEREVD SU1BTCAoCiAgICBJTlBVVCAgICAgICAgICA9IGZpeGVkZGVjaW1hbGluLAog ICAgT1VUUFVUICAgICAgICAgPSBmaXhlZGRlY2ltYWxvdXQsCiAgICBSRUNF SVZFICAgICAgICA9IGZpeGVkZGVjaW1hbHJlY3YsCiAgICBTRU5EICAgICAg ICAgICA9IGZpeGVkZGVjaW1hbHNlbmQsCglUWVBNT0RfSU4gICAgICA9IGZp eGVkZGVjaW1hbHR5cG1vZGluLAoJVFlQTU9EX09VVCAgICAgPSBmaXhlZGRl Y2ltYWx0eXBtb2RvdXQsCiAgICBJTlRFUk5BTExFTkdUSCA9IDgsCglBTElH Tk1FTlQgICAgICA9ICdkb3VibGUnLAogICAgU1RPUkFHRSAgICAgICAgPSBw bGFpbiwKICAgIENBVEVHT1JZICAgICAgID0gJ04nLAogICAgUFJFRkVSUkVE ICAgICAgPSBmYWxzZSwKICAgIENPTExBVEFCTEUgICAgID0gZmFsc2UsCglQ QVNTRURCWVZBTFVFIC0tIEJ1dCBub3QgYWx3YXlzLi4gWFhYIGZpeCB0aGF0 LgopOwoKLS0KLS0gQ2FzdHMKLS0KCkNSRUFURSBGVU5DVElPTiBkdG9maXhl ZGRlY2ltYWwoRE9VQkxFIFBSRUNJU0lPTikKUkVUVVJOUyBGSVhFRERFQ0lN QUwKQVMgJ2ZpeGVkZGVjaW1hbCcsICdkdG9maXhlZGRlY2ltYWwnCkxBTkdV QUdFIEMgSU1NVVRBQkxFIFNUUklDVDsKCkNSRUFURSBGVU5DVElPTiBmaXhl ZGRlY2ltYWxfbnVtZXJpYyhGSVhFRERFQ0lNQUwpClJFVFVSTlMgTlVNRVJJ QwpBUyAnZml4ZWRkZWNpbWFsJywgJ2ZpeGVkZGVjaW1hbF9udW1lcmljJwpM QU5HVUFHRSBDIElNTVVUQUJMRSBTVFJJQ1Q7CgpDUkVBVEUgRlVOQ1RJT04g bnVtZXJpY19maXhlZGRlY2ltYWwoTlVNRVJJQykKUkVUVVJOUyBGSVhFRERF Q0lNQUwKQVMgJ2ZpeGVkZGVjaW1hbCcsICdudW1lcmljX2ZpeGVkZGVjaW1h bCcKTEFOR1VBR0UgQyBJTU1VVEFCTEUgU1RSSUNUOwoKQ1JFQVRFIENBU1Qg KERPVUJMRSBQUkVDSVNJT04gQVMgRklYRURERUNJTUFMKQoJV0lUSCBGVU5D VElPTiBkdG9maXhlZGRlY2ltYWwgKERPVUJMRSBQUkVDSVNJT04pIEFTIEFT U0lHTk1FTlQ7CgpDUkVBVEUgQ0FTVCAoRklYRURERUNJTUFMIEFTIE5VTUVS SUMpCglXSVRIIEZVTkNUSU9OIGZpeGVkZGVjaW1hbF9udW1lcmljIChGSVhF RERFQ0lNQUwpIEFTIElNUExJQ0lUOwoKQ1JFQVRFIENBU1QgKE5VTUVSSUMg QVMgRklYRURERUNJTUFMKQoJV0lUSCBGVU5DVElPTiBudW1lcmljX2ZpeGVk ZGVjaW1hbCAoTlVNRVJJQykgQVMgQVNTSUdOTUVOVDsKCgotLSBGSVhFRERF Q0lNQUwsIEZJWEVEREVDSU1BTApDUkVBVEUgRlVOQ1RJT04gZml4ZWRkZWNp bWFsZXEoRklYRURERUNJTUFMLCBGSVhFRERFQ0lNQUwpClJFVFVSTlMgYm9v bApBUyAnZml4ZWRkZWNpbWFsJywgJ2ZpeGVkZGVjaW1hbGVxJwpMQU5HVUFH RSBDIElNTVVUQUJMRSBTVFJJQ1Q7CgpDUkVBVEUgRlVOQ1RJT04gZml4ZWRk ZWNpbWFsbmUoRklYRURERUNJTUFMLCBGSVhFRERFQ0lNQUwpClJFVFVSTlMg Ym9vbApBUyAnZml4ZWRkZWNpbWFsJywgJ2ZpeGVkZGVjaW1hbG5lJwpMQU5H VUFHRSBDIElNTVVUQUJMRSBTVFJJQ1Q7CgpDUkVBVEUgRlVOQ1RJT04gZml4 ZWRkZWNpbWFsbHQoRklYRURERUNJTUFMLCBGSVhFRERFQ0lNQUwpClJFVFVS TlMgYm9vbApBUyAnZml4ZWRkZWNpbWFsJywgJ2ZpeGVkZGVjaW1hbGx0JwpM QU5HVUFHRSBDIElNTVVUQUJMRSBTVFJJQ1Q7CgpDUkVBVEUgRlVOQ1RJT04g Zml4ZWRkZWNpbWFsbGUoRklYRURERUNJTUFMLCBGSVhFRERFQ0lNQUwpClJF VFVSTlMgYm9vbApBUyAnZml4ZWRkZWNpbWFsJywgJ2ZpeGVkZGVjaW1hbGxl JwpMQU5HVUFHRSBDIElNTVVUQUJMRSBTVFJJQ1Q7CgpDUkVBVEUgRlVOQ1RJ T04gZml4ZWRkZWNpbWFsZ3QoRklYRURERUNJTUFMLCBGSVhFRERFQ0lNQUwp ClJFVFVSTlMgYm9vbApBUyAnZml4ZWRkZWNpbWFsJywgJ2ZpeGVkZGVjaW1h bGd0JwpMQU5HVUFHRSBDIElNTVVUQUJMRSBTVFJJQ1Q7CgpDUkVBVEUgRlVO Q1RJT04gZml4ZWRkZWNpbWFsZ2UoRklYRURERUNJTUFMLCBGSVhFRERFQ0lN QUwpClJFVFVSTlMgYm9vbApBUyAnZml4ZWRkZWNpbWFsJywgJ2ZpeGVkZGVj aW1hbGdlJwpMQU5HVUFHRSBDIElNTVVUQUJMRSBTVFJJQ1Q7CgpDUkVBVEUg RlVOQ1RJT04gZml4ZWRkZWNpbWFsdW0oRklYRURERUNJTUFMKQpSRVRVUk5T IEZJWEVEREVDSU1BTApBUyAnZml4ZWRkZWNpbWFsJywgJ2ZpeGVkZGVjaW1h bHVtJwpMQU5HVUFHRSBDIElNTVVUQUJMRSBTVFJJQ1Q7CgpDUkVBVEUgRlVO Q1RJT04gZml4ZWRkZWNpbWFscGwoRklYRURERUNJTUFMLCBGSVhFRERFQ0lN QUwpClJFVFVSTlMgRklYRURERUNJTUFMCkFTICdmaXhlZGRlY2ltYWwnLCAn Zml4ZWRkZWNpbWFscGwnCkxBTkdVQUdFIEMgSU1NVVRBQkxFIFNUUklDVDsK CkNSRUFURSBGVU5DVElPTiBmaXhlZGRlY2ltYWxfY21wKEZJWEVEREVDSU1B TCwgRklYRURERUNJTUFMKQpSRVRVUk5TIElOVDQKQVMgJ2ZpeGVkZGVjaW1h bCcsICdmaXhlZGRlY2ltYWxfY21wJwpMQU5HVUFHRSBDIElNTVVUQUJMRSBT VFJJQ1Q7CgotLQotLSBPcGVyYXRvcnMuCi0tCgpDUkVBVEUgT1BFUkFUT1Ig PSAoCiAgICBMRUZUQVJHICAgID0gRklYRURERUNJTUFMLAogICAgUklHSFRB UkcgICA9IEZJWEVEREVDSU1BTCwKICAgIENPTU1VVEFUT1IgPSA9LAogICAg TkVHQVRPUiAgICA9IDw+LAogICAgUFJPQ0VEVVJFICA9IGZpeGVkZGVjaW1h bGVxLAogICAgUkVTVFJJQ1QgICA9IGVxc2VsLAogICAgSk9JTiAgICAgICA9 IGVxam9pbnNlbCwKICAgIE1FUkdFUwopOwoKQ1JFQVRFIE9QRVJBVE9SIDw+ ICgKICAgIExFRlRBUkcgICAgPSBGSVhFRERFQ0lNQUwsCiAgICBSSUdIVEFS RyAgID0gRklYRURERUNJTUFMLAogICAgTkVHQVRPUiAgICA9ID0sCiAgICBD T01NVVRBVE9SID0gPD4sCiAgICBQUk9DRURVUkUgID0gZml4ZWRkZWNpbWFs bmUsCiAgICBSRVNUUklDVCAgID0gbmVxc2VsLAogICAgSk9JTiAgICAgICA9 IG5lcWpvaW5zZWwKKTsKCkNSRUFURSBPUEVSQVRPUiA8ICgKICAgIExFRlRB UkcgICAgPSBGSVhFRERFQ0lNQUwsCiAgICBSSUdIVEFSRyAgID0gRklYRURE RUNJTUFMLAogICAgTkVHQVRPUiAgICA9ID49LAogICAgQ09NTVVUQVRPUiA9 ID4sCiAgICBQUk9DRURVUkUgID0gZml4ZWRkZWNpbWFsbHQsCiAgICBSRVNU UklDVCAgID0gc2NhbGFybHRzZWwsCiAgICBKT0lOICAgICAgID0gc2NhbGFy bHRqb2luc2VsCik7CgpDUkVBVEUgT1BFUkFUT1IgPD0gKAogICAgTEVGVEFS RyAgICA9IEZJWEVEREVDSU1BTCwKICAgIFJJR0hUQVJHICAgPSBGSVhFRERF Q0lNQUwsCiAgICBORUdBVE9SICAgID0gPiwKICAgIENPTU1VVEFUT1IgPSA+ PSwKICAgIFBST0NFRFVSRSAgPSBmaXhlZGRlY2ltYWxsZSwKICAgIFJFU1RS SUNUICAgPSBzY2FsYXJsdHNlbCwKICAgIEpPSU4gICAgICAgPSBzY2FsYXJs dGpvaW5zZWwKKTsKCkNSRUFURSBPUEVSQVRPUiA+PSAoCiAgICBMRUZUQVJH ICAgID0gRklYRURERUNJTUFMLAogICAgUklHSFRBUkcgICA9IEZJWEVEREVD SU1BTCwKICAgIE5FR0FUT1IgICAgPSA8LAogICAgQ09NTVVUQVRPUiA9IDw9 LAogICAgUFJPQ0VEVVJFICA9IGZpeGVkZGVjaW1hbGdlLAogICAgUkVTVFJJ Q1QgICA9IHNjYWxhcmd0c2VsLAogICAgSk9JTiAgICAgICA9IHNjYWxhcmd0 am9pbnNlbAopOwoKQ1JFQVRFIE9QRVJBVE9SID4gKAogICAgTEVGVEFSRyAg ICA9IEZJWEVEREVDSU1BTCwKICAgIFJJR0hUQVJHICAgPSBGSVhFRERFQ0lN QUwsCiAgICBORUdBVE9SICAgID0gPD0sCiAgICBDT01NVVRBVE9SID0gPCwK ICAgIFBST0NFRFVSRSAgPSBmaXhlZGRlY2ltYWxndCwKICAgIFJFU1RSSUNU ICAgPSBzY2FsYXJndHNlbCwKICAgIEpPSU4gICAgICAgPSBzY2FsYXJndGpv aW5zZWwKKTsKCkNSRUFURSBPUEVSQVRPUiBDTEFTUyBmaXhlZGRlY2ltYWxf b3BzCkRFRkFVTFQgRk9SIFRZUEUgRklYRURERUNJTUFMIFVTSU5HIGJ0cmVl IEFTCiAgICBPUEVSQVRPUiAgICAxICAgPCAgKEZJWEVEREVDSU1BTCwgRklY RURERUNJTUFMKSwKICAgIE9QRVJBVE9SICAgIDIgICA8PSAoRklYRURERUNJ TUFMLCBGSVhFRERFQ0lNQUwpLAogICAgT1BFUkFUT1IgICAgMyAgID0gIChG SVhFRERFQ0lNQUwsIEZJWEVEREVDSU1BTCksCiAgICBPUEVSQVRPUiAgICA0 ICAgPj0gKEZJWEVEREVDSU1BTCwgRklYRURERUNJTUFMKSwKICAgIE9QRVJB VE9SICAgIDUgICA+ICAoRklYRURERUNJTUFMLCBGSVhFRERFQ0lNQUwpLAog ICAgRlVOQ1RJT04gICAgMSAgIGZpeGVkZGVjaW1hbF9jbXAoRklYRURERUNJ TUFMLCBGSVhFRERFQ0lNQUwpOwoKLS0gRklYRURERUNJTUFMLCBOVU1FUklD CkNSRUFURSBGVU5DVElPTiBmaXhlZGRlY2ltYWxfbnVtZXJpY19jbXAoRklY RURERUNJTUFMLCBOVU1FUklDKQpSRVRVUk5TIElOVDQKQVMgJ2ZpeGVkZGVj aW1hbCcsICdmaXhlZGRlY2ltYWxfbnVtZXJpY19jbXAnCkxBTkdVQUdFIEMg SU1NVVRBQkxFIFNUUklDVDsKCkNSRUFURSBGVU5DVElPTiBudW1lcmljX2Zp eGVkZGVjaW1hbF9jbXAoTlVNRVJJQywgRklYRURERUNJTUFMKQpSRVRVUk5T IElOVDQKQVMgJ2ZpeGVkZGVjaW1hbCcsICdudW1lcmljX2ZpeGVkZGVjaW1h bF9jbXAnCkxBTkdVQUdFIEMgSU1NVVRBQkxFIFNUUklDVDsKCkNSRUFURSBG VU5DVElPTiBmaXhlZGRlY2ltYWxfbnVtZXJpY19lcShGSVhFRERFQ0lNQUws IE5VTUVSSUMpClJFVFVSTlMgYm9vbApBUyAnZml4ZWRkZWNpbWFsJywgJ2Zp eGVkZGVjaW1hbF9udW1lcmljX2VxJwpMQU5HVUFHRSBDIElNTVVUQUJMRSBT VFJJQ1Q7CgpDUkVBVEUgRlVOQ1RJT04gZml4ZWRkZWNpbWFsX251bWVyaWNf bmUoRklYRURERUNJTUFMLCBOVU1FUklDKQpSRVRVUk5TIGJvb2wKQVMgJ2Zp eGVkZGVjaW1hbCcsICdmaXhlZGRlY2ltYWxfbnVtZXJpY19uZScKTEFOR1VB R0UgQyBJTU1VVEFCTEUgU1RSSUNUOwoKQ1JFQVRFIEZVTkNUSU9OIGZpeGVk ZGVjaW1hbF9udW1lcmljX2x0KEZJWEVEREVDSU1BTCwgTlVNRVJJQykKUkVU VVJOUyBib29sCkFTICdmaXhlZGRlY2ltYWwnLCAnZml4ZWRkZWNpbWFsX251 bWVyaWNfbHQnCkxBTkdVQUdFIEMgSU1NVVRBQkxFIFNUUklDVDsKCkNSRUFU RSBGVU5DVElPTiBmaXhlZGRlY2ltYWxfbnVtZXJpY19sZShGSVhFRERFQ0lN QUwsIE5VTUVSSUMpClJFVFVSTlMgYm9vbApBUyAnZml4ZWRkZWNpbWFsJywg J2ZpeGVkZGVjaW1hbF9udW1lcmljX2xlJwpMQU5HVUFHRSBDIElNTVVUQUJM RSBTVFJJQ1Q7CgpDUkVBVEUgRlVOQ1RJT04gZml4ZWRkZWNpbWFsX251bWVy aWNfZ3QoRklYRURERUNJTUFMLCBOVU1FUklDKQpSRVRVUk5TIGJvb2wKQVMg J2ZpeGVkZGVjaW1hbCcsICdmaXhlZGRlY2ltYWxfbnVtZXJpY19ndCcKTEFO R1VBR0UgQyBJTU1VVEFCTEUgU1RSSUNUOwoKQ1JFQVRFIEZVTkNUSU9OIGZp eGVkZGVjaW1hbF9udW1lcmljX2dlKEZJWEVEREVDSU1BTCwgTlVNRVJJQykK UkVUVVJOUyBib29sCkFTICdmaXhlZGRlY2ltYWwnLCAnZml4ZWRkZWNpbWFs X251bWVyaWNfZ2UnCkxBTkdVQUdFIEMgSU1NVVRBQkxFIFNUUklDVDsKCkNS RUFURSBPUEVSQVRPUiA9ICgKICAgIExFRlRBUkcgICAgPSBGSVhFRERFQ0lN QUwsCiAgICBSSUdIVEFSRyAgID0gTlVNRVJJQywKICAgIENPTU1VVEFUT1Ig PSA9LAogICAgTkVHQVRPUiAgICA9IDw+LAogICAgUFJPQ0VEVVJFICA9IGZp eGVkZGVjaW1hbF9udW1lcmljX2VxLAogICAgUkVTVFJJQ1QgICA9IGVxc2Vs LAogICAgSk9JTiAgICAgICA9IGVxam9pbnNlbCwKICAgIE1FUkdFUwopOwoK Q1JFQVRFIE9QRVJBVE9SIDw+ICgKICAgIExFRlRBUkcgICAgPSBGSVhFRERF Q0lNQUwsCiAgICBSSUdIVEFSRyAgID0gTlVNRVJJQywKICAgIE5FR0FUT1Ig ICAgPSA9LAogICAgQ09NTVVUQVRPUiA9IDw+LAogICAgUFJPQ0VEVVJFICA9 IGZpeGVkZGVjaW1hbF9udW1lcmljX25lLAogICAgUkVTVFJJQ1QgICA9IG5l cXNlbCwKICAgIEpPSU4gICAgICAgPSBuZXFqb2luc2VsCik7CgpDUkVBVEUg T1BFUkFUT1IgPCAoCiAgICBMRUZUQVJHICAgID0gRklYRURERUNJTUFMLAog ICAgUklHSFRBUkcgICA9IE5VTUVSSUMsCiAgICBORUdBVE9SICAgID0gPj0s CiAgICBDT01NVVRBVE9SID0gPiwKICAgIFBST0NFRFVSRSAgPSBmaXhlZGRl Y2ltYWxfbnVtZXJpY19sdCwKICAgIFJFU1RSSUNUICAgPSBzY2FsYXJsdHNl bCwKICAgIEpPSU4gICAgICAgPSBzY2FsYXJsdGpvaW5zZWwKKTsKCkNSRUFU RSBPUEVSQVRPUiA8PSAoCiAgICBMRUZUQVJHICAgID0gRklYRURERUNJTUFM LAogICAgUklHSFRBUkcgICA9IE5VTUVSSUMsCiAgICBORUdBVE9SICAgID0g PiwKICAgIENPTU1VVEFUT1IgPSA+PSwKICAgIFBST0NFRFVSRSAgPSBmaXhl ZGRlY2ltYWxfbnVtZXJpY19sZSwKICAgIFJFU1RSSUNUICAgPSBzY2FsYXJs dHNlbCwKICAgIEpPSU4gICAgICAgPSBzY2FsYXJsdGpvaW5zZWwKKTsKCkNS RUFURSBPUEVSQVRPUiA+PSAoCiAgICBMRUZUQVJHICAgID0gRklYRURERUNJ TUFMLAogICAgUklHSFRBUkcgICA9IE5VTUVSSUMsCiAgICBORUdBVE9SICAg ID0gPCwKICAgIENPTU1VVEFUT1IgPSA8PSwKICAgIFBST0NFRFVSRSAgPSBm aXhlZGRlY2ltYWxfbnVtZXJpY19nZSwKICAgIFJFU1RSSUNUICAgPSBzY2Fs YXJndHNlbCwKICAgIEpPSU4gICAgICAgPSBzY2FsYXJndGpvaW5zZWwKKTsK CkNSRUFURSBPUEVSQVRPUiA+ICgKICAgIExFRlRBUkcgICAgPSBGSVhFRERF Q0lNQUwsCiAgICBSSUdIVEFSRyAgID0gTlVNRVJJQywKICAgIE5FR0FUT1Ig ICAgPSA8PSwKICAgIENPTU1VVEFUT1IgPSA8LAogICAgUFJPQ0VEVVJFICA9 IGZpeGVkZGVjaW1hbF9udW1lcmljX2d0LAogICAgUkVTVFJJQ1QgICA9IHNj YWxhcmd0c2VsLAogICAgSk9JTiAgICAgICA9IHNjYWxhcmd0am9pbnNlbAop OwoKQ1JFQVRFIE9QRVJBVE9SIENMQVNTIGZpeGVkZGVjaW1hbF9udW1lcmlj X29wcwpGT1IgVFlQRSBGSVhFRERFQ0lNQUwgVVNJTkcgYnRyZWUgQVMKICAg IE9QRVJBVE9SICAgIDEgICA8ICAoRklYRURERUNJTUFMLCBOVU1FUklDKSwK ICAgIE9QRVJBVE9SICAgIDIgICA8PSAoRklYRURERUNJTUFMLCBOVU1FUklD KSwKICAgIE9QRVJBVE9SICAgIDMgICA9ICAoRklYRURERUNJTUFMLCBOVU1F UklDKSwKICAgIE9QRVJBVE9SICAgIDQgICA+PSAoRklYRURERUNJTUFMLCBO VU1FUklDKSwKICAgIE9QRVJBVE9SICAgIDUgICA+ICAoRklYRURERUNJTUFM LCBOVU1FUklDKSwKICAgIEZVTkNUSU9OICAgIDEgICBmaXhlZGRlY2ltYWxf bnVtZXJpY19jbXAoRklYRURERUNJTUFMLCBOVU1FUklDKTsK --------------13791677A5209857C57CD807 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 --------------13791677A5209857C57CD807--