Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dI9m6-0006xG-L3 for pgadmin-hackers@arkaria.postgresql.org; Tue, 06 Jun 2017 08:23: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 1dI9m5-0006as-UQ for pgadmin-hackers@arkaria.postgresql.org; Tue, 06 Jun 2017 08:23: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 1dI9lq-00069n-JD for pgadmin-hackers@postgresql.org; Tue, 06 Jun 2017 08:23:22 +0000 Received: from mail-wm0-x232.google.com ([2a00:1450:400c:c09::232]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.84_2) (envelope-from ) id 1dI9ln-0004Pu-2y for pgadmin-hackers@postgresql.org; Tue, 06 Jun 2017 08:23:21 +0000 Received: by mail-wm0-x232.google.com with SMTP id n195so95012786wmg.1 for ; Tue, 06 Jun 2017 01:23:18 -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=H2l/5KhJ8sgmt+u7TE9TCkwORxDPjx7ds+o8m5Kgy44=; b=EefWTGxv5eE3KbMXoPCJeK/698H0NNTVbePpNiLw21nJ1iXPgl6BcEmScwAQXR0PcU dAysIOTQKe8YUnVfFhaZPJ/PCbrMTtEKPuakrr2q++AdUFM5nll9qxyG8qAzzE4Xbvxd +B2uW1jSge4KZ8dIQ5EWI7PXdEudW6H6GFO+T329/srfjOJB10Xdu4ohPT1v/PbvfNPY BZDjQtCpAZQ5O+Jy30Mg8sEXLbLs+5SNN2XHozPvKrj3cNW6fYpBnMmXTiZjZYL8pYHj 5eWkUx8rEtN+NO+VPaXmYwZm2dpaFlVmEUhsllqlHgb82JV4/t57jmJl4dNBRoKoj57I 7mgA== 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=H2l/5KhJ8sgmt+u7TE9TCkwORxDPjx7ds+o8m5Kgy44=; b=DJisH8nLFHqhRg4s7rpd3lJuR/cT4ZgqmlST79ZimiUUWGfnG7qWQTobcyjiS9FKN7 FALZ/dEY99FPQBveY1cV/+eu0oObKiZtl6En2uOwt6kk0tFPF0eDS9BViZVS7VKzymaV KZL0n5C1tIpz+l6bJQ9JJGrxHLb4wqetX8CKoOeOSfy+VQtUUMDmgU9xxFgRXWkDzXr0 rcBFAgWaHXp6laaqoTKqeplyR5WbUURbLeU8yAMzYBiL1/YsInWYNYuHQTFJJtFx/zsE ocwXco7lEncLEVvTudhMeFCW5Q+/SXtRIx9KvzEKKSXjcktm6TFvayFOfAjM+9NGYB2v fULw== X-Gm-Message-State: AODbwcABwJaQcX1cZaTjbMlpx36zBP1384cJKWvjw4n+aZ85rVOjF+AL t6MRxWvfoKCYj6Yp3726HCj8/FJ4PX6e X-Received: by 10.28.51.73 with SMTP id z70mr10308600wmz.65.1496737397065; Tue, 06 Jun 2017 01:23:17 -0700 (PDT) MIME-Version: 1.0 Received: by 10.28.19.138 with HTTP; Tue, 6 Jun 2017 01:22:46 -0700 (PDT) In-Reply-To: References: From: Surinder Kumar Date: Tue, 6 Jun 2017 13:52:46 +0530 Message-ID: Subject: Re: Re: [pgAdmin4][Patch][Feature #1971]: Remember column sizes between executions of the same query in the query tool To: Shruti B Iyer Cc: pgadmin-hackers , Matthew Kleiman Content-Type: multipart/mixed; boundary="001a11443ed6e0614f0551465462" 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 --001a11443ed6e0614f0551465462 Content-Type: multipart/alternative; boundary="001a11443ed6e0614a0551465460" --001a11443ed6e0614a0551465460 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable 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 < > 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 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 >>> >>> =E2=80=8Bit =E2=80=8B >>> displays 3 columns >>> =E2=80=8Bbut 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 ?=E2=80=8B >>> >>> 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 >> > --001a11443ed6e0614a0551465460 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi = All,

=
Please find updated = patch which includes Jasmine test cases for functions getHash and calculateColumnW= idth
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 like that you = have extracted out the new utility functions and the epicRandomString funct= ion too.=C2=A0

This patch will likely affect the <= a href=3D"https://www.postgresql.org/message-id/flat/CAAtBm9V-tNQrtjxt4n8JJ= ek5M4v9KW_h3sgbL1ydcBB%2BtLus2w%40mail.gmail.com#CAAtBm9V-tNQrtjxt4n8JJek5M= 4v9KW_h3sgbL1ydcBB+tLus2w@mail.gmail.com" target=3D"_blank">Query Results p= atch that is currently under review. In order to assist either us or yo= urself when making a merge between these patches, it would help to have jas= mine unit testing for the two new functions, getHa= sh and calculate_column_width.=C2=A0=

Also, we suggest that you rename calculate_column= _width to calculateColumnWidth for consistency with javascript code style.<= /div>

Thanks,
Shruti and Matt

On Mon, Jun 5, 2017 at 9:16 AM Surinder Kumar <= ;surin= der.kumar@enterprisedb.com> wrote:
Staged changes are missed in previous patch, so please ignore.
Please find attac= hed updated patch.

On Mon, Jun 5, 2017 at 4:29 PM, Surinder Kumar <surinder.kumar@enterprisedb.com> wrote:
Hi

This p= atch contains two fixes:

= 1) In Query/tool or Edit grid, the width of table column header is fixed de= pending 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 p= oint of view. The main concern was to display as much as the content of col= umn 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)=C2=A0Remember column size after = re-running a query.

The approach is to extract table name from the query exe= cuted 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 ex= ecuted.

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

= =E2=80=8Bit =E2=80=8B
displays 3 columns
=E2=80=8Bbut don't have any ta= ble name. In that case,
=C2=A0i use a hash generator function which returns= unique hash for a query written in query editor and adjusted column(s) wid= th are stored against that hash in object.

Is there any way to get tem= porary table name(avoiding unique hash) for such queries ?=E2=80=8B

Also, Mov= ed utilities functions into pgadmin/static/utils.js=C2=A0

Please find attac= hed patch and review.

Thanks,
Surinder Kuma= r


--
Sent via pgadmin-hackers mailing list (pgadmin-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgadmin-ha= ckers

--001a11443ed6e0614a0551465460-- --001a11443ed6e0614f0551465462 Content-Type: application/octet-stream; name="Feature_1971_with_jasmine_tests.patch" Content-Disposition: attachment; filename="Feature_1971_with_jasmine_tests.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_j3laqo8m0 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 cy9zcWxlZGl0b3IvanMvc3FsZWRpdG9yLmpzCmluZGV4IDU5N2M0MzYuLjMx NzBiYzEgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL3Rvb2xzL3NxbGVkaXRv ci90ZW1wbGF0ZXMvc3FsZWRpdG9yL2pzL3NxbGVkaXRvci5qcworKysgYi93 ZWIvcGdhZG1pbi90b29scy9zcWxlZGl0b3IvdGVtcGxhdGVzL3NxbGVkaXRv ci9qcy9zcWxlZGl0b3IuanMKQEAgLTMsNyArMyw3IEBAIGRlZmluZSgKICAg ICAnanF1ZXJ5JywgJ3VuZGVyc2NvcmUnLCAndW5kZXJzY29yZS5zdHJpbmcn LCAnYWxlcnRpZnknLCAncGdhZG1pbicsCiAgICAgJ2JhY2tib25lJywgJ2Jh Y2tncmlkJywgJ2NvZGVtaXJyb3InLCAncGdhZG1pbi5taXNjLmV4cGxhaW4n LAogICAgICdzb3VyY2VzL3NlbGVjdGlvbi9ncmlkX3NlbGVjdG9yJywgJ3Nv dXJjZXMvc2VsZWN0aW9uL2NsaXBib2FyZCcsCi0gICAgJ3NvdXJjZXMvc2Vs ZWN0aW9uL2NvcHlfZGF0YScsCisgICAgJ3NvdXJjZXMvc2VsZWN0aW9uL2Nv cHlfZGF0YScsICdzb3VyY2VzL3NxbGVkaXRvcl91dGlscycsCiAKICAgICAn c2xpY2tncmlkJywgJ2Jvb3RzdHJhcCcsICdwZ2FkbWluLmJyb3dzZXInLCAn d2Nkb2NrZXInLAogICAgICdjb2RlbWlycm9yL21vZGUvc3FsL3NxbCcsICdj b2RlbWlycm9yL2FkZG9uL3NlbGVjdGlvbi9tYXJrLXNlbGVjdGlvbicsCkBA IC0yNyw3ICsyNyw4IEBAIGRlZmluZSgKICAgICAnc2xpY2tncmlkL3NsaWNr LmdyaWQnCiAgIF0sCiAgIGZ1bmN0aW9uKAotICAgICQsIF8sIFMsIGFsZXJ0 aWZ5LCBwZ0FkbWluLCBCYWNrYm9uZSwgQmFja2dyaWQsIENvZGVNaXJyb3Is IHBnRXhwbGFpbiwgR3JpZFNlbGVjdG9yLCBjbGlwYm9hcmQsIGNvcHlEYXRh CisgICAgJCwgXywgUywgYWxlcnRpZnksIHBnQWRtaW4sIEJhY2tib25lLCBC YWNrZ3JpZCwgQ29kZU1pcnJvciwgcGdFeHBsYWluLCBHcmlkU2VsZWN0b3Is IGNsaXBib2FyZCwgY29weURhdGEsCisgICAgU3FsRWRpdG9yVXRpbHMKICAg KSB7CiAgICAgLyogUmV0dXJuIGJhY2ssIHRoaXMgaGFzIGJlZW4gY2FsbGVk IG1vcmUgdGhhbiBvbmNlICovCiAgICAgaWYgKHBnQWRtaW4uU3FsRWRpdG9y KQpAQCAtMzksMjggKzQwLDYgQEAgZGVmaW5lKAogICAgICAgICBwZ0Jyb3dz ZXIgPSBwZ0FkbWluLkJyb3dzZXIsCiAgICAgICAgIFNsaWNrID0gd2luZG93 LlNsaWNrOwogCi0gICAgLyogUmVmZXJlbmNlIGxpbmsKLSAgICAgKiBodHRw Oi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzEwNTAzNC9jcmVhdGUt Z3VpZC11dWlkLWluLWphdmFzY3JpcHQKLSAgICAgKiBNb2RpZmllZCBhcyBw ZXIgcmVxdWlyZW1lbnQuCi0gICAgICovCi0gICAgZnVuY3Rpb24gZXBpY1Jh bmRvbVN0cmluZyhiKSB7Ci0gICAgICB2YXIgcyA9IFtdOwotICAgICAgdmFy IGhleERpZ2l0cyA9ICIwMTIzNDU2Nzg5YWJjZGVmIjsKLSAgICAgIGZvciAo dmFyIGkgPSAwOyBpIDwgMzY7IGkrKykgewotICAgICAgICAgIHNbaV0gPSBo ZXhEaWdpdHMuc3Vic3RyKAotICAgICAgICAgICAgICAgICAgTWF0aC5mbG9v cihNYXRoLnJhbmRvbSgpICogMHgxMCksIDEKLSAgICAgICAgICAgICAgICAp OwotICAgICAgfQotICAgICAgLy8gYml0cyAxMi0xNSBvZiB0aGUgdGltZV9o aV9hbmRfdmVyc2lvbiBmaWVsZCB0byAwMDEwCi0gICAgICBzWzE0XSA9ICI0 IjsKLSAgICAgIC8vIGJpdHMgNi03IG9mIHRoZSBjbG9ja19zZXFfaGlfYW5k X3Jlc2VydmVkIHRvIDAxCi0gICAgICBzWzE5XSA9IGhleERpZ2l0cy5zdWJz dHIoKHNbMTldICYgMHgzKSB8IDB4OCwgMSk7Ci0gICAgICBzWzhdID0gc1sx M10gPSBzWzE4XSA9IHNbMjNdID0gIi0iOwotCi0gICAgICB2YXIgdXVpZCA9 IHMuam9pbigiIik7Ci0gICAgICByZXR1cm4gdXVpZC5yZXBsYWNlKC8tL2cs ICcnKS5zdWJzdHIoMCwgYik7Ci0gICAgfTsKLQogICAgIC8vIERlZmluZSBr ZXkgY29kZXMgZm9yIHNob3J0Y3V0IGtleXMKICAgICB2YXIgRjVfS0VZID0g MTE2LAogICAgICAgICBGN19LRVkgPSAxMTgsCkBAIC03Myw2ICs1Miw3IEBA IGRlZmluZSgKICAgICAgIGluaXRpYWxpemU6IGZ1bmN0aW9uKG9wdHMpIHsK ICAgICAgICAgdGhpcy4kZWwgPSBvcHRzLmVsOwogICAgICAgICB0aGlzLmhh bmRsZXIgPSBvcHRzLmhhbmRsZXI7CisgICAgICAgIHRoaXMuaGFuZGxlclsn Y29sX3NpemUnXSA9IHt9OwogICAgICAgfSwKIAogICAgICAgLy8gQmluZCBh bGwgdGhlIGV2ZW50cwpAQCAtNDEwLDEyICszOTAsMTggQEAgZGVmaW5lKAog ICAgICAgLyogVG8gcHJvbXB0IHVzZXIgZm9yIHVuc2F2ZWQgY2hhbmdlcyAq LwogICAgICAgdXNlcl9jb25maXJtYXRpb246IGZ1bmN0aW9uKHBhbmVsLCBt c2cpIHsKICAgICAgICAgLy8gSWYgdGhlcmUgaXMgYW55dGhpbmcgdG8gc2F2 ZSB0aGVuIHByb21wdCB1c2VyCisgICAgICAgIHZhciB0aGF0ID0gdGhpczsK ICAgICAgICAgYWxlcnRpZnkuY29uZmlybSgie3sgXygnVW5zYXZlZCBjaGFu Z2VzJykgfX0iLCBtc2csCiAgICAgICAgICAgZnVuY3Rpb24oKSB7CiAgICAg ICAgICAgICAvLyBEbyBub3RoaW5nIGFzIHVzZXIgZG8gbm90IHdhbnQgdG8g c2F2ZSwganVzdCBjb250aW51ZQogICAgICAgICAgICAgd2luZG93Lm9uYmVm b3JldW5sb2FkID0gbnVsbDsKICAgICAgICAgICAgIHBhbmVsLm9mZih3Y0Rv Y2tlci5FVkVOVC5DTE9TSU5HKTsKKyAgICAgICAgICAgIC8vIHJlbW92ZSBj b2xfc2l6ZSBvYmplY3Qgb24gcGFuZWwgY2xvc2UKKyAgICAgICAgICAgIGlm ICghXy5pc1VuZGVmaW5lZCh0aGF0LmhhbmRsZXIuY29sX3NpemUpKSB7Cisg ICAgICAgICAgICAgIGRlbGV0ZSB0aGF0LmhhbmRsZXIuY29sX3NpemU7Cisg ICAgICAgICAgICB9CiAgICAgICAgICAgICB3aW5kb3cudG9wLnBnQWRtaW4u QnJvd3Nlci5kb2NrZXIucmVtb3ZlUGFuZWwocGFuZWwpOworCiAgICAgICAg ICAgfSwKICAgICAgICAgICBmdW5jdGlvbigpIHsKICAgICAgICAgICAgIC8v IFN0b3AsIFVzZXIgd2FudHMgdG8gc2F2ZQpAQCAtNDI2LDUzICs0MTIsNiBA QCBkZWZpbmUoCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgIH0sCiAK LSAgICAgIGdldF9jb2x1bW5fd2lkdGg6IGZ1bmN0aW9uIChjb2x1bW5fdHlw ZSwgZ3JpZF93aWR0aCkgewotCi0gICAgICAgIHN3aXRjaChjb2x1bW5fdHlw ZSkgewotICAgICAgICAgIGNhc2UgImJpZ2ludCI6Ci0gICAgICAgICAgY2Fz ZSAiYmlnaW50W10iOgotICAgICAgICAgIGNhc2UgImJpZ3NlcmlhbCI6Ci0g ICAgICAgICAgY2FzZSAiYml0IjoKLSAgICAgICAgICBjYXNlICJiaXRbXSI6 Ci0gICAgICAgICAgY2FzZSAiYml0IHZhcnlpbmciOgotICAgICAgICAgIGNh c2UgImJpdCB2YXJ5aW5nW10iOgotICAgICAgICAgIGNhc2UgIlwiY2hhclwi IjoKLSAgICAgICAgICBjYXNlICJkZWNpbWFsIjoKLSAgICAgICAgICBjYXNl ICJkZWNpbWFsW10iOgotICAgICAgICAgIGNhc2UgImRvdWJsZSBwcmVjaXNp b24iOgotICAgICAgICAgIGNhc2UgImRvdWJsZSBwcmVjaXNpb25bXSI6Ci0g ICAgICAgICAgY2FzZSAiaW50NHJhbmdlIjoKLSAgICAgICAgICBjYXNlICJp bnQ0cmFuZ2VbXSI6Ci0gICAgICAgICAgY2FzZSAiaW50OHJhbmdlIjoKLSAg ICAgICAgICBjYXNlICJpbnQ4cmFuZ2VbXSI6Ci0gICAgICAgICAgY2FzZSAi aW50ZWdlciI6Ci0gICAgICAgICAgY2FzZSAiaW50ZWdlcltdIjoKLSAgICAg ICAgICBjYXNlICJtb25leSI6Ci0gICAgICAgICAgY2FzZSAibW9uZXlbXSI6 Ci0gICAgICAgICAgY2FzZSAibnVtZXJpYyI6Ci0gICAgICAgICAgY2FzZSAi bnVtZXJpY1tdIjoKLSAgICAgICAgICBjYXNlICJudW1yYW5nZSI6Ci0gICAg ICAgICAgY2FzZSAibnVtcmFuZ2VbXSI6Ci0gICAgICAgICAgY2FzZSAib2lk IjoKLSAgICAgICAgICBjYXNlICJvaWRbXSI6Ci0gICAgICAgICAgY2FzZSAi cmVhbCI6Ci0gICAgICAgICAgY2FzZSAicmVhbFtdIjoKLSAgICAgICAgICBj YXNlICJzZXJpYWwiOgotICAgICAgICAgIGNhc2UgInNtYWxsaW50IjoKLSAg ICAgICAgICBjYXNlICJzbWFsbGludFtdIjoKLSAgICAgICAgICBjYXNlICJz bWFsbHNlcmlhbCI6Ci0gICAgICAgICAgICByZXR1cm4gODA7Ci0gICAgICAg ICAgY2FzZSAiYm9vbGVhbiI6Ci0gICAgICAgICAgY2FzZSAiYm9vbGVhbltd IjoKLSAgICAgICAgICAgIHJldHVybiA2MDsKLSAgICAgICAgfQotCi0gICAg ICAgIC8qIEluIGNhc2Ugb2Ygb3RoZXIgZGF0YSB0eXBlcyB3ZSB3aWxsIGNh bGN1bGF0ZQotICAgICAgICAgKiAyMCUgb2YgdGhlIHRvdGFsIGNvbnRhaW5l ciB3aWR0aCBhbmQgcmV0dXJuIGl0LgotICAgICAgICAgKi8KLSAgICAgICAg cmV0dXJuIE1hdGgucm91bmQoKGdyaWRfd2lkdGggKiAyMCkvIDEwMCkKLSAg ICAgIH0sCi0KICAgICAgIC8qIFJlZ2FyZGluZyBTbGlja0dyaWQgdXNhZ2Ug aW4gcmVuZGVyX2dyaWQgZnVuY3Rpb24uCiAKICAgICAgICBTbGlja0dyaWQg UGx1Z2luczoKQEAgLTU4NSw4ICs1MjQsMjIgQEAgZGVmaW5lKAogICAgICAg ICB9CiAKICAgICAgICAgdmFyIGdyaWRfY29sdW1ucyA9IFtdOworICAgICAg ICB2YXIgY29sdW1uX3NpemUgPSBzZWxmLmhhbmRsZXJbJ2NvbF9zaXplJ10s CisgICAgICAgICAgcXVlcnkgPSBzZWxmLmhhbmRsZXIucXVlcnksCisgICAg ICAgICAgLy8gRXh0cmFjdCB0YWJsZSBuYW1lIGZyb20gcXVlcnkKKyAgICAg ICAgICB0YWJsZV9saXN0ID0gcXVlcnkubWF0Y2goL3NlbGVjdC4qZnJvbVxz KyhcdyspL2kpOworCisgICAgICAgIGlmICghdGFibGVfbGlzdCkgeworICAg ICAgICAgIHRhYmxlX25hbWUgPSBTcWxFZGl0b3JVdGlscy5nZXRIYXNoKHF1 ZXJ5KTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICB0 YWJsZV9uYW1lID0gdGFibGVfbGlzdFsxXTsKKyAgICAgICAgfQorCisgICAg ICAgIHNlbGYuaGFuZGxlclsndGFibGVfbmFtZSddID0gdGFibGVfbmFtZTsK KyAgICAgICAgY29sdW1uX3NpemVbdGFibGVfbmFtZV0gPSBjb2x1bW5fc2l6 ZVt0YWJsZV9uYW1lXSB8fCB7fTsKIAotICAgICAgICB2YXIgZ3JpZF93aWR0 aCA9ICQoJCgnI2VkaXRvci1wYW5lbCcpLmZpbmQoJy53Y0ZyYW1lJylbMV0p LndpZHRoKCkKKyAgICAgICAgdmFyIGdyaWRfd2lkdGggPSAkKCQoJyNlZGl0 b3ItcGFuZWwnKS5maW5kKCcud2NGcmFtZScpWzFdKS53aWR0aCgpOwogICAg ICAgICBfLmVhY2goY29sdW1ucywgZnVuY3Rpb24oYykgewogICAgICAgICAg ICAgdmFyIG9wdGlvbnMgPSB7CiAgICAgICAgICAgICAgIGlkOiBjLm5hbWUs CkBAIC01OTcsOCArNTUwLDE4IEBAIGRlZmluZSgKICAgICAgICAgICAgICAg aGFzX2RlZmF1bHRfdmFsOiBjLmhhc19kZWZhdWx0X3ZhbAogICAgICAgICAg ICAgfTsKIAotICAgICAgICAgICAgLy8gR2V0IHRoZSBjb2x1bW5zIHdpZHRo IGJhc2VkIG9uIGRhdGEgdHlwZQotICAgICAgICAgICAgb3B0aW9uc1snd2lk dGgnXSA9IHNlbGYuZ2V0X2NvbHVtbl93aWR0aChjLnR5cGUsIGdyaWRfd2lk dGgpOworICAgICAgICAgICAgLy8gR2V0IHRoZSBjb2x1bW5zIHdpZHRoIGJh c2VkIG9uIGxvbmdlciBzdHJpbmcgYW1vbmcgZGF0YSB0eXBlIG9yCisgICAg ICAgICAgICAvLyBjb2x1bW4gbmFtZS4KKyAgICAgICAgICAgIHZhciBsYWJl bCA9IGMubGFiZWwuc3BsaXQoJzxicj4nKTsKKyAgICAgICAgICAgIGxhYmVs ID0gbGFiZWxbMF0ubGVuZ3RoID4gbGFiZWxbMV0ubGVuZ3RoID8gbGFiZWxb MF0gOiBsYWJlbFsxXTsKKworICAgICAgICAgICAgaWYgKF8uaXNVbmRlZmlu ZWQoY29sdW1uX3NpemVbdGFibGVfbmFtZV1bYy5uYW1lXSkpIHsKKyAgICAg ICAgICAgICAgICBvcHRpb25zWyd3aWR0aCddID0gU3FsRWRpdG9yVXRpbHMu Y2FsY3VsYXRlQ29sdW1uV2lkdGgobGFiZWwpCisgICAgICAgICAgICAgICAg Y29sdW1uX3NpemVbdGFibGVfbmFtZV1bYy5uYW1lXSA9IFNxbEVkaXRvclV0 aWxzLmNhbGN1bGF0ZUNvbHVtbldpZHRoKGxhYmVsKTsKKyAgICAgICAgICAg IH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIG9wdGlv bnNbJ3dpZHRoJ10gPSBjb2x1bW5fc2l6ZVt0YWJsZV9uYW1lXVtjLm5hbWVd OworICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAvLyBJZiBncmlkIGlz IGVkaXRhYmxlIHRoZW4gYWRkIGVkaXRvciBlbHNlIG1ha2UgaXQgcmVhZG9u bHkKICAgICAgICAgICAgIGlmKGMuY2VsbCA9PSAnSnNvbicpIHsKQEAgLTY0 Miw3ICs2MDUsNyBAQCBkZWZpbmUoCiAKICAgICAgICAgLy8gQWRkIG91ciBv d24gY3VzdG9tIHByaW1hcnkga2V5IHRvIGtlZXAgdHJhY2sgb2YgY2hhbmdl cwogICAgICAgICBfLmVhY2goY29sbGVjdGlvbiwgZnVuY3Rpb24ocm93KXsK LSAgICAgICAgICByb3dbJ19fdGVtcF9QSyddID0gZXBpY1JhbmRvbVN0cmlu ZygxNSk7CisgICAgICAgICAgcm93WydfX3RlbXBfUEsnXSA9IFNxbEVkaXRv clV0aWxzLmVwaWNSYW5kb21TdHJpbmcoMTUpOwogICAgICAgICB9KTsKIAog ICAgICAgICAvLyBBZGQtb24gZnVuY3Rpb24gd2hpY2ggYWxsb3cgdXMgdG8g aWRlbnRpZnkgdGhlIGZhdWx0eSByb3cgYWZ0ZXIgaW5zZXJ0L3VwZGF0ZQpA QCAtNzczLDYgKzczNiwxMyBAQCBkZWZpbmUoCiAgICAgICAgICAgIH0uYmlu ZChlZGl0b3JfZGF0YSkpOwogICAgICAgICB9CiAKKyAgICAgICAgZ3JpZC5v bkNvbHVtbnNSZXNpemVkLnN1YnNjcmliZShmdW5jdGlvbiAoZSwgYXJncykg eworICAgICAgICAgICAgdmFyIGNvbHVtbnMgPSB0aGlzLmdldENvbHVtbnMo KTsKKyAgICAgICAgICAgIF8uZWFjaChjb2x1bW5zLCBmdW5jdGlvbihjb2ws IGtleSkgeworICAgICAgICAgICAgICAgIHZhciBjb2x1bW5fc2l6ZSA9IHNl bGYuaGFuZGxlclsnY29sX3NpemUnXTsKKyAgICAgICAgICAgICAgICBjb2x1 bW5fc2l6ZVtzZWxmLmhhbmRsZXJbJ3RhYmxlX25hbWUnXV1bY29sWydpZCdd XSA9IGNvbFsnd2lkdGgnXTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9 KTsKIAogICAgICAgICAvLyBMaXN0ZW5lciBmdW5jdGlvbiB3aGljaCB3aWxs IGJlIGNhbGxlZCBiZWZvcmUgdXNlciB1cGRhdGVzIGV4aXN0aW5nIGNlbGwK ICAgICAgICAgLy8gVGhpcyB3aWxsIGJlIHVzZWQgdG8gY29sbGVjdCBwcmlt YXJ5IGtleSBmb3IgdGhhdCByb3cKQEAgLTkyMSw3ICs4OTEsNyBAQCBkZWZp bmUoCiAgICAgICAgIC8vIExpc3RlbmVyIGZ1bmN0aW9uIHdoaWNoIHdpbGwg YmUgY2FsbGVkIHdoZW4gdXNlciBhZGRzIG5ldyByb3dzCiAgICAgICAgIGdy aWQub25BZGROZXdSb3cuc3Vic2NyaWJlKGZ1bmN0aW9uIChlLCBhcmdzKSB7 CiAgICAgICAgICAgLy8gc2VsZi5oYW5kbGVyLmRhdGFfc3RvcmUuYWRkZWQg d2lsbCBob2xkcyBhbGwgdGhlIG5ld2x5IGFkZGVkIHJvd3MvZGF0YQotICAg ICAgICAgIHZhciBfa2V5ID0gZXBpY1JhbmRvbVN0cmluZygxMCksCisgICAg ICAgICAgdmFyIF9rZXkgPSBTcWxFZGl0b3JVdGlscy5lcGljUmFuZG9tU3Ry aW5nKDEwKSwKICAgICAgICAgICAgIGNvbHVtbiA9IGFyZ3MuY29sdW1uLAog ICAgICAgICAgICAgaXRlbSA9IGFyZ3MuaXRlbSwKICAgICAgICAgICAgIGRh dGFfbGVuZ3RoID0gdGhpcy5ncmlkLmdldERhdGFMZW5ndGgoKSwKZGlmZiAt LWdpdCBhL3dlYi9yZWdyZXNzaW9uL2phdmFzY3JpcHQvc3FsZWRpdG9yX3V0 aWxzX3NwZWMuanMgYi93ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0L3NxbGVk aXRvcl91dGlsc19zcGVjLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAuLjRiNzlkYzAKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcmVn cmVzc2lvbi9qYXZhc2NyaXB0L3NxbGVkaXRvcl91dGlsc19zcGVjLmpzCkBA IC0wLDAgKzEsMjcgQEAKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v CisvLworLy8gcGdBZG1pbiA0IC0gUG9zdGdyZVNRTCBUb29scworLy8KKy8v IENvcHlyaWdodCAoQykgMjAxMyAtIDIwMTcsIFRoZSBwZ0FkbWluIERldmVs b3BtZW50IFRlYW0KKy8vIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5k ZXIgdGhlIFBvc3RncmVTUUwgTGljZW5jZQorLy8KKy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vCisKK2RlZmluZShbInNvdXJjZXMvc3FsZWRpdG9y X3V0aWxzIl0sCitmdW5jdGlvbiAoU3FsRWRpdG9yVXRpbHMpIHsKKyAgZGVz Y3JpYmUoIlNxbEVkaXRvclV0aWxzIiwgZnVuY3Rpb24gKCkgeworCisgICAg ZGVzY3JpYmUoIkdlbmVyYXRlIGEgcmFuZG9tIHN0cmluZyBvZiBzaXplIDEw IiwgZnVuY3Rpb24gKCkgeworICAgICAgaXQoInJldHVybnMgc3RyaW5nIG9m IGxlbmd0aCAxMCIsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgZXhwZWN0KFNx bEVkaXRvclV0aWxzLmVwaWNSYW5kb21TdHJpbmcoMTApLmxlbmd0aCkudG9F cXVhbCgxMCk7CisgICAgICB9KTsKKyAgICB9KTsKKworICAgIGRlc2NyaWJl KCJHZW5lcmF0ZSBhIHVuaXF1ZSBoYXNoIGZvciBnaXZlbiBzdHJpbmciLCBm dW5jdGlvbiAoKSB7CisgICAgICBpdCgicmV0dXJucyB1bmlxdWUgaGFzaCIs IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgZXhwZWN0KFNxbEVkaXRvclV0aWxz LmdldEhhc2goJ3NlbGVjdCAqIGZyb20gdGVzdCcpKS50b0VxdWFsKDQwMzM3 OTYzMCk7CisgICAgICB9KTsKKyAgICB9KTsKKworICB9KTsKK30pOwo= --001a11443ed6e0614f0551465462 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 --001a11443ed6e0614f0551465462--