Received: from magus.postgresql.org (magus.postgresql.org [87.238.57.229]) by mail.postgresql.org (Postfix) with ESMTP id 003FA16D90FB for ; Tue, 27 Mar 2012 19:50:03 -0300 (ADT) Received: from 30.55.colo.spiretech.net ([69.168.55.30] helo=lists.commandprompt.com) by magus.postgresql.org with esmtp (Exim 4.72) (envelope-from ) id 1SCfDE-0002Ug-TJ for pgsql-hackers@postgresql.org; Tue, 27 Mar 2012 22:50:02 +0000 Received: from clam (spinlock.commandprompt.com [69.168.55.30]) by lists.commandprompt.com (Postfix) with ESMTPA id E0CA3E3; Tue, 27 Mar 2012 15:50:38 -0700 (PDT) Received: from clam ([195.88.15.88] helo=clam) by assp.commandprompt.com with ESMTPS(AES128-SHA) (2.1.1); 27 Mar 2012 15:50:36 -0700 From: Alex To: Peter Eisentraut Cc: Heikki Linnakangas , pgsql-hackers Subject: Re: Another review of URI for libpq, v7 submission References: <87d38eaq3f.fsf@commandprompt.com> <87k42lsgck.fsf@commandprompt.com> <20120317145110.GA25172@gmail.com> <8762dyuda3.fsf@commandprompt.com> <87k42cb9dr.fsf@commandprompt.com> <1332868938.24269.1.camel@vanquo.pezone.net> <87ty19kfz0.fsf@commandprompt.com> Date: Wed, 28 Mar 2012 01:49:40 +0300 In-Reply-To: <87ty19kfz0.fsf@commandprompt.com> (Alex's message of "Tue, 27 Mar 2012 22:21:07 +0300") Message-ID: <87pqbxk6bf.fsf@commandprompt.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/23.3 (gnu/linux) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Assp-Version: 2.1.1(11364) on assp.commandprompt.com X-Assp-Client-TLS: yes X-Assp-ID: assp.commandprompt.com m1-88638-04160 X-Assp-Envelope-From: ash@commandprompt.com X-Assp-Intended-For: pgsql-hackers@postgresql.org X-Assp-Original-Subject: Re: [HACKERS] Another review of URI for libpq, v7 submission X-Pg-Spam-Score: -1.1 (-) X-Archive-Number: 201203/1665 X-Sequence-Number: 205546 --=-=-= Alex writes: > Peter Eisentraut writes: >> >> Attached is a patch on top of your v9 with two small fixes: >> >> - Don't provide a check target in libpq/Makefile if it's not >> implemented. >> >> - Use the configured port number for running the tests (otherwise it >> runs against my system installation, for example). > > Neat, thank you. Attached is a gzipped v10, complete with the above fixes and fixes to bugs found by Heikki. Documentation and code comments are also finally updated. Of all the command-line utilities which can accept conninfo string, only psql mentions that, so only its documentation was updated. Other utilities, like pg_dump and pg_restore can also work with either conninfo or URI, however this remains undocumented. -- Alex --=-=-= Content-Type: application/octet-stream Content-Disposition: attachment; filename=libpq-uri-v10.patch.gz Content-Transfer-Encoding: base64 Content-Description: libpq-uri-v10.patch.gz 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 ouGrpw2wAAA= --=-=-=--