Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cY2qO-0003vI-Lh for pgsql-hackers@arkaria.postgresql.org; Mon, 30 Jan 2017 03:41:29 +0000 Received: from localhost ([127.0.0.1] helo=postgresql.org) by malur.postgresql.org with smtp (Exim 4.84_2) (envelope-from ) id 1cY2qN-0004UO-C3 for pgsql-hackers@arkaria.postgresql.org; Mon, 30 Jan 2017 03:41:27 +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_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1cY2ov-0002q1-1h for pgsql-hackers@postgresql.org; Mon, 30 Jan 2017 03:39:57 +0000 Received: from mail-bn3nam01on0054.outbound.protection.outlook.com ([104.47.33.54] helo=NAM01-BN3-obe.outbound.protection.outlook.com) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1cY2om-00082P-4P for pgsql-hackers@postgresql.org; Mon, 30 Jan 2017 03:39:56 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=BlueTreble.onmicrosoft.com; s=selector1-bluetreble-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=DsoOdMD/JEi6F2jCfOtQ0Z3vtJdd5vFUZ5RIoXurLH0=; b=fE+wg+EHL1THiIwyWU8h42TKmbo54wpSi96aI+6mrBSXSye8rKCbxUtmGtvzO5XsuDgoEsmcUc2URDlvmJot0m4vyqXbBXj7kyt1Kgs+NINxGrNKT9BVUdnoD2QbD6wVACqWw5+EEgnEPV11rvg+b1OcIpLgMbzbT1b7o83yCE0= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Jim.Nasby@bluetreble.com; Received: from decina.local (12.207.20.2) by CY4PR11MB1640.namprd11.prod.outlook.com (10.172.71.16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.860.13; Mon, 30 Jan 2017 03:39:44 +0000 Subject: Re: \if, \elseif, \else, \endif (was Re: PSQL commands: \quit_if, \quit_unless) To: Fabien COELHO , Corey Huinker References: CC: Daniel Verite , PostgreSQL From: Jim Nasby Message-ID: Date: Sun, 29 Jan 2017 15:49:18 -0600 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:45.0) Gecko/20100101 Thunderbird/45.6.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset="windows-1252"; format=flowed Content-Transfer-Encoding: 7bit X-Originating-IP: [12.207.20.2] X-ClientProxiedBy: CY1PR01CA0036.prod.exchangelabs.com (10.163.94.46) To CY4PR11MB1640.namprd11.prod.outlook.com (10.172.71.16) X-MS-Office365-Filtering-Correlation-Id: 08d06184-bcff-482d-8c3e-08d448c1a1a5 X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001);SRVR:CY4PR11MB1640; X-Microsoft-Exchange-Diagnostics: 1;CY4PR11MB1640;3:x2dAkR2tFnh1DR1ZV62WKSrJa5GC8j+h0JcpPhwlVUPoWwlJW39P/mbbF7VE6lCzXzC5mMrep1bJ4PK68q0+N+SU87KvzCvk2Dd0x/0YIvsu7U2s4jSPdJP0f7XS/cDfbpmbx1ERPAUdrySAsBMXBdyetoc/3wkEnNoZrEH9D6iHLKdBJkOxHMXm4RIPFF+jhkxSEf4MHKe3FuR0TUzfMc2vEbwiVck5VF2kgiO0VZkiQyksVYRKPL/zEm2RcGviLl2nJspVthWWUp1gGJrGgg== X-Microsoft-Exchange-Diagnostics: 1;CY4PR11MB1640;25:uEV9J5FSnp6b1EuxI2HqD6oGD8XXsEmvamMvq0dgGex8rfxWKs6X00U4HY28ZBxJdrCnlD6jwBt3QGjqv76DrcKBwGxkvyHVrF/Y0jQLQOxnVuq7+I1tc5HQI28v6LDU8E8HYXzq2upVvv9+96esBRl1uIljL1/P7kuxlktxOkcvKckAzxzg4Angj3AC0Sov7YU1XdRT2jg32QVnHM/FP7HYEpsKBs6z0QmUMhzD+jNCi+AZVkLCYNXO1RaJj1ohiJzEPdjqU+C1EdGfiLpnZecuy7+ezRqwN8wH08vJu7oFE+RUqm53Mb2zbSPKaV2QcFT8XTD0NVssRXTBMWnnm/MAt3vWw1zCt1QzrxNZQApd05pWCuGJu+xQ7mvDJvzwXpJrc4N8EFvRcF5omPObILeEwJmd6/Z+GqEI0RQ4I4/fnLF4fSoa9v7yJOHMg6Nmsd8+oJWwQ+AGN/y7syZ03C6rbV7V6YVnaaijEtSFK51QVl1+wMcg/3sBishQTYfYXjSOwUWDcI8uSD7RNb/nh71UCO6i6Vn02vbQMvZwWp0Q1XO27JkzLf5Vw9s0djj/qJLb6Nb2hKiFOTgD31H6CBgah7p5xOJBjc6vVlHGL6oJLgrjFREh1akzCB8CQxA83s9OwWawdGTlUih2atDe9AJpQxNs9cYuw8/FL1eApyxaRxuQjeBd7bKeFnupv2PA5X6tGGo8kpKBR4T12ahBQbQDfiXFPbc+lQvJB84iKMdLdUEAONKGe4bfYEHrW/B2Mxm/7LeBE9XoZxzQyJv5LMdeZzKnTZmu7v2/4DRC1XLtNbduksAybbJBeZKE9RF5iNzkyq9CnFxFPPPNQOGvzA== X-Microsoft-Exchange-Diagnostics: 1;CY4PR11MB1640;31:OB+i03SGYW3GL4AP0RzIB7VZUTJdEW2+vNsVwDSeSinzPOLyJKjUnnsWdZZSb9a/o7p3dQadNoo4VBYCNzPJaVZm/fCJ6h7xlg9qrYLDfi1/W+DOoz+P6xGuFIYVNkTw5a2w3wwOnXJpUcXWVxM+Yuh7emVwYODmNdCkCrzKCvlqRhitkzBwpla+XVoNz9uKAx/7Bzx2x0hXsFb8stUgY/zGQHNJXEjT2THkHvFgnaWzqo8t0XjVZlaEgvN8BsJzWKS6O+i2623d9BEu6Wfm2Q==;4:Is9Gsl52IhO1Krkye21XbXXc0RD524dRGpoeQJfjUFP1bkjXEfFjJzqLY2YrnFURQn7h3EOm59I0DsE+0s7sCNnxWHk8wJfv1c2i3iDAuIeuu+usWZ1p/22vRci+ItIXF4MWPfebGdnI58vt8/dGha76VIvv3XZtoSnOutLuV98z48wGE3wWxk0Yxa8KpjVY/c7IA26Vq0L4KpAt5awtCpKhgqaq28jwKDe2Ldcd9y+0jQHGQ4k6emqERW9pbFsrDEJwhjaJUFNjiPbLS0YNmf5lltLhaLRYGVBgTvAs8xc3sDqpzygMdrZMDlRdBqnPFMomiU+ONL1xjmEpU7r2epa/YzIj+A7afsCLO3oaEKjceHIv77O7wSQDoMZ2ooebm7K10VECukh4Ip1Rtay6KRZQ9D6kbDotUzq8n/rWtRzjMocycA4LIRxtfUgN48lD99DcSwBZv3w3i+J8OUhXeM8DC07ir5YylszfSIrHZwYxMGHAMyKQMA+l53m5xK4TKBUU45kk5WJklfE/t2RRtRQDBQtNurj+eQqgk1xfthS3BDO5R4w/lfnMNepELoYXMuUMf4tkJfJevPY2dhJiTaoq/Ze0Vbj3Co0x02Z24XSn9+H4Nu2hvqfqlBJqWE4Fiknw5yRCSi3sc65CEfr3/g== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040375)(601004)(2401047)(8121501046)(5005006)(10201501046)(3002001)(6041248)(20161123560025)(20161123564025)(20161123562025)(20161123555025)(2016111802025)(6043046)(6042181)(6072148);SRVR:CY4PR11MB1640;BCL:0;PCL:0;RULEID:;SRVR:CY4PR11MB1640; X-Forefront-PRVS: 0203C93D51 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(4630300001)(6009001)(7916002)(377454003)(24454002)(199003)(189002)(31696002)(6116002)(106356001)(68736007)(2906002)(93886004)(76176999)(105586002)(50986999)(54356999)(101416001)(65956001)(66066001)(65806001)(36756003)(42186005)(53936002)(4326007)(33646002)(3846002)(31686004)(4001350100001)(54906002)(5001770100001)(97736004)(230700001)(47776003)(6306002)(189998001)(6512007)(64126003)(8676002)(50466002)(81156014)(81166006)(92566002)(229853002)(6666003)(2950100002)(6506006)(39060400001)(38730400001)(6486002)(23746002)(5660300001)(25786008)(65826007)(305945005)(16601075003)(86362001)(7736002)(966004)(83506001)(85282002);DIR:OUT;SFP:1101;SCL:1;SRVR:CY4PR11MB1640;H:decina.local;FPR:;SPF:None;PTR:InfoNoRecords;A:1;MX:1;LANG:en; Received-SPF: None (protection.outlook.com: bluetreble.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?Windows-1252?Q?1;CY4PR11MB1640;23:4+izvQmAylIjEOUHG7RUTfANDnNJFgpPqW8+N?= =?Windows-1252?Q?gcvhX+xKHX0ZHdV0TUOal/1+p4AI1GxIr3yABW6YFOEyXpFHvQN9uF4p?= =?Windows-1252?Q?HsOQCqqj0+YcbAGj8iUx3Y+5ylwZdhVLW7P+ES6elrweVOv3B2U+Ney0?= =?Windows-1252?Q?QK7gh2paPLzQeOueLOlFLzf3danjSAZHfAj8fHiJbI9BNkX1Lp2NjxDC?= =?Windows-1252?Q?FhHZwoaWZkm+7ZaHNUwx5CdTxmMd8P8PVSDYM4kv19Q7iO27YrFbpFyl?= =?Windows-1252?Q?/f2f27RXOl7kj0stt3fPwx9UPtliEjvbl4Nxm/d4HcD1U8UcIqpVn27V?= =?Windows-1252?Q?gmiMeqigZiOkPMjDaGr32lVWry71OaK2gbpME2GH/ZDoljqIxGjdLcic?= =?Windows-1252?Q?NatABun9LeIheAsN2I7pMr+fe17WkZ/3gQ+s9rXwVH7TXrTdc2IcNTNE?= =?Windows-1252?Q?eing/rJovV3lJlTru54De0P67i2GFBsYt0B/p2v5pLnc1F0v+8jHb649?= =?Windows-1252?Q?inLJlkcFq0Ic9iRnjzISAN7sofrM6a6AA11mjyi9Dfrlysi4m2hveStN?= =?Windows-1252?Q?Ks8so59BKz5j2Vgzo669IshKON9ADCrqPvOjDLf4z6JRRAfAaFKSJVaI?= =?Windows-1252?Q?r4S68POgDnF47JegIG0kyJUNlqL018Ky7ncFF43HFxdg1DzUynZyAzua?= =?Windows-1252?Q?Hu2gx79nbF8beoBkosgX8jKyoy0UGYtvGWj95ci94P6QmgsGlKGlNJF8?= =?Windows-1252?Q?HT6cdkJdi/EFEYNBb9kVyjZ3mEbFzrueGbRyViGkdPjQAfDzjDwnW2Ay?= =?Windows-1252?Q?NA0XYYgVy/RsrtpysKJo0kNVa8Z9Dcy4xo6h21GeyLW9TcllqyeqgccX?= =?Windows-1252?Q?3G7dTCLxH5qx9cj149lJ9rGmaLnwFVmQuJo9SG077C2H52wYk4gv0n0U?= =?Windows-1252?Q?h89wrbJXuxKyUuI855s2BWEAAmE/gBX0S5w8coGDOjbjYdnvRO4eysam?= =?Windows-1252?Q?46r2RkjCkSx/oSJiRkxaeuMBvNQoTCHb0i2fPaBLNDD03gHCV9Baxjqb?= =?Windows-1252?Q?01u3zxe/FHJ371ilGBuIoNPQ3BmbOFvoWl4sUtX27n7cdxz9pfDbgSCv?= =?Windows-1252?Q?U1i99s25JBq5Pp3PJzzfQi81pvB5IChJCGQOcFxKjmjLlWIqxHmdF0M/?= =?Windows-1252?Q?bSVmP0ujmmzHxyH6L0Kdu+P9OmaXhDw5WtOFa8puvBYY4RANrcosC/dK?= =?Windows-1252?Q?TDW/h2dBL0k/sNtiFna+eFSuhw5owFanxvhtLjlsrFLGL1lu6LIOmnT2?= =?Windows-1252?Q?/LO74htHCtchQz2Q0PTlmaw+4YBp9/8OXXgdKINs4EuBmNO7Q/45cxTd?= =?Windows-1252?Q?oYrZotkyYfuIyKZ9Nqc1cMlDznft2jjAZCEEMwz1kS1076Tqbwv+1A9t?= =?Windows-1252?Q?+SSP9nsgzj5LuhjtfPIzwzYw/PWay9GSxMbZ3wgAdRfxdFIvLb/687n5?= =?Windows-1252?Q?4ezHLzQamBg8Krx+2OFD34iXq3A1PLnXvzCGYqIQhU25l6uj+SZZeuXm?= =?Windows-1252?Q?L5oUyow5M+gGIisUcPHyH1Qy3zZgvAygQZV?= X-Microsoft-Exchange-Diagnostics: 1;CY4PR11MB1640;6:3hXtQI1zvxktAXoZEoI8tML5Efil1qShSbpcPqM3q8rR476VgkjMyo/omH6N3n0V+GUJt2+t0vUwyJlm9QZWe8TdPZ/gGoONkKyes5MeqMoYr5p4cwR1g1fUeN+NaexgmjXsQtVfgQns/UkRBEDVYj3rg2VPqVVsfeGaaCnmem9FELdGUr4F6o2uD1UOQdzXAIEwFYfM3BlI8Jpmrd+wUwGHbx9127bonsMr1MIYcINir9JCq0aSCbUNgxI8MY5DrASuor5i6tRrEVbefZjTwJaQLVhv/Qv43JWNZ3HSqugATTAHk5XXWPuIHzdukB2mYMJx3lFJu/Kl0HDOznUzEDiEVVKwiUP+ws7KF1HzrtgOuZUQIz43S5twHWvmVLsQ1VpIiQeeA7TI4v9rY+fXN7AU1MC4onTcTHC6+iHEbPw=;5:2FqUG65lsST/Cil5kMyYAGFGdtUL+3ZxMFW1IMD8hZXltqPY4nVf+BhBFS7PsSvix9Uynnr6Hs/z7WiNze7CAWTiHCC6nhURBw909xE87Gm4JVvk1SgrnAI2MMzmjq3SS4V/AKznH4gOvQdOOAEvgQ==;24:ivl71BxpYPhTPp8qGz+9MFJV1TrqeFZ7EQesluKrXRK1ecGd5j0mTajthNTDNyYKgP91rtttrhasdOFqWHQLJSmtRBn6sHvpoluGp3CPjpA= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;CY4PR11MB1640;7:QDW3bvxRpXW5cMrUAfmL2vOiPtsdbHps17+8LGRkspTvYYA0k+fGtiCrgF/q3/JtVYb1keJMrCQzyrfUjzFu86mQ2kJST/m4L2nTUAIGrvjDLsSMQ4MBtVSCzsShMaw9jTQbAptiqJkoQahS9iOLi42k7+gWnKaLiuMBjM6F6UkropwEYqLX21z8qS+krJctmGGl62cJRduHKWgn4iADLFb7EPevCnsiB015zxpKCQ48Ss0jWL2d0QtQAwuvEx7bHeuZ9Yp4p+ekCMyV+lGzdK6Uic3M/oBGB3X0/AqqZWTYdtQjEeCLjXO8HIatBtGt00GEcXLZlxkyHX2JkFirwCqcbzQkD9NNHeUEpc8KWLG1CRvQeei5GrophaVQ4Y9GFBg88sOBZ78SMbF3p3x/9YI90QtrmJFcxxllbVDsYUl6d6FApeUuBj9N79me3StxqB6rF3W8ESz6WVglmIZBuw== X-OriginatorOrg: bluetreble.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Jan 2017 03:39:44.0357 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR11MB1640 X-Pg-Spam-Score: -1.5 (-) 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 On 1/29/17 2:35 AM, Fabien COELHO wrote: >>> I'm wondering what pg would do on "EXISTS(SELECT 1 FROM customer)" if >>> there are many employees. [...] >> >> I believe that the scan stops on the first row it finds, because the >> EXITS() clause is met. > > Hmmm... That is not so clear from "EXPLAIN" output: You need to use a better test case... > explain analyze select exists(select 1 from generate_series(1,99999) gs); > QUERY PLAN > ------------------------------------------------------------------------------------------------------------------------------- > Result (cost=0.01..0.02 rows=1 width=1) (actual time=26.278..26.278 rows=1 loops=1) > InitPlan 1 (returns $0) > -> Function Scan on generate_series gs (cost=0.00..10.00 rows=1000 width=0) (actual time=26.271..26.271 rows=1 loops=1) > Planning time: 6.568 ms > Execution time: 48.917 ms > (5 rows) In any case, +1 for not promoting count(*) <> 0; that's a really, really bad way to test for existence. -- Jim Nasby, Data Architect, Blue Treble Consulting, Austin TX Experts in Analytics, Data Architecture and PostgreSQL Data in Trouble? Get it in Treble! http://BlueTreble.com 855-TREBLE2 (855-873-2532) -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers