Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1ghL6p-0000sT-NU for pgsql-hackers@arkaria.postgresql.org; Wed, 09 Jan 2019 21:09:56 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.89) (envelope-from ) id 1ghL6o-0004nc-0Y for pgsql-hackers@arkaria.postgresql.org; Wed, 09 Jan 2019 21:09:54 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1ghL6n-0004lF-KW for pgsql-hackers@lists.postgresql.org; Wed, 09 Jan 2019 21:09:53 +0000 Received: from mail-lf1-x141.google.com ([2a00:1450:4864:20::141]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1ghL6g-0002VT-6O for pgsql-hackers@postgresql.org; Wed, 09 Jan 2019 21:09:52 +0000 Received: by mail-lf1-x141.google.com with SMTP id u18so6698892lff.10 for ; Wed, 09 Jan 2019 13:09:45 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=2ndquadrant-com.20150623.gappssmtp.com; s=20150623; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=7WCCEdKzSeffyz6oVtGhRVjXZvOHF6U3Cc53H0Bi3k8=; b=DR7golvbM0oFlSzkiKmMOir67kpRdnfNm5Faf6VWpAINpjrWHAZoYykTnaSU5qr4YM GFDpqeo5gL/qXaGcCxxY8S/BnUwE9kTHy+YEI9LQHZyMsKdodPHu9HHMVY5FsIt2S2dN BFCXD9Rbt7W/rXsJBV/UE56RiDVRGx0C3WhQleWYybWhAzaYs2HihFcWuFi55PDwR3cu 7iu2GARpv3pFdhbG/Ddr2HzMrDX01HWZ6nL/IMldPYg3PfifiBgWKMN4Vv3cQIS/dNIt o2xfhi33UymtY8vj88q+KcHeG8E3A9GLnoAf1NOEZ7eUkY6vsxCfLi110RhhQBeYik12 iyLQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=7WCCEdKzSeffyz6oVtGhRVjXZvOHF6U3Cc53H0Bi3k8=; b=f6OzFQtONYaLhaud0E+TbGV+9ha5vz+JWRQ7QQ/OxxGHKpYME03wpZBWtRiD4SkHYT HjBS7ED/TPy88gRFoynErWP/xH51T7A4BggcxdXW6ZDT3cOsStZzzEVATrWPaShHh3W1 tSogU0uV1+IJL7V0zfXj7L2bO94vG4DkYCrimnXUp2cG1GA4Ryzi5TyziZ/zZrCgJglT cw5EH9zsXnMWMwr+2tu9MHRsVPyKloLnD2sb/ecrey6Koj+pBuZkXuLJR6nW2pX97W61 d3efMs75r9tRqUrdUn2U+YX/IJ8GPapufz+0SMNNvZ4qA10QJTHrTLuRN+txBJdZCx82 Z5Gw== X-Gm-Message-State: AJcUukcmrJV1MuYtI1PXn4plG3dQa3DoFfHRB2cRTQgJDQXRtvNmk9W2 R77DzzZqFS/d1Nd/Q+BdzvdvoCgjwmMlObnoGdKObg== X-Google-Smtp-Source: ALg8bN76QGQltV1fxZQ65/G8KdizVn45kxxClz5xCbNq26CLq6lgbQ+NbX7IDMZf/55Um1pzBu/DngPrhs7F3jtMbgg= X-Received: by 2002:a19:6806:: with SMTP id d6mr4168773lfc.48.1547068184908; Wed, 09 Jan 2019 13:09:44 -0800 (PST) MIME-Version: 1.0 References: <20190103163340.GA15803@britannica.bec.de> <20190106145317.GA17679@britannica.bec.de> <23854.1546802945@sss.pgh.pa.us> <20190106201157.GA546@britannica.bec.de> <28027.1546812539@sss.pgh.pa.us> <11173.1546895464@sss.pgh.pa.us> <20190107221204.lwm7yd5yyd7cwqjt@alap3.anarazel.de> <10068.1546907871@sss.pgh.pa.us> <20190108005258.npwbwg6x5wp3t55s@alap3.anarazel.de> <9d044a37-5e07-7ca1-683d-eb872fa4472d@2ndQuadrant.com> <31597.1546977876@sss.pgh.pa.us> <14562.1546986683@sss.pgh.pa.us> <26068.1547060655@sss.pgh.pa.us> In-Reply-To: <26068.1547060655@sss.pgh.pa.us> From: John Naylor Date: Wed, 9 Jan 2019 16:09:32 -0500 Message-ID: Subject: Re: reducing the footprint of ScanKeyword (was Re: Large writable variables) To: Tom Lane Cc: Andrew Dunstan , Andres Freund , Joerg Sonnenberger , David Rowley , PostgreSQL-development Content-Type: multipart/mixed; boundary="0000000000009b41c5057f0ce1f7" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk --0000000000009b41c5057f0ce1f7 Content-Type: text/plain; charset="UTF-8" On Wed, Jan 9, 2019 at 2:04 PM Tom Lane wrote: > > I wrote: > > John Naylor writes: > >> -There is a bit of a cognitive clash between $case_sensitive in > >> gen_keywordlist.pl and $case_insensitive in PerfectHash.pm. They each > >> make sense in their own file, but might it be worth using one or the > >> other? > Working on the fmgr-oid-lookup idea gave me the thought that > PerfectHash.pm ought to support fixed-length keys. Rather than start > adding random parameters to the function, I borrowed an idea from > PostgresNode.pm and made the options be keyword-style parameters. Now > the impedance mismatch about case sensitivity is handled with > > my $f = PerfectHash::generate_hash_function(\@keywords, $funcname, > case_insensitive => !$case_sensitive); > > which is at least a little clearer than before, though I'm not sure > if it entirely solves the problem. It's a bit clearer, but thinking about this some more, it makes sense for gen_keywordlist.pl to use $case_insensitive, because right now every instance of the var is "!$case_sensitive". In the attached (on top of v4), I change the command line option to --citext, and add the ability to negate it within the option, as '--no-citext'. It's kind of a double negative for the C-keywords invocation, but we can have the option for both cases, so we don't need to worry about what the default is (which is case_insensitive=1). -- John Naylor https://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services --0000000000009b41c5057f0ce1f7 Content-Type: text/x-patch; charset="US-ASCII"; name="adjust-case-option.patch" Content-Disposition: attachment; filename="adjust-case-option.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_jqpoerh90 ZGlmZiAtLWdpdCBhL3NyYy9jb21tb24vTWFrZWZpbGUgYi9zcmMvY29tbW9uL01ha2VmaWxlCmlu ZGV4IGQwYzJiOTcwZWIuLjVmOTMyN2RlNTkgMTAwNjQ0Ci0tLSBhL3NyYy9jb21tb24vTWFrZWZp bGUKKysrIGIvc3JjL2NvbW1vbi9NYWtlZmlsZQpAQCAtMTI0LDcgKzEyNCw3IEBAIGxpYnBnY29t bW9uX3Nydi5hOiAkKE9CSlNfU1JWKQogCiAjIGdlbmVyYXRlIFNRTCBrZXl3b3JkIGxvb2t1cCB0 YWJsZSB0byBiZSBpbmNsdWRlZCBpbnRvIGtleXdvcmRzKi5vLgoga3dsaXN0X2QuaDogJCh0b3Bf c3JjZGlyKS9zcmMvaW5jbHVkZS9wYXJzZXIva3dsaXN0LmggJChHRU5fS0VZV09SRExJU1RfREVQ UykKLQkkKEdFTl9LRVlXT1JETElTVCkgLS1leHRlcm4gJDwKKwkkKEdFTl9LRVlXT1JETElTVCkg LS1leHRlcm4gLS1jaXRleHQgJDwKIAogIyBEZXBlbmRlbmNpZXMgb2Yga2V5d29yZHMqLm8gbmVl ZCB0byBiZSBtYW5hZ2VkIGV4cGxpY2l0bHkgdG8gbWFrZSBzdXJlCiAjIHRoYXQgeW91IGRvbid0 IGdldCBicm9rZW4gcGFyc2luZyBjb2RlLCBldmVuIGluIGEgbm9uLWVuYWJsZS1kZXBlbmQgYnVp bGQuCmRpZmYgLS1naXQgYS9zcmMvaW50ZXJmYWNlcy9lY3BnL3ByZXByb2MvTWFrZWZpbGUgYi9z cmMvaW50ZXJmYWNlcy9lY3BnL3ByZXByb2MvTWFrZWZpbGUKaW5kZXggNmMwMmY5NzYyMi4uOTZk ZDc2MzE3ZiAxMDA2NDQKLS0tIGEvc3JjL2ludGVyZmFjZXMvZWNwZy9wcmVwcm9jL01ha2VmaWxl CisrKyBiL3NyYy9pbnRlcmZhY2VzL2VjcGcvcHJlcHJvYy9NYWtlZmlsZQpAQCAtNjAsMTAgKzYw LDEwIEBAIHByZXByb2MueTogLi4vLi4vLi4vYmFja2VuZC9wYXJzZXIvZ3JhbS55IHBhcnNlLnBs IGVjcGcuYWRkb25zIGVjcGcuaGVhZGVyIGVjcGcuCiAKICMgZ2VuZXJhdGUga2V5d29yZCBoZWFk ZXJzCiBjX2t3bGlzdF9kLmg6IGNfa3dsaXN0LmggJChHRU5fS0VZV09SRExJU1RfREVQUykKLQkk KEdFTl9LRVlXT1JETElTVCkgLS12YXJuYW1lIFNjYW5DS2V5d29yZHMgLS1jYXNlICQ8CisJJChH RU5fS0VZV09SRExJU1QpIC0tdmFybmFtZSBTY2FuQ0tleXdvcmRzIC0tbm8tY2l0ZXh0ICAkPAog CiBlY3BnX2t3bGlzdF9kLmg6IGVjcGdfa3dsaXN0LmggJChHRU5fS0VZV09SRExJU1RfREVQUykK LQkkKEdFTl9LRVlXT1JETElTVCkgLS12YXJuYW1lIFNjYW5FQ1BHS2V5d29yZHMgJDwKKwkkKEdF Tl9LRVlXT1JETElTVCkgLS12YXJuYW1lIFNjYW5FQ1BHS2V5d29yZHMgLS1jaXRleHQgJDwKIAog IyBGb3JjZSB0aGVzZSBkZXBlbmRlbmNpZXMgdG8gYmUga25vd24gZXZlbiB3aXRob3V0IGRlcGVu ZGVuY3kgaW5mbyBidWlsdDoKIGVjcGdfa2V5d29yZHMubyBjX2tleXdvcmRzLm8ga2V5d29yZHMu byBwcmVwcm9jLm8gcGdjLm8gcGFyc2VyLm86IHByZXByb2MuaApkaWZmIC0tZ2l0IGEvc3JjL3Bs L3BscGdzcWwvc3JjL01ha2VmaWxlIGIvc3JjL3BsL3BscGdzcWwvc3JjL01ha2VmaWxlCmluZGV4 IDhhMGYyOTQzMjMuLmJjNGVlNTA2ODIgMTAwNjQ0Ci0tLSBhL3NyYy9wbC9wbHBnc3FsL3NyYy9N YWtlZmlsZQorKysgYi9zcmMvcGwvcGxwZ3NxbC9zcmMvTWFrZWZpbGUKQEAgLTgwLDEwICs4MCwx MCBAQCBwbGVycmNvZGVzLmg6ICQodG9wX3NyY2Rpcikvc3JjL2JhY2tlbmQvdXRpbHMvZXJyY29k ZXMudHh0IGdlbmVyYXRlLXBsZXJyY29kZXMucAogCiAjIGdlbmVyYXRlIGtleXdvcmQgaGVhZGVy cyBmb3IgdGhlIHNjYW5uZXIKIHBsX3Jlc2VydmVkX2t3bGlzdF9kLmg6IHBsX3Jlc2VydmVkX2t3 bGlzdC5oICQoR0VOX0tFWVdPUkRMSVNUX0RFUFMpCi0JJChHRU5fS0VZV09SRExJU1QpIC0tdmFy bmFtZSBSZXNlcnZlZFBMS2V5d29yZHMgJDwKKwkkKEdFTl9LRVlXT1JETElTVCkgLS12YXJuYW1l IFJlc2VydmVkUExLZXl3b3JkcyAtLWNpdGV4dCAkPAogCiBwbF91bnJlc2VydmVkX2t3bGlzdF9k Lmg6IHBsX3VucmVzZXJ2ZWRfa3dsaXN0LmggJChHRU5fS0VZV09SRExJU1RfREVQUykKLQkkKEdF Tl9LRVlXT1JETElTVCkgLS12YXJuYW1lIFVucmVzZXJ2ZWRQTEtleXdvcmRzICQ8CisJJChHRU5f S0VZV09SRExJU1QpIC0tdmFybmFtZSBVbnJlc2VydmVkUExLZXl3b3JkcyAtLWNpdGV4dCAkPAog CiAKIGNoZWNrOiBzdWJtYWtlCmRpZmYgLS1naXQgYS9zcmMvdG9vbHMvZ2VuX2tleXdvcmRsaXN0 LnBsIGIvc3JjL3Rvb2xzL2dlbl9rZXl3b3JkbGlzdC5wbAppbmRleCAyNzQ0ZTFkYzI2Li45Mjc1 MTFkN2M0IDEwMDY0NAotLS0gYS9zcmMvdG9vbHMvZ2VuX2tleXdvcmRsaXN0LnBsCisrKyBiL3Ny Yy90b29scy9nZW5fa2V5d29yZGxpc3QucGwKQEAgLTM1LDEzICszNSwxMyBAQCB1c2UgUGVyZmVj dEhhc2g7CiAKIG15ICRvdXRwdXRfcGF0aCA9ICcnOwogbXkgJGV4dGVybiA9IDA7Ci1teSAkY2Fz ZV9zZW5zaXRpdmUgPSAwOworbXkgJGNhc2VfaW5zZW5zaXRpdmUgPSAxOwogbXkgJHZhcm5hbWUg PSAnU2NhbktleXdvcmRzJzsKIAogR2V0T3B0aW9ucygKIAknb3V0cHV0OnMnICAgICAgID0+IFwk b3V0cHV0X3BhdGgsCiAJJ2V4dGVybicgICAgICAgICA9PiBcJGV4dGVybiwKLQknY2FzZS1zZW5z aXRpdmUnID0+IFwkY2FzZV9zZW5zaXRpdmUsCisJJ2NpdGV4dCEnICAgICAgICA9PiBcJGNhc2Vf aW5zZW5zaXRpdmUsCiAJJ3Zhcm5hbWU6cycgICAgICA9PiBcJHZhcm5hbWUpIHx8IHVzYWdlKCk7 CiAKIG15ICRrd19pbnB1dF9maWxlID0gc2hpZnQgQEFSR1YgfHwgZGllICJObyBpbnB1dCBmaWxl LlxuIjsKQEAgLTk3LDcgKzk3LDcgQEAgd2hpbGUgKDwka2lmPikKIH0KIAogIyBXaGVuIGJlaW5n IGNhc2UtaW5zZW5zaXRpdmUsIGluc2lzdCB0aGF0IHRoZSBpbnB1dCBiZSBhbGwtbG93ZXItY2Fz ZS4KLWlmICghJGNhc2Vfc2Vuc2l0aXZlKQoraWYgKCRjYXNlX2luc2Vuc2l0aXZlKQogewogCWZv cmVhY2ggbXkgJGt3IChAa2V5d29yZHMpCiAJewpAQCAtMTU3LDcgKzE1Nyw3IEBAIHByaW50ZiAk a3dkZWYgIiNkZWZpbmUgJXNfTlVNX0tFWVdPUkRTICVkXG5cbiIsIHVjICR2YXJuYW1lLCBzY2Fs YXIgQGtleXdvcmRzOwogbXkgJGZ1bmNuYW1lID0gJHZhcm5hbWUgLiAiX2hhc2hfZnVuYyI7CiAK IG15ICRmID0gUGVyZmVjdEhhc2g6OmdlbmVyYXRlX2hhc2hfZnVuY3Rpb24oXEBrZXl3b3Jkcywg JGZ1bmNuYW1lLAotCWNhc2VfaW5zZW5zaXRpdmUgPT4gISRjYXNlX3NlbnNpdGl2ZSk7CisJY2Fz ZV9pbnNlbnNpdGl2ZSA9PiAkY2FzZV9pbnNlbnNpdGl2ZSk7CiAKIHByaW50ZiAka3dkZWYgcXF8 c3RhdGljICVzXG58LCAkZjsKIApAQCAtMTc4LDExICsxNzgsMTEgQEAgcHJpbnRmICRrd2RlZiAi I2VuZGlmXHRcdFx0XHRcdFx0XHQvKiAlc19IICovXG4iLCB1YyAkYmFzZV9maWxlbmFtZTsKIHN1 YiB1c2FnZQogewogCWRpZSA8PEVPTTsKLVVzYWdlOiBnZW5fa2V5d29yZGxpc3QucGwgWy0tb3V0 cHV0Ly1vIDxwYXRoPl0gWy0tdmFybmFtZS8tdiA8dmFybmFtZT5dIFstLWV4dGVybi8tZV0gaW5w dXRfZmlsZQorVXNhZ2U6IGdlbl9rZXl3b3JkbGlzdC5wbCBbLS1vdXRwdXQvLW8gPHBhdGg+XSBb LS12YXJuYW1lLy12IDx2YXJuYW1lPl0gWy0tZXh0ZXJuLy1lXSBbLS0obm8tKWNpdGV4dCBdIGlu cHV0X2ZpbGUKICAgICAtLW91dHB1dCAgIE91dHB1dCBkaXJlY3RvcnkgKGRlZmF1bHQgJy4nKQog ICAgIC0tdmFybmFtZSAgTmFtZSBmb3IgU2NhbktleXdvcmRMaXN0IHZhcmlhYmxlIChkZWZhdWx0 ICdTY2FuS2V5d29yZHMnKQogICAgIC0tZXh0ZXJuICAgQWxsb3cgdGhlIFNjYW5LZXl3b3JkTGlz dCB2YXJpYWJsZSB0byBiZSBnbG9iYWxseSB2aXNpYmxlCi0gICAgLS1jYXNlICAgICBLZXl3b3Jk IG1hdGNoaW5nIGlzIHRvIGJlIGNhc2Utc2Vuc2l0aXZlCisgICAgLS1jaXRleHQgICBLZXl3b3Jk IG1hdGNoaW5nIGlzIHRvIGJlIGNhc2UtaW5zZW5zaXRpdmUKIAogZ2VuX2tleXdvcmRsaXN0LnBs IHRyYW5zZm9ybXMgYSBsaXN0IG9mIGtleXdvcmRzIGludG8gYSBTY2FuS2V5d29yZExpc3QuCiBU aGUgb3V0cHV0IGZpbGVuYW1lIGlzIGRlcml2ZWQgZnJvbSB0aGUgaW5wdXQgZmlsZSBieSBpbnNl cnRpbmcgX2QsCg== --0000000000009b41c5057f0ce1f7--