Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dIcVh-0000uz-QE for pgadmin-hackers@arkaria.postgresql.org; Wed, 07 Jun 2017 15:04:38 +0000 Received: from localhost ([127.0.0.1] helo=postgresql.org) by malur.postgresql.org with smtp (Exim 4.84_2) (envelope-from ) id 1dIcVh-0007RS-9f for pgadmin-hackers@arkaria.postgresql.org; Wed, 07 Jun 2017 15:04:37 +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 1dIcVR-0006bO-6d for pgadmin-hackers@postgresql.org; Wed, 07 Jun 2017 15:04:21 +0000 Received: from mail-wm0-x231.google.com ([2a00:1450:400c:c09::231]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.84_2) (envelope-from ) id 1dIcVI-0006BJ-Sz for pgadmin-hackers@postgresql.org; Wed, 07 Jun 2017 15:04:20 +0000 Received: by mail-wm0-x231.google.com with SMTP id x70so59912161wme.0 for ; Wed, 07 Jun 2017 08:04:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=enterprisedb-com.20150623.gappssmtp.com; s=20150623; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=/Gb61Om8WhvHK6fZ5RYBl8me9rNjm7nuK3OXp69IVNA=; b=Ai7hnj1DPTcaKhVHHJtl1Z/WxoqaE1a4WpHr+5/n4a2U7ooytb0tx3DmunKG291zME 3wuLRupyGkEFZ6pntqV92q/SJi7Xff8LylHholvLAfYb0weIO7UHZuiO/aPF2IOcmfI8 6VfAN5kbVotVDqTjG2/ZpWsNR0YGcmEsyZTo7cUqWVcLvdB6GPci88Xe9QXPXHkuDOBJ g56dfwjrkyDbTf98/NV/zZ+OMstjHoHWXq5N8SluebfZYwnkXLtIrZUlJz/QIql62vay 7FII/AFfFSWYClvpKJj1dVXhDR4cyVKRY9vzIPCXOV8KoxgssY+QoW1KjRFbmBiXznES tSCw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=/Gb61Om8WhvHK6fZ5RYBl8me9rNjm7nuK3OXp69IVNA=; b=oVbZFNvlkgjGaRzutBkYlRlk+e7MOjm6Gd/xVg1/IMPqpx2IkVhTwgBQJ1BmINELXW pNlNKHJTJz0gZA7YDVHbRLJ1XdBiymGg2+aG0Z1+CZuZsbH/f7gUnPD5TK6prwYyH9n+ w9KkhakP2iOPTT0+CNXUAuXOJLGIXizyghjzNCQ7xGsoKZS6OmrQoBjhvX89jxUSQ8La q5UCqGK2rvatdDMwirewTbtbP0t1O4uGkjApTkyiir75UrrrsSilfFPZYouNsxoP+IHm g0VTut3ovL1pT03SIKOe3Kzd2BL/x+sMZncxJqTPj3It3DdOEnXtd5ThdwXXpDu3tYpV lvTQ== X-Gm-Message-State: AODbwcCSbtQgZ9FTHK/lgbljeEqLPe4AV6e/y+F9qOAcG6qmRp7PTkEw AqjAA1Qq3/tUHtP54ihT5XQKzGhA5TEl X-Received: by 10.28.138.73 with SMTP id m70mr50990wmd.99.1496847852004; Wed, 07 Jun 2017 08:04:12 -0700 (PDT) MIME-Version: 1.0 Received: by 10.28.9.208 with HTTP; Wed, 7 Jun 2017 08:03:41 -0700 (PDT) In-Reply-To: References: From: Surinder Kumar Date: Wed, 7 Jun 2017 20:33:41 +0530 Message-ID: Subject: Re: Re: [pgAdmin4][Patch][Feature #1971]: Remember column sizes between executions of the same query in the query tool To: Dave Page Cc: Shruti B Iyer , pgadmin-hackers , Matthew Kleiman Content-Type: multipart/mixed; boundary="001a114449368170bb0551600c13" X-Pg-Spam-Score: -2.6 (--) List-Archive: List-Help: List-ID: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: X-Mailing-List: pgadmin-hackers Precedence: bulk Sender: pgadmin-hackers-owner@postgresql.org --001a114449368170bb0551600c13 Content-Type: multipart/alternative; boundary="001a114449368170b60551600c11" --001a114449368170b60551600c11 Content-Type: text/plain; charset="UTF-8" PFA patch after rebase On Wed, Jun 7, 2017 at 6:26 PM, Surinder Kumar < surinder.kumar@enterprisedb.com> wrote: > Hi > > Please find rebased patch. > > On Wed, Jun 7, 2017 at 6:15 PM, Dave Page wrote: > >> Hi, >> >> Could you rebase this please? >> >> Thanks. >> >> On Tue, Jun 6, 2017 at 9:22 AM, Surinder Kumar >> wrote: >> > Hi All, >> > >> > Please find updated patch which includes Jasmine test cases for >> functions >> > getHash and calculateColumnWidth >> > >> > Thanks, >> > Surinder >> > >> > On Mon, Jun 5, 2017 at 11:38 PM, Shruti B Iyer >> wrote: >> >> >> >> Hi Surinder! >> >> >> >> We reviewed this patch. The changes look good and we especially like >> that >> >> you have extracted out the new utility functions and the >> epicRandomString >> >> function too. >> >> >> >> This patch will likely affect the Query Results patch that is currently >> >> under review. In order to assist either us or yourself when making a >> merge >> >> between these patches, it would help to have jasmine unit testing for >> the >> >> two new functions, getHash and calculate_column_width. >> >> >> >> Also, we suggest that you rename calculate_column_width to >> >> calculateColumnWidth for consistency with javascript code style. >> >> >> >> Thanks, >> >> Shruti and Matt >> >> >> >> On Mon, Jun 5, 2017 at 9:16 AM Surinder Kumar >> >> wrote: >> >>> >> >>> Staged changes are missed in previous patch, so please ignore. >> >>> Please find attached updated patch. >> >>> >> >>> On Mon, Jun 5, 2017 at 4:29 PM, Surinder Kumar >> >>> wrote: >> >>>> >> >>>> Hi >> >>>> >> >>>> This patch contains two fixes: >> >>>> >> >>>> 1) In Query/tool or Edit grid, the width of table column header is >> fixed >> >>>> depending on the column type(int, boolean, char etc.) due to which >> the >> >>>> column name or type appears cut from right and doesn't looks good >> from user >> >>>> point of view. The main concern was to display as much as the >> content of >> >>>> column should be displayed. >> >>>> >> >>>> Now the width of column is decided using the text length of column >> name >> >>>> or column type so that the column takes exact width it required and >> it don't >> >>>> appears cut. >> >>>> >> >>>> 2) Remember column size after re-running a query. >> >>>> >> >>>> The approach is to extract table name from the query executed and >> use it >> >>>> to store its columns width. >> >>>> Whenever the column(s) width of a table is adjusted, the >> corresponding >> >>>> values are updated into the object and used every time the same >> query is >> >>>> executed. >> >>>> >> >>>> If a query is executed for e.g: >> >>>> >> >>>> SELECT generate_series(1, 1000) as id, generate_series(1, 1000) as >> name, >> >>>> generate_series(1, 1000) as age >> >>>> >> >>>> it >> >>>> displays 3 columns >> >>>> but don't have any table name. In that case, >> >>>> i use a hash generator function which returns unique hash for a >> query >> >>>> written in query editor and adjusted column(s) width are stored >> against that >> >>>> hash in object. >> >>>> >> >>>> Is there any way to get temporary table name(avoiding unique hash) >> for >> >>>> such queries ? >> >>>> >> >>>> Also, Moved utilities functions into pgadmin/static/utils.js >> >>>> >> >>>> Please find attached patch and review. >> >>>> >> >>>> Thanks, >> >>>> Surinder Kumar >> >>> >> >>> >> >>> >> >>> -- >> >>> Sent via pgadmin-hackers mailing list (pgadmin-hackers@postgresql.org >> ) >> >>> To make changes to your subscription: >> >>> http://www.postgresql.org/mailpref/pgadmin-hackers >> > >> > >> > >> > >> > -- >> > Sent via pgadmin-hackers mailing list (pgadmin-hackers@postgresql.org) >> > To make changes to your subscription: >> > http://www.postgresql.org/mailpref/pgadmin-hackers >> > >> >> >> >> -- >> Dave Page >> Blog: http://pgsnake.blogspot.com >> Twitter: @pgsnake >> >> EnterpriseDB UK: http://www.enterprisedb.com >> The Enterprise PostgreSQL Company >> > > --001a114449368170b60551600c11 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
PFA= patch after rebase

On Wed, Jun 7, 2017 at 6:26 PM, Surinder Kumar <surinder.kumar@enterprisedb.com> wrote:
Hi
=
Please fin= d rebased patch.

On Wed, Jun 7, 2017 at 6= :15 PM, Dave Page <dpage@pgadmin.org> wrote:
Hi,

Could you rebase this please?

Thanks.

On Tue, Jun 6, 2017 at 9:22 AM, Surinder Kumar
<surinder.kumar@enterprisedb.com> wrote:
> Hi All,
>
> Please find updated patch which includes Jasmine test cases for functi= ons
> getHash and calculateColumnWidth
>
> Thanks,
> Surinder
>
> On Mon, Jun 5, 2017 at 11:38 PM, Shruti B Iyer <siyer@pivotal.io> wrote:
>>
>> Hi Surinder!
>>
>> We reviewed this patch. The changes look good and we especially li= ke that
>> you have extracted out the new utility functions and the epicRando= mString
>> function too.
>>
>> This patch will likely affect the Query Results patch that is curr= ently
>> under review. In order to assist either us or yourself when making= a merge
>> between these patches, it would help to have jasmine unit testing = for the
>> two new functions, getHash and calculate_column_width.
>>
>> Also, we suggest that you rename calculate_column_width to
>> calculateColumnWidth for consistency with javascript code style. >>
>> Thanks,
>> Shruti and Matt
>>
>> On Mon, Jun 5, 2017 at 9:16 AM Surinder Kumar
>> <surinder.kumar@enterprisedb.com> wrote:
>>>
>>> Staged changes are missed in previous patch, so please ignore.=
>>> Please find attached updated patch.
>>>
>>> On Mon, Jun 5, 2017 at 4:29 PM, Surinder Kumar
>>> <surinder.kumar@enterprisedb.com> wrote:
>>>>
>>>> Hi
>>>>
>>>> This patch contains two fixes:
>>>>
>>>> 1) In Query/tool or Edit grid, the width of table column h= eader is fixed
>>>> depending on the column type(int, boolean, char etc.) due = to which the
>>>> column name or type appears cut from right and doesn't= looks good from user
>>>> point of view. The main concern was to display as much as = the content of
>>>> column should be displayed.
>>>>
>>>> Now the width of column is decided using the text length o= f column name
>>>> or column type so that the column takes exact width it req= uired and it don't
>>>> appears cut.
>>>>
>>>> 2) Remember column size after re-running a query.
>>>>
>>>> The approach is to extract table name from the query execu= ted and use it
>>>> to store its columns width.
>>>> Whenever the column(s) width of a table is adjusted, the c= orresponding
>>>> values are updated into the object and used every time the= same query is
>>>> executed.
>>>>
>>>> If a query is executed for e.g:
>>>>
>>>> SELECT generate_series(1, 1000) as id, generate_series(1, = 1000) as name,
>>>> generate_series(1, 1000) as age
>>>>
>>>> it
>>>> displays 3 columns
>>>> but don't have any table name. In that case,
>>>>=C2=A0 i use a hash generator function which returns unique= hash for a query
>>>> written in query editor and adjusted column(s) width are s= tored against that
>>>> hash in object.
>>>>
>>>> Is there any way to get temporary table name(avoiding uniq= ue hash) for
>>>> such queries ?
>>>>
>>>> Also, Moved utilities functions into pgadmin/static/utils.= js
>>>>
>>>> Please find attached patch and review.
>>>>
>>>> Thanks,
>>>> Surinder Kumar
>>>
>>>
>>>
>>> --
>>> Sent via pgadmin-hackers mailing list (pgadmin-hackers@postgresql.or<= wbr>g)
>>> To make changes to your subscription:
>>> http://www.postgresql.org/mailpr= ef/pgadmin-hackers
>
>
>
>
> --
> Sent via pgadmin-hackers mailing list (pgadmin-hackers@postgresql.org)
> To make changes to your subscription:
>
http://www.postgresql.org/mailpref/pgadm= in-hackers
>



--
Dave Page
Blog: http://pgsnake.blogspot.com
Twitter: @pgsnake

EnterpriseDB UK: http://www.enterprisedb.com
The Enterprise PostgreSQL Company


--001a114449368170b60551600c11-- --001a114449368170bb0551600c13 Content-Type: application/octet-stream; name="Feature_1971_with_jasmine_tests_v2.patch" Content-Disposition: attachment; filename="Feature_1971_with_jasmine_tests_v2.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_j3n4jhe41 ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9zcWxlZGl0b3Jf dXRpbHMuanMgYi93ZWIvcGdhZG1pbi9zdGF0aWMvanMvc3FsZWRpdG9yX3V0 aWxzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJh ZmM0ZGUKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9zdGF0aWMv anMvc3FsZWRpdG9yX3V0aWxzLmpzCkBAIC0wLDAgKzEsNTggQEAKKy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLworLy8gcGdBZG1pbiA0IC0g UG9zdGdyZVNRTCBUb29scworLy8KKy8vIENvcHlyaWdodCAoQykgMjAxMyAt IDIwMTcsIFRoZSBwZ0FkbWluIERldmVsb3BtZW50IFRlYW0KKy8vIFRoaXMg c29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIFBvc3RncmVTUUwgTGlj ZW5jZQorLy8KKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLyBU aGlzIGZpbGUgY29udGFpbnMgY29tbW9uIHV0aWxpdGllcyBmdW5jdGlvbnMg dXNlZCBpbiBzcWxlZGl0b3IgbW9kdWxlcworCitkZWZpbmUoWydqcXVlcnkn XSwKKyAgZnVuY3Rpb24gKCQpIHsKKyAgICB2YXIgc3FsRWRpdG9yVXRpbHMg PSB7CisgICAgICAvKiBSZWZlcmVuY2UgbGluayBodHRwOi8vc3RhY2tvdmVy Zmxvdy5jb20vcXVlc3Rpb25zLzEwNTAzNC9jcmVhdGUtZ3VpZC11dWlkLWlu LWphdmFzY3JpcHQKKyAgICAgICAqIE1vZGlmaWVkIGFzIHBlciByZXF1aXJl bWVudC4KKyAgICAgICAqLworICAgICAgZXBpY1JhbmRvbVN0cmluZzogZnVu Y3Rpb24obGVuZ3RoKSB7CisgICAgICAgIHZhciBzID0gW107CisgICAgICAg IHZhciBoZXhEaWdpdHMgPSAiMDEyMzQ1Njc4OWFiY2RlZiI7CisgICAgICAg IGZvciAodmFyIGkgPSAwOyBpIDwgMzY7IGkrKykgeworICAgICAgICAgICAg c1tpXSA9IGhleERpZ2l0cy5zdWJzdHIoCisgICAgICAgICAgICAgICAgICAg IE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIDB4MTApLCAxCisgICAgICAg ICAgICAgICAgICApOworICAgICAgICB9CisgICAgICAgIC8vIGJpdHMgMTIt MTUgb2YgdGhlIHRpbWVfaGlfYW5kX3ZlcnNpb24gZmllbGQgdG8gMDAxMAor ICAgICAgICBzWzE0XSA9ICI0IjsKKyAgICAgICAgLy8gYml0cyA2LTcgb2Yg dGhlIGNsb2NrX3NlcV9oaV9hbmRfcmVzZXJ2ZWQgdG8gMDEKKyAgICAgICAg c1sxOV0gPSBoZXhEaWdpdHMuc3Vic3RyKChzWzE5XSAmIDB4MykgfCAweDgs IDEpOworICAgICAgICBzWzhdID0gc1sxM10gPSBzWzE4XSA9IHNbMjNdID0g Ii0iOworCisgICAgICAgIHZhciB1dWlkID0gcy5qb2luKCIiKTsKKyAgICAg ICAgcmV0dXJuIHV1aWQucmVwbGFjZSgvLS9nLCAnJykuc3Vic3RyKDAsIGxl bmd0aCk7CisgICAgICB9LAorCisgICAgICAvLyBSZXR1cm5zIGEgdW5pcXVl IGhhc2ggZm9yIGlucHV0IHN0cmluZworICAgICAgZ2V0SGFzaDogZnVuY3Rp b24oaW5wdXQpIHsKKyAgICAgICAgdmFyIGhhc2ggPSAwLCBsZW4gPSBpbnB1 dC5sZW5ndGg7CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBp KyspIHsKKyAgICAgICAgICBoYXNoICA9ICgoaGFzaCA8PCA1KSAtIGhhc2gp ICsgaW5wdXQuY2hhckNvZGVBdChpKTsKKyAgICAgICAgICBoYXNoIHw9IDA7 IC8vIHRvIDMyYml0IGludGVnZXIKKyAgICAgICAgfQorICAgICAgICByZXR1 cm4gaGFzaDsKKyAgICAgIH0sCisgICAgICBjYWxjdWxhdGVDb2x1bW5XaWR0 aDogZnVuY3Rpb24gKHRleHQpIHsKKyAgICAgICAgLy8gQ2FsY3VsYXRlIGNv bHVtbiBoZWFkZXIgd2lkdGggYmFzZWQgb24gY29sdW1uIG5hbWUgb3IgdHlw ZQorICAgICAgICAvLyBDcmVhdGUgYSB0ZW1wb3JhcnkgZWxlbWVudCB3aXRo IGdpdmVuIGxhYmVsLCBhcHBlbmQgdG8gYm9keQorICAgICAgICAvLyBjYWxj dWxhdGUgaXRzIHdpZHRoIGFuZCByZW1vdmUgdGhlIGVsZW1lbnQuCisgICAg ICAgICQoJ2JvZHknKS5hcHBlbmQoCisgICAgICAgICAgICAnPHNwYW4gaWQ9 InBnX3RleHQiIHN0eWxlPSJ2aXNpYmlsaXR5OiBoaWRkZW47Ij4nKyB0ZXh0 ICsgJzwvc3Bhbj4nCisgICAgICAgICk7CisgICAgICAgIHZhciB3aWR0aCA9 ICQoJyNwZ190ZXh0Jykud2lkdGgoKSArIDMwOworICAgICAgICAkKCcjcGdf dGV4dCcpLnJlbW92ZSgpOyAvLyByZW1vdmUgZWxlbWVudAorCisgICAgICAg IHJldHVybiB3aWR0aDsKKyAgICAgIH0KKyAgICB9OworICAgIHJldHVybiBz cWxFZGl0b3JVdGlsczsKK30pOwpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4v dG9vbHMvc3FsZWRpdG9yL3RlbXBsYXRlcy9zcWxlZGl0b3IvanMvc3FsZWRp dG9yLmpzIGIvd2ViL3BnYWRtaW4vdG9vbHMvc3FsZWRpdG9yL3RlbXBsYXRl cy9zcWxlZGl0b3IvanMvc3FsZWRpdG9yLmpzCmluZGV4IDhkODM1ZTMuLjRi NWYyYzggMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL3Rvb2xzL3NxbGVkaXRv ci90ZW1wbGF0ZXMvc3FsZWRpdG9yL2pzL3NxbGVkaXRvci5qcworKysgYi93 ZWIvcGdhZG1pbi90b29scy9zcWxlZGl0b3IvdGVtcGxhdGVzL3NxbGVkaXRv ci9qcy9zcWxlZGl0b3IuanMKQEAgLTMsNyArMyw3IEBAIGRlZmluZShbCiAg ICdwZ2FkbWluJywgJ2JhY2tib25lJywgJ2JhY2tncmlkJywgJ2NvZGVtaXJy b3InLCAncGdhZG1pbi5taXNjLmV4cGxhaW4nLAogICAnc291cmNlcy9zZWxl Y3Rpb24vZ3JpZF9zZWxlY3RvcicsICdzb3VyY2VzL3NlbGVjdGlvbi9jbGlw Ym9hcmQnLAogICAnc291cmNlcy9zZWxlY3Rpb24vY29weV9kYXRhJywKLSAg J3NvdXJjZXMvc2VsZWN0aW9uL3NldF9zdGFnZWRfcm93cycsCisgICdzb3Vy Y2VzL3NlbGVjdGlvbi9zZXRfc3RhZ2VkX3Jvd3MnLCAnc291cmNlcy9zcWxl ZGl0b3JfdXRpbHMnLAogICAnc2xpY2tncmlkJywgJ2Jvb3RzdHJhcCcsICdw Z2FkbWluLmJyb3dzZXInLCAnd2Nkb2NrZXInLAogICAnY29kZW1pcnJvci9t b2RlL3NxbC9zcWwnLCAnY29kZW1pcnJvci9hZGRvbi9zZWxlY3Rpb24vbWFy ay1zZWxlY3Rpb24nLAogICAnY29kZW1pcnJvci9hZGRvbi9zZWxlY3Rpb24v YWN0aXZlLWxpbmUnLCAnY29kZW1pcnJvci9hZGRvbi9mb2xkL2ZvbGRjb2Rl JywKQEAgLTI2LDcgKzI2LDcgQEAgZGVmaW5lKFsKICAgJ3NsaWNrZ3JpZC9z bGljay5ncmlkJwogXSwgZnVuY3Rpb24oCiAgIGdldHRleHQsICQsIF8sIFMs IGFsZXJ0aWZ5LCBwZ0FkbWluLCBCYWNrYm9uZSwgQmFja2dyaWQsIENvZGVN aXJyb3IsCi0gIHBnRXhwbGFpbiwgR3JpZFNlbGVjdG9yLCBjbGlwYm9hcmQs IGNvcHlEYXRhLCBzZXRTdGFnZWRSb3dzCisgIHBnRXhwbGFpbiwgR3JpZFNl bGVjdG9yLCBjbGlwYm9hcmQsIGNvcHlEYXRhLCBzZXRTdGFnZWRSb3dzLCBT cWxFZGl0b3JVdGlscwogKSB7CiAgICAgLyogUmV0dXJuIGJhY2ssIHRoaXMg aGFzIGJlZW4gY2FsbGVkIG1vcmUgdGhhbiBvbmNlICovCiAgICAgaWYgKHBn QWRtaW4uU3FsRWRpdG9yKQpAQCAtMzgsMjggKzM4LDYgQEAgZGVmaW5lKFsK ICAgICAgICAgcGdCcm93c2VyID0gcGdBZG1pbi5Ccm93c2VyLAogICAgICAg ICBTbGljayA9IHdpbmRvdy5TbGljazsKIAotICAgIC8qIFJlZmVyZW5jZSBs aW5rCi0gICAgICogaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9u cy8xMDUwMzQvY3JlYXRlLWd1aWQtdXVpZC1pbi1qYXZhc2NyaXB0Ci0gICAg ICogTW9kaWZpZWQgYXMgcGVyIHJlcXVpcmVtZW50LgotICAgICAqLwotICAg IGZ1bmN0aW9uIGVwaWNSYW5kb21TdHJpbmcoYikgewotICAgICAgdmFyIHMg PSBbXTsKLSAgICAgIHZhciBoZXhEaWdpdHMgPSAiMDEyMzQ1Njc4OWFiY2Rl ZiI7Ci0gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDM2OyBpKyspIHsKLSAg ICAgICAgICBzW2ldID0gaGV4RGlnaXRzLnN1YnN0cigKLSAgICAgICAgICAg ICAgICAgIE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIDB4MTApLCAxCi0g ICAgICAgICAgICAgICAgKTsKLSAgICAgIH0KLSAgICAgIC8vIGJpdHMgMTIt MTUgb2YgdGhlIHRpbWVfaGlfYW5kX3ZlcnNpb24gZmllbGQgdG8gMDAxMAot ICAgICAgc1sxNF0gPSAiNCI7Ci0gICAgICAvLyBiaXRzIDYtNyBvZiB0aGUg Y2xvY2tfc2VxX2hpX2FuZF9yZXNlcnZlZCB0byAwMQotICAgICAgc1sxOV0g PSBoZXhEaWdpdHMuc3Vic3RyKChzWzE5XSAmIDB4MykgfCAweDgsIDEpOwot ICAgICAgc1s4XSA9IHNbMTNdID0gc1sxOF0gPSBzWzIzXSA9ICItIjsKLQot ICAgICAgdmFyIHV1aWQgPSBzLmpvaW4oIiIpOwotICAgICAgcmV0dXJuIHV1 aWQucmVwbGFjZSgvLS9nLCAnJykuc3Vic3RyKDAsIGIpOwotICAgIH07Ci0K ICAgICAvLyBEZWZpbmUga2V5IGNvZGVzIGZvciBzaG9ydGN1dCBrZXlzCiAg ICAgdmFyIEY1X0tFWSA9IDExNiwKICAgICAgICAgRjdfS0VZID0gMTE4LApA QCAtNzIsNiArNTAsNyBAQCBkZWZpbmUoWwogICAgICAgaW5pdGlhbGl6ZTog ZnVuY3Rpb24ob3B0cykgewogICAgICAgICB0aGlzLiRlbCA9IG9wdHMuZWw7 CiAgICAgICAgIHRoaXMuaGFuZGxlciA9IG9wdHMuaGFuZGxlcjsKKyAgICAg ICAgdGhpcy5oYW5kbGVyWydjb2xfc2l6ZSddID0ge307CiAgICAgICB9LAog CiAgICAgICAvLyBCaW5kIGFsbCB0aGUgZXZlbnRzCkBAIC00MDksMTEgKzM4 OCwxNiBAQCBkZWZpbmUoWwogICAgICAgLyogVG8gcHJvbXB0IHVzZXIgZm9y IHVuc2F2ZWQgY2hhbmdlcyAqLwogICAgICAgdXNlcl9jb25maXJtYXRpb246 IGZ1bmN0aW9uKHBhbmVsLCBtc2cpIHsKICAgICAgICAgLy8gSWYgdGhlcmUg aXMgYW55dGhpbmcgdG8gc2F2ZSB0aGVuIHByb21wdCB1c2VyCisgICAgICAg IHZhciB0aGF0ID0gdGhpczsKICAgICAgICAgYWxlcnRpZnkuY29uZmlybShn ZXR0ZXh0KCJVbnNhdmVkIGNoYW5nZXMiKSwgbXNnLAogICAgICAgICAgIGZ1 bmN0aW9uKCkgewogICAgICAgICAgICAgLy8gRG8gbm90aGluZyBhcyB1c2Vy IGRvIG5vdCB3YW50IHRvIHNhdmUsIGp1c3QgY29udGludWUKICAgICAgICAg ICAgIHdpbmRvdy5vbmJlZm9yZXVubG9hZCA9IG51bGw7CiAgICAgICAgICAg ICBwYW5lbC5vZmYod2NEb2NrZXIuRVZFTlQuQ0xPU0lORyk7CisgICAgICAg ICAgICAvLyByZW1vdmUgY29sX3NpemUgb2JqZWN0IG9uIHBhbmVsIGNsb3Nl CisgICAgICAgICAgICBpZiAoIV8uaXNVbmRlZmluZWQodGhhdC5oYW5kbGVy LmNvbF9zaXplKSkgeworICAgICAgICAgICAgICBkZWxldGUgdGhhdC5oYW5k bGVyLmNvbF9zaXplOworICAgICAgICAgICAgfQogICAgICAgICAgICAgd2lu ZG93LnRvcC5wZ0FkbWluLkJyb3dzZXIuZG9ja2VyLnJlbW92ZVBhbmVsKHBh bmVsKTsKICAgICAgICAgICB9LAogICAgICAgICAgIGZ1bmN0aW9uKCkgewpA QCAtNDI1LDUzICs0MDksNiBAQCBkZWZpbmUoWwogICAgICAgICByZXR1cm4g ZmFsc2U7CiAgICAgICB9LAogCi0gICAgICBnZXRfY29sdW1uX3dpZHRoOiBm dW5jdGlvbiAoY29sdW1uX3R5cGUsIGdyaWRfd2lkdGgpIHsKLQotICAgICAg ICBzd2l0Y2goY29sdW1uX3R5cGUpIHsKLSAgICAgICAgICBjYXNlICJiaWdp bnQiOgotICAgICAgICAgIGNhc2UgImJpZ2ludFtdIjoKLSAgICAgICAgICBj YXNlICJiaWdzZXJpYWwiOgotICAgICAgICAgIGNhc2UgImJpdCI6Ci0gICAg ICAgICAgY2FzZSAiYml0W10iOgotICAgICAgICAgIGNhc2UgImJpdCB2YXJ5 aW5nIjoKLSAgICAgICAgICBjYXNlICJiaXQgdmFyeWluZ1tdIjoKLSAgICAg ICAgICBjYXNlICJcImNoYXJcIiI6Ci0gICAgICAgICAgY2FzZSAiZGVjaW1h bCI6Ci0gICAgICAgICAgY2FzZSAiZGVjaW1hbFtdIjoKLSAgICAgICAgICBj YXNlICJkb3VibGUgcHJlY2lzaW9uIjoKLSAgICAgICAgICBjYXNlICJkb3Vi bGUgcHJlY2lzaW9uW10iOgotICAgICAgICAgIGNhc2UgImludDRyYW5nZSI6 Ci0gICAgICAgICAgY2FzZSAiaW50NHJhbmdlW10iOgotICAgICAgICAgIGNh c2UgImludDhyYW5nZSI6Ci0gICAgICAgICAgY2FzZSAiaW50OHJhbmdlW10i OgotICAgICAgICAgIGNhc2UgImludGVnZXIiOgotICAgICAgICAgIGNhc2Ug ImludGVnZXJbXSI6Ci0gICAgICAgICAgY2FzZSAibW9uZXkiOgotICAgICAg ICAgIGNhc2UgIm1vbmV5W10iOgotICAgICAgICAgIGNhc2UgIm51bWVyaWMi OgotICAgICAgICAgIGNhc2UgIm51bWVyaWNbXSI6Ci0gICAgICAgICAgY2Fz ZSAibnVtcmFuZ2UiOgotICAgICAgICAgIGNhc2UgIm51bXJhbmdlW10iOgot ICAgICAgICAgIGNhc2UgIm9pZCI6Ci0gICAgICAgICAgY2FzZSAib2lkW10i OgotICAgICAgICAgIGNhc2UgInJlYWwiOgotICAgICAgICAgIGNhc2UgInJl YWxbXSI6Ci0gICAgICAgICAgY2FzZSAic2VyaWFsIjoKLSAgICAgICAgICBj YXNlICJzbWFsbGludCI6Ci0gICAgICAgICAgY2FzZSAic21hbGxpbnRbXSI6 Ci0gICAgICAgICAgY2FzZSAic21hbGxzZXJpYWwiOgotICAgICAgICAgICAg cmV0dXJuIDgwOwotICAgICAgICAgIGNhc2UgImJvb2xlYW4iOgotICAgICAg ICAgIGNhc2UgImJvb2xlYW5bXSI6Ci0gICAgICAgICAgICByZXR1cm4gNjA7 Ci0gICAgICAgIH0KLQotICAgICAgICAvKiBJbiBjYXNlIG9mIG90aGVyIGRh dGEgdHlwZXMgd2Ugd2lsbCBjYWxjdWxhdGUKLSAgICAgICAgICogMjAlIG9m IHRoZSB0b3RhbCBjb250YWluZXIgd2lkdGggYW5kIHJldHVybiBpdC4KLSAg ICAgICAgICovCi0gICAgICAgIHJldHVybiBNYXRoLnJvdW5kKChncmlkX3dp ZHRoICogMjApLyAxMDApCi0gICAgICB9LAotCiAgICAgICAvKiBSZWdhcmRp bmcgU2xpY2tHcmlkIHVzYWdlIGluIHJlbmRlcl9ncmlkIGZ1bmN0aW9uLgog CiAgICAgICAgU2xpY2tHcmlkIFBsdWdpbnM6CkBAIC01ODQsOCArNTIxLDIy IEBAIGRlZmluZShbCiAgICAgICAgIH0KIAogICAgICAgICB2YXIgZ3JpZF9j b2x1bW5zID0gW107CisgICAgICAgIHZhciBjb2x1bW5fc2l6ZSA9IHNlbGYu aGFuZGxlclsnY29sX3NpemUnXSwKKyAgICAgICAgICBxdWVyeSA9IHNlbGYu aGFuZGxlci5xdWVyeSwKKyAgICAgICAgICAvLyBFeHRyYWN0IHRhYmxlIG5h bWUgZnJvbSBxdWVyeQorICAgICAgICAgIHRhYmxlX2xpc3QgPSBxdWVyeS5t YXRjaCgvc2VsZWN0Lipmcm9tXHMrKFx3KykvaSk7CiAKLSAgICAgICAgdmFy IGdyaWRfd2lkdGggPSAkKCQoJyNlZGl0b3ItcGFuZWwnKS5maW5kKCcud2NG cmFtZScpWzFdKS53aWR0aCgpCisgICAgICAgIGlmICghdGFibGVfbGlzdCkg eworICAgICAgICAgIHRhYmxlX25hbWUgPSBTcWxFZGl0b3JVdGlscy5nZXRI YXNoKHF1ZXJ5KTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAg ICAgICB0YWJsZV9uYW1lID0gdGFibGVfbGlzdFsxXTsKKyAgICAgICAgfQor CisgICAgICAgIHNlbGYuaGFuZGxlclsndGFibGVfbmFtZSddID0gdGFibGVf bmFtZTsKKyAgICAgICAgY29sdW1uX3NpemVbdGFibGVfbmFtZV0gPSBjb2x1 bW5fc2l6ZVt0YWJsZV9uYW1lXSB8fCB7fTsKKworICAgICAgICB2YXIgZ3Jp ZF93aWR0aCA9ICQoJCgnI2VkaXRvci1wYW5lbCcpLmZpbmQoJy53Y0ZyYW1l JylbMV0pLndpZHRoKCk7CiAgICAgICAgIF8uZWFjaChjb2x1bW5zLCBmdW5j dGlvbihjKSB7CiAgICAgICAgICAgICB2YXIgb3B0aW9ucyA9IHsKICAgICAg ICAgICAgICAgaWQ6IGMubmFtZSwKQEAgLTU5Niw4ICs1NDcsMTggQEAgZGVm aW5lKFsKICAgICAgICAgICAgICAgaGFzX2RlZmF1bHRfdmFsOiBjLmhhc19k ZWZhdWx0X3ZhbAogICAgICAgICAgICAgfTsKIAotICAgICAgICAgICAgLy8g R2V0IHRoZSBjb2x1bW5zIHdpZHRoIGJhc2VkIG9uIGRhdGEgdHlwZQotICAg ICAgICAgICAgb3B0aW9uc1snd2lkdGgnXSA9IHNlbGYuZ2V0X2NvbHVtbl93 aWR0aChjLnR5cGUsIGdyaWRfd2lkdGgpOworICAgICAgICAgICAgLy8gR2V0 IHRoZSBjb2x1bW5zIHdpZHRoIGJhc2VkIG9uIGxvbmdlciBzdHJpbmcgYW1v bmcgZGF0YSB0eXBlIG9yCisgICAgICAgICAgICAvLyBjb2x1bW4gbmFtZS4K KyAgICAgICAgICAgIHZhciBsYWJlbCA9IGMubGFiZWwuc3BsaXQoJzxicj4n KTsKKyAgICAgICAgICAgIGxhYmVsID0gbGFiZWxbMF0ubGVuZ3RoID4gbGFi ZWxbMV0ubGVuZ3RoID8gbGFiZWxbMF0gOiBsYWJlbFsxXTsKKworICAgICAg ICAgICAgaWYgKF8uaXNVbmRlZmluZWQoY29sdW1uX3NpemVbdGFibGVfbmFt ZV1bYy5uYW1lXSkpIHsKKyAgICAgICAgICAgICAgICBvcHRpb25zWyd3aWR0 aCddID0gU3FsRWRpdG9yVXRpbHMuY2FsY3VsYXRlQ29sdW1uV2lkdGgobGFi ZWwpCisgICAgICAgICAgICAgICAgY29sdW1uX3NpemVbdGFibGVfbmFtZV1b Yy5uYW1lXSA9IFNxbEVkaXRvclV0aWxzLmNhbGN1bGF0ZUNvbHVtbldpZHRo KGxhYmVsKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2Ugewor ICAgICAgICAgICAgICAgIG9wdGlvbnNbJ3dpZHRoJ10gPSBjb2x1bW5fc2l6 ZVt0YWJsZV9uYW1lXVtjLm5hbWVdOworICAgICAgICAgICAgfQogCiAgICAg ICAgICAgICAvLyBJZiBncmlkIGlzIGVkaXRhYmxlIHRoZW4gYWRkIGVkaXRv ciBlbHNlIG1ha2UgaXQgcmVhZG9ubHkKICAgICAgICAgICAgIGlmKGMuY2Vs bCA9PSAnSnNvbicpIHsKQEAgLTY0MSw3ICs2MDIsNyBAQCBkZWZpbmUoWwog CiAgICAgICAgIC8vIEFkZCBvdXIgb3duIGN1c3RvbSBwcmltYXJ5IGtleSB0 byBrZWVwIHRyYWNrIG9mIGNoYW5nZXMKICAgICAgICAgXy5lYWNoKGNvbGxl Y3Rpb24sIGZ1bmN0aW9uKHJvdyl7Ci0gICAgICAgICAgcm93WydfX3RlbXBf UEsnXSA9IGVwaWNSYW5kb21TdHJpbmcoMTUpOworICAgICAgICAgIHJvd1sn X190ZW1wX1BLJ10gPSBTcWxFZGl0b3JVdGlscy5lcGljUmFuZG9tU3RyaW5n KDE1KTsKICAgICAgICAgfSk7CiAKICAgICAgICAgLy8gQWRkLW9uIGZ1bmN0 aW9uIHdoaWNoIGFsbG93IHVzIHRvIGlkZW50aWZ5IHRoZSBmYXVsdHkgcm93 IGFmdGVyIGluc2VydC91cGRhdGUKQEAgLTY5Niw2ICs2NTcsMTMgQEAgZGVm aW5lKFsKICAgICAgICAgICAgICAgICBzZXRTdGFnZWRSb3dzLmJpbmQoZWRp dG9yX2RhdGEpKTsKICAgICAgICAgfQogCisgICAgICAgIGdyaWQub25Db2x1 bW5zUmVzaXplZC5zdWJzY3JpYmUoZnVuY3Rpb24gKGUsIGFyZ3MpIHsKKyAg ICAgICAgICAgIHZhciBjb2x1bW5zID0gdGhpcy5nZXRDb2x1bW5zKCk7Cisg ICAgICAgICAgICBfLmVhY2goY29sdW1ucywgZnVuY3Rpb24oY29sLCBrZXkp IHsKKyAgICAgICAgICAgICAgICB2YXIgY29sdW1uX3NpemUgPSBzZWxmLmhh bmRsZXJbJ2NvbF9zaXplJ107CisgICAgICAgICAgICAgICAgY29sdW1uX3Np emVbc2VsZi5oYW5kbGVyWyd0YWJsZV9uYW1lJ11dW2NvbFsnaWQnXV0gPSBj b2xbJ3dpZHRoJ107CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CiAK ICAgICAgICAgLy8gTGlzdGVuZXIgZnVuY3Rpb24gd2hpY2ggd2lsbCBiZSBj YWxsZWQgYmVmb3JlIHVzZXIgdXBkYXRlcyBleGlzdGluZyBjZWxsCiAgICAg ICAgIC8vIFRoaXMgd2lsbCBiZSB1c2VkIHRvIGNvbGxlY3QgcHJpbWFyeSBr ZXkgZm9yIHRoYXQgcm93CkBAIC04NDQsNyArODEyLDcgQEAgZGVmaW5lKFsK ICAgICAgICAgLy8gTGlzdGVuZXIgZnVuY3Rpb24gd2hpY2ggd2lsbCBiZSBj YWxsZWQgd2hlbiB1c2VyIGFkZHMgbmV3IHJvd3MKICAgICAgICAgZ3JpZC5v bkFkZE5ld1Jvdy5zdWJzY3JpYmUoZnVuY3Rpb24gKGUsIGFyZ3MpIHsKICAg ICAgICAgICAvLyBzZWxmLmhhbmRsZXIuZGF0YV9zdG9yZS5hZGRlZCB3aWxs IGhvbGRzIGFsbCB0aGUgbmV3bHkgYWRkZWQgcm93cy9kYXRhCi0gICAgICAg ICAgdmFyIF9rZXkgPSBlcGljUmFuZG9tU3RyaW5nKDEwKSwKKyAgICAgICAg ICB2YXIgX2tleSA9IFNxbEVkaXRvclV0aWxzLmVwaWNSYW5kb21TdHJpbmco MTApLAogICAgICAgICAgICAgY29sdW1uID0gYXJncy5jb2x1bW4sCiAgICAg ICAgICAgICBpdGVtID0gYXJncy5pdGVtLAogICAgICAgICAgICAgZGF0YV9s ZW5ndGggPSB0aGlzLmdyaWQuZ2V0RGF0YUxlbmd0aCgpLApkaWZmIC0tZ2l0 IGEvd2ViL3JlZ3Jlc3Npb24vamF2YXNjcmlwdC9zcWxlZGl0b3JfdXRpbHNf c3BlYy5qcyBiL3dlYi9yZWdyZXNzaW9uL2phdmFzY3JpcHQvc3FsZWRpdG9y X3V0aWxzX3NwZWMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMC4uNGI3OWRjMAotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9yZWdyZXNz aW9uL2phdmFzY3JpcHQvc3FsZWRpdG9yX3V0aWxzX3NwZWMuanMKQEAgLTAs MCArMSwyNyBAQAorLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8v CisvLyBwZ0FkbWluIDQgLSBQb3N0Z3JlU1FMIFRvb2xzCisvLworLy8gQ29w eXJpZ2h0IChDKSAyMDEzIC0gMjAxNywgVGhlIHBnQWRtaW4gRGV2ZWxvcG1l bnQgVGVhbQorLy8gVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciB0 aGUgUG9zdGdyZVNRTCBMaWNlbmNlCisvLworLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8KKworZGVmaW5lKFsic291cmNlcy9zcWxlZGl0b3JfdXRp bHMiXSwKK2Z1bmN0aW9uIChTcWxFZGl0b3JVdGlscykgeworICBkZXNjcmli ZSgiU3FsRWRpdG9yVXRpbHMiLCBmdW5jdGlvbiAoKSB7CisKKyAgICBkZXNj cmliZSgiR2VuZXJhdGUgYSByYW5kb20gc3RyaW5nIG9mIHNpemUgMTAiLCBm dW5jdGlvbiAoKSB7CisgICAgICBpdCgicmV0dXJucyBzdHJpbmcgb2YgbGVu Z3RoIDEwIiwgZnVuY3Rpb24gKCkgeworICAgICAgICBleHBlY3QoU3FsRWRp dG9yVXRpbHMuZXBpY1JhbmRvbVN0cmluZygxMCkubGVuZ3RoKS50b0VxdWFs KDEwKTsKKyAgICAgIH0pOworICAgIH0pOworCisgICAgZGVzY3JpYmUoIkdl bmVyYXRlIGEgdW5pcXVlIGhhc2ggZm9yIGdpdmVuIHN0cmluZyIsIGZ1bmN0 aW9uICgpIHsKKyAgICAgIGl0KCJyZXR1cm5zIHVuaXF1ZSBoYXNoIiwgZnVu Y3Rpb24gKCkgeworICAgICAgICBleHBlY3QoU3FsRWRpdG9yVXRpbHMuZ2V0 SGFzaCgnc2VsZWN0ICogZnJvbSB0ZXN0JykpLnRvRXF1YWwoNDAzMzc5NjMw KTsKKyAgICAgIH0pOworICAgIH0pOworCisgIH0pOworfSk7Cg== --001a114449368170bb0551600c13 Content-Type: text/plain Content-Disposition: inline Content-Transfer-Encoding: 8bit MIME-Version: 1.0 -- Sent via pgadmin-hackers mailing list (pgadmin-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgadmin-hackers --001a114449368170bb0551600c13--