Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dHpkR-00076k-FH for pgadmin-hackers@arkaria.postgresql.org; Mon, 05 Jun 2017 11:00:35 +0000 Received: from localhost ([127.0.0.1] helo=postgresql.org) by malur.postgresql.org with smtp (Exim 4.84_2) (envelope-from ) id 1dHpkQ-0002Jo-NT for pgadmin-hackers@arkaria.postgresql.org; Mon, 05 Jun 2017 11:00:34 +0000 Received: from makus.postgresql.org ([2001:4800:1501:1::229]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1dHpkP-0002Je-R3 for pgadmin-hackers@postgresql.org; Mon, 05 Jun 2017 11:00:34 +0000 Received: from mail-wr0-x236.google.com ([2a00:1450:400c:c0c::236]) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.84_2) (envelope-from ) id 1dHpkH-0001Pg-4R for pgadmin-hackers@postgresql.org; Mon, 05 Jun 2017 11:00:32 +0000 Received: by mail-wr0-x236.google.com with SMTP id g76so36240411wrd.1 for ; Mon, 05 Jun 2017 04:00:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=enterprisedb-com.20150623.gappssmtp.com; s=20150623; h=mime-version:from:date:message-id:subject:to; bh=vnXj2+rIlwDqJsYHX0l2TfSc5AaX9LzsH4EiVE54nT8=; b=Y1cI0DL6EsYOAo7rPN0fSBaAQ/PHR+OYidNstUiyxrIc6ZILE1ls/kUyR9l20UPrah 4R3quub3nn6frSn0AwToKJMKkrUFv6Tc2P5L1OAuXn0XfoEZw+fX/wP42dOhdOE3awc8 YA7unsfYXiNd8wWk72djb3iyp887z7QAIVf9EMgOawd2xC4QQgK/mvwP8U2qTY6WrCmZ OiockusgA5Y/XVsscAvLt3x/kNriJaeaPqPpURHG8AYpuWshyE4K7kFxaCHzE9zrDAKE AeLteyHMVHdYqA3sQp4PGbXgK7Z8EUJFU+6mpZFgwAknTzfsoOuE25GRfiM7mZf388iw pccw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=vnXj2+rIlwDqJsYHX0l2TfSc5AaX9LzsH4EiVE54nT8=; b=SoKNFeC8GgQXZf4hazvMRGb6gAprArNR6spGeIy1IaVbvip2NucmRbOg+Vx+iQP8eP axrzu+HDU11l/WiIVL4yoZ1BULDYqQ4rop+gu6FOvQ5dbSi7tS4XCWVh7UYW5hPl5Abb TrxuRmNFRoaafvFq5r+2NFDo1G9iKf1VOKU8y0weNCzEQVgyY5oVolPeBFovJY91VIzw a+24taYJXjjzEd02iaK3122JpXFb6kVQfFtyBODV7YWvQ3a6mvQlNPMNDtPWNCVVnt9Y v7E8AN9Sn7qtrBw+bpyRM2MwLhqyMeaNmexc1N4CHcsEPn1eRdsuvVFoGgIji0qACzaj S8zw== X-Gm-Message-State: AODbwcCo1spXxl1D9uo0oe1MO3n51qKULx9xbXKZNYm6ybuE/zAFDOjf vTdiFHPUrz7G8E5AzAvvfJUublO59l07dIY= X-Received: by 10.223.147.196 with SMTP id 62mr13756144wrp.107.1496660423148; Mon, 05 Jun 2017 04:00:23 -0700 (PDT) MIME-Version: 1.0 Received: by 10.28.19.138 with HTTP; Mon, 5 Jun 2017 03:59:52 -0700 (PDT) From: Surinder Kumar Date: Mon, 5 Jun 2017 16:29:52 +0530 Message-ID: Subject: [pgAdmin4][Patch][Feature #1971]: Remember column sizes between executions of the same query in the query tool To: pgadmin-hackers Content-Type: multipart/mixed; boundary="94eb2c0d9ecedf8f4105513468bf" X-Pg-Spam-Score: -1.9 (-) 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 --94eb2c0d9ecedf8f4105513468bf Content-Type: multipart/alternative; boundary="94eb2c0d9ecedf8f3c05513468bd" --94eb2c0d9ecedf8f3c05513468bd Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable 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 --94eb2c0d9ecedf8f3c05513468bd Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi<= /div>

This patch contains two f= ixes:

1) In Query/tool or= Edit grid, the width of table column header is fixed depending on the colu= mn type(int, boolean, char etc.) due to which the column name or type appea= rs cut from right and doesn't looks good from user point of view. The m= ain concern was to display as much as the content of column should be displ= ayed.

Now the width of co= lumn 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.=

T= he approach is to extract table name from the query executed and use it to = store its columns width.
Whenever the col= umn(s) width of a table is adjusted, the corresponding values are updated i= nto the object and used every time the same query is executed.

If a query is = executed for e.g:

SELECT ge= nerate_series(1, 1000) as id, generate_series(1, 1000) as name, generate_se= ries(1, 1000) as age

=E2=80=8Bit =E2=80=8B<= /div>displays 3 columns
=E2=80=8Bbut don't have any table name. In that case= ,
=C2=A0i use a hash generator function which returns unique hash for a que= ry 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(avoi= ding unique hash) for such queries ?=E2=80=8B

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

<= /div>
Please find attached patch and review.

Than= ks,
Surinder Kumar
--94eb2c0d9ecedf8f3c05513468bd-- --94eb2c0d9ecedf8f4105513468bf Content-Type: application/octet-stream; name="Feature_1971.patch" Content-Disposition: attachment; filename="Feature_1971.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_j3k0wumv0 ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy91dGlscy5qcyBi L3dlYi9wZ2FkbWluL3N0YXRpYy9qcy91dGlscy5qcwpuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMmEwODUzCi0tLSAvZGV2L251bGwK KysrIGIvd2ViL3BnYWRtaW4vc3RhdGljL2pzL3V0aWxzLmpzCkBAIC0wLDAg KzEsNTggQEAKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLwor Ly8gcGdBZG1pbiA0IC0gUG9zdGdyZVNRTCBUb29scworLy8KKy8vIENvcHly aWdodCAoQykgMjAxMyAtIDIwMTcsIFRoZSBwZ0FkbWluIERldmVsb3BtZW50 IFRlYW0KKy8vIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgdGhl IFBvc3RncmVTUUwgTGljZW5jZQorLy8KKy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vCisvLyBUaGlzIGZpbGUgY29udGFpbnMgY29tbW9uIHV0aWxp dGllcyBmdW5jdGlvbnMgdXNlZCBpbiBzcWxlZGl0b3IgbW9kdWxlcworCitk ZWZpbmUoWydqcXVlcnknXSwKKyAgZnVuY3Rpb24gKCQpIHsKKyAgICB2YXIg c3FsRWRpdG9yVXRpbHMgPSB7CisgICAgICAvKiBSZWZlcmVuY2UgbGluayBo dHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzEwNTAzNC9jcmVh dGUtZ3VpZC11dWlkLWluLWphdmFzY3JpcHQKKyAgICAgICAqIE1vZGlmaWVk IGFzIHBlciByZXF1aXJlbWVudC4KKyAgICAgICAqLworICAgICAgZXBpY1Jh bmRvbVN0cmluZzogZnVuY3Rpb24oYikgeworICAgICAgICB2YXIgcyA9IFtd OworICAgICAgICB2YXIgaGV4RGlnaXRzID0gIjAxMjM0NTY3ODlhYmNkZWYi OworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDM2OyBpKyspIHsKKyAg ICAgICAgICAgIHNbaV0gPSBoZXhEaWdpdHMuc3Vic3RyKAorICAgICAgICAg ICAgICAgICAgICBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAweDEwKSwg MQorICAgICAgICAgICAgICAgICAgKTsKKyAgICAgICAgfQorICAgICAgICAv LyBiaXRzIDEyLTE1IG9mIHRoZSB0aW1lX2hpX2FuZF92ZXJzaW9uIGZpZWxk IHRvIDAwMTAKKyAgICAgICAgc1sxNF0gPSAiNCI7CisgICAgICAgIC8vIGJp dHMgNi03IG9mIHRoZSBjbG9ja19zZXFfaGlfYW5kX3Jlc2VydmVkIHRvIDAx CisgICAgICAgIHNbMTldID0gaGV4RGlnaXRzLnN1YnN0cigoc1sxOV0gJiAw eDMpIHwgMHg4LCAxKTsKKyAgICAgICAgc1s4XSA9IHNbMTNdID0gc1sxOF0g PSBzWzIzXSA9ICItIjsKKworICAgICAgICB2YXIgdXVpZCA9IHMuam9pbigi Iik7CisgICAgICAgIHJldHVybiB1dWlkLnJlcGxhY2UoLy0vZywgJycpLnN1 YnN0cigwLCBiKTsKKyAgICAgIH0sCisKKyAgICAgIC8vIFJldHVybnMgYSB1 bmlxdWUgaGFzaCBmb3IgaW5wdXQgc3RyaW5nCisgICAgICBnZXRIYXNoOiBm dW5jdGlvbihpbnB1dCkgeworICAgICAgICB2YXIgaGFzaCA9IDAsIGxlbiA9 IGlucHV0Lmxlbmd0aDsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBs ZW47IGkrKykgeworICAgICAgICAgIGhhc2ggID0gKChoYXNoIDw8IDUpIC0g aGFzaCkgKyBpbnB1dC5jaGFyQ29kZUF0KGkpOworICAgICAgICAgIGhhc2gg fD0gMDsgLy8gdG8gMzJiaXQgaW50ZWdlcgorICAgICAgICB9CisgICAgICAg IHJldHVybiBoYXNoOworICAgICAgfSwKKyAgICAgIGNhbGN1bGF0ZV9jb2x1 bW5fd2lkdGg6IGZ1bmN0aW9uICh0ZXh0KSB7CisgICAgICAgIC8vIENhbGN1 bGF0ZSBjb2x1bW4gaGVhZGVyIHdpZHRoIGJhc2VkIG9uIGNvbHVtbiBuYW1l IG9yIHR5cGUKKyAgICAgICAgLy8gQ3JlYXRlIGEgdGVtcG9yYXJ5IGVsZW1l bnQgd2l0aCBnaXZlbiBsYWJlbCwgYXBwZW5kIHRvIGJvZHkKKyAgICAgICAg Ly8gY2FsY3VsYXRlIGl0cyB3aWR0aCBhbmQgcmVtb3ZlIHRoZSBlbGVtZW50 LgorICAgICAgICAkKCdib2R5JykuYXBwZW5kKAorICAgICAgICAgICAgJzxz cGFuIGlkPSJwZ190ZXh0IiBzdHlsZT0idmlzaWJpbGl0eTogaGlkZGVuOyI+ JysgdGV4dCArICc8L3NwYW4+JworICAgICAgICApOworICAgICAgICB2YXIg d2lkdGggPSAkKCcjcGdfdGV4dCcpLndpZHRoKCkgKyAzMDsKKyAgICAgICAg JCgnI3BnX3RleHQnKS5yZW1vdmUoKTsgLy8gcmVtb3ZlIGVsZW1lbnQKKwor ICAgICAgICByZXR1cm4gd2lkdGg7CisgICAgICB9CisgICAgfTsKKyAgICBy ZXR1cm4gc3FsRWRpdG9yVXRpbHM7Cit9KTsKZGlmZiAtLWdpdCBhL3dlYi9w Z2FkbWluL3Rvb2xzL3NxbGVkaXRvci90ZW1wbGF0ZXMvc3FsZWRpdG9yL2pz L3NxbGVkaXRvci5qcyBiL3dlYi9wZ2FkbWluL3Rvb2xzL3NxbGVkaXRvci90 ZW1wbGF0ZXMvc3FsZWRpdG9yL2pzL3NxbGVkaXRvci5qcwppbmRleCA1OTdj NDM2Li4yODk4ZTljIDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi90b29scy9z cWxlZGl0b3IvdGVtcGxhdGVzL3NxbGVkaXRvci9qcy9zcWxlZGl0b3IuanMK KysrIGIvd2ViL3BnYWRtaW4vdG9vbHMvc3FsZWRpdG9yL3RlbXBsYXRlcy9z cWxlZGl0b3IvanMvc3FsZWRpdG9yLmpzCkBAIC0zLDcgKzMsNyBAQCBkZWZp bmUoCiAgICAgJ2pxdWVyeScsICd1bmRlcnNjb3JlJywgJ3VuZGVyc2NvcmUu c3RyaW5nJywgJ2FsZXJ0aWZ5JywgJ3BnYWRtaW4nLAogICAgICdiYWNrYm9u ZScsICdiYWNrZ3JpZCcsICdjb2RlbWlycm9yJywgJ3BnYWRtaW4ubWlzYy5l eHBsYWluJywKICAgICAnc291cmNlcy9zZWxlY3Rpb24vZ3JpZF9zZWxlY3Rv cicsICdzb3VyY2VzL3NlbGVjdGlvbi9jbGlwYm9hcmQnLAotICAgICdzb3Vy Y2VzL3NlbGVjdGlvbi9jb3B5X2RhdGEnLAorICAgICdzb3VyY2VzL3NlbGVj dGlvbi9jb3B5X2RhdGEnLCAnc291cmNlcy91dGlscycsCiAKICAgICAnc2xp Y2tncmlkJywgJ2Jvb3RzdHJhcCcsICdwZ2FkbWluLmJyb3dzZXInLCAnd2Nk b2NrZXInLAogICAgICdjb2RlbWlycm9yL21vZGUvc3FsL3NxbCcsICdjb2Rl bWlycm9yL2FkZG9uL3NlbGVjdGlvbi9tYXJrLXNlbGVjdGlvbicsCkBAIC0y Nyw3ICsyNyw4IEBAIGRlZmluZSgKICAgICAnc2xpY2tncmlkL3NsaWNrLmdy aWQnCiAgIF0sCiAgIGZ1bmN0aW9uKAotICAgICQsIF8sIFMsIGFsZXJ0aWZ5 LCBwZ0FkbWluLCBCYWNrYm9uZSwgQmFja2dyaWQsIENvZGVNaXJyb3IsIHBn RXhwbGFpbiwgR3JpZFNlbGVjdG9yLCBjbGlwYm9hcmQsIGNvcHlEYXRhCisg ICAgJCwgXywgUywgYWxlcnRpZnksIHBnQWRtaW4sIEJhY2tib25lLCBCYWNr Z3JpZCwgQ29kZU1pcnJvciwgcGdFeHBsYWluLCBHcmlkU2VsZWN0b3IsIGNs aXBib2FyZCwgY29weURhdGEsCisgICAgdXRpbHMKICAgKSB7CiAgICAgLyog UmV0dXJuIGJhY2ssIHRoaXMgaGFzIGJlZW4gY2FsbGVkIG1vcmUgdGhhbiBv bmNlICovCiAgICAgaWYgKHBnQWRtaW4uU3FsRWRpdG9yKQpAQCAtMzksMjgg KzQwLDYgQEAgZGVmaW5lKAogICAgICAgICBwZ0Jyb3dzZXIgPSBwZ0FkbWlu LkJyb3dzZXIsCiAgICAgICAgIFNsaWNrID0gd2luZG93LlNsaWNrOwogCi0g ICAgLyogUmVmZXJlbmNlIGxpbmsKLSAgICAgKiBodHRwOi8vc3RhY2tvdmVy Zmxvdy5jb20vcXVlc3Rpb25zLzEwNTAzNC9jcmVhdGUtZ3VpZC11dWlkLWlu LWphdmFzY3JpcHQKLSAgICAgKiBNb2RpZmllZCBhcyBwZXIgcmVxdWlyZW1l bnQuCi0gICAgICovCi0gICAgZnVuY3Rpb24gZXBpY1JhbmRvbVN0cmluZyhi KSB7Ci0gICAgICB2YXIgcyA9IFtdOwotICAgICAgdmFyIGhleERpZ2l0cyA9 ICIwMTIzNDU2Nzg5YWJjZGVmIjsKLSAgICAgIGZvciAodmFyIGkgPSAwOyBp IDwgMzY7IGkrKykgewotICAgICAgICAgIHNbaV0gPSBoZXhEaWdpdHMuc3Vi c3RyKAotICAgICAgICAgICAgICAgICAgTWF0aC5mbG9vcihNYXRoLnJhbmRv bSgpICogMHgxMCksIDEKLSAgICAgICAgICAgICAgICApOwotICAgICAgfQot ICAgICAgLy8gYml0cyAxMi0xNSBvZiB0aGUgdGltZV9oaV9hbmRfdmVyc2lv biBmaWVsZCB0byAwMDEwCi0gICAgICBzWzE0XSA9ICI0IjsKLSAgICAgIC8v IGJpdHMgNi03IG9mIHRoZSBjbG9ja19zZXFfaGlfYW5kX3Jlc2VydmVkIHRv IDAxCi0gICAgICBzWzE5XSA9IGhleERpZ2l0cy5zdWJzdHIoKHNbMTldICYg MHgzKSB8IDB4OCwgMSk7Ci0gICAgICBzWzhdID0gc1sxM10gPSBzWzE4XSA9 IHNbMjNdID0gIi0iOwotCi0gICAgICB2YXIgdXVpZCA9IHMuam9pbigiIik7 Ci0gICAgICByZXR1cm4gdXVpZC5yZXBsYWNlKC8tL2csICcnKS5zdWJzdHIo MCwgYik7Ci0gICAgfTsKLQogICAgIC8vIERlZmluZSBrZXkgY29kZXMgZm9y IHNob3J0Y3V0IGtleXMKICAgICB2YXIgRjVfS0VZID0gMTE2LAogICAgICAg ICBGN19LRVkgPSAxMTgsCkBAIC03Myw2ICs1Miw3IEBAIGRlZmluZSgKICAg ICAgIGluaXRpYWxpemU6IGZ1bmN0aW9uKG9wdHMpIHsKICAgICAgICAgdGhp cy4kZWwgPSBvcHRzLmVsOwogICAgICAgICB0aGlzLmhhbmRsZXIgPSBvcHRz LmhhbmRsZXI7CisgICAgICAgIHRoaXMuaGFuZGxlclsnY29sX3NpemUnXSA9 IHt9OwogICAgICAgfSwKIAogICAgICAgLy8gQmluZCBhbGwgdGhlIGV2ZW50 cwpAQCAtNDEwLDEyICszOTAsMTggQEAgZGVmaW5lKAogICAgICAgLyogVG8g cHJvbXB0IHVzZXIgZm9yIHVuc2F2ZWQgY2hhbmdlcyAqLwogICAgICAgdXNl cl9jb25maXJtYXRpb246IGZ1bmN0aW9uKHBhbmVsLCBtc2cpIHsKICAgICAg ICAgLy8gSWYgdGhlcmUgaXMgYW55dGhpbmcgdG8gc2F2ZSB0aGVuIHByb21w dCB1c2VyCisgICAgICAgIHZhciB0aGF0ID0gdGhpczsKICAgICAgICAgYWxl cnRpZnkuY29uZmlybSgie3sgXygnVW5zYXZlZCBjaGFuZ2VzJykgfX0iLCBt c2csCiAgICAgICAgICAgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAvLyBE byBub3RoaW5nIGFzIHVzZXIgZG8gbm90IHdhbnQgdG8gc2F2ZSwganVzdCBj b250aW51ZQogICAgICAgICAgICAgd2luZG93Lm9uYmVmb3JldW5sb2FkID0g bnVsbDsKICAgICAgICAgICAgIHBhbmVsLm9mZih3Y0RvY2tlci5FVkVOVC5D TE9TSU5HKTsKKyAgICAgICAgICAgIC8vIHJlbW92ZSBjb2xfc2l6ZSBvYmpl Y3Qgb24gcGFuZWwgY2xvc2UKKyAgICAgICAgICAgIGlmICghXy5pc1VuZGVm aW5lZCh0aGF0LmhhbmRsZXIuY29sX3NpemUpKSB7CisgICAgICAgICAgICAg IGRlbGV0ZSB0aGF0LmhhbmRsZXIuY29sX3NpemU7CisgICAgICAgICAgICB9 CiAgICAgICAgICAgICB3aW5kb3cudG9wLnBnQWRtaW4uQnJvd3Nlci5kb2Nr ZXIucmVtb3ZlUGFuZWwocGFuZWwpOworCiAgICAgICAgICAgfSwKICAgICAg ICAgICBmdW5jdGlvbigpIHsKICAgICAgICAgICAgIC8vIFN0b3AsIFVzZXIg d2FudHMgdG8gc2F2ZQpAQCAtNDI2LDUxICs0MTIsMTcgQEAgZGVmaW5lKAog ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICB9LAogCi0gICAgICBnZXRf Y29sdW1uX3dpZHRoOiBmdW5jdGlvbiAoY29sdW1uX3R5cGUsIGdyaWRfd2lk dGgpIHsKLQotICAgICAgICBzd2l0Y2goY29sdW1uX3R5cGUpIHsKLSAgICAg ICAgICBjYXNlICJiaWdpbnQiOgotICAgICAgICAgIGNhc2UgImJpZ2ludFtd IjoKLSAgICAgICAgICBjYXNlICJiaWdzZXJpYWwiOgotICAgICAgICAgIGNh c2UgImJpdCI6Ci0gICAgICAgICAgY2FzZSAiYml0W10iOgotICAgICAgICAg IGNhc2UgImJpdCB2YXJ5aW5nIjoKLSAgICAgICAgICBjYXNlICJiaXQgdmFy eWluZ1tdIjoKLSAgICAgICAgICBjYXNlICJcImNoYXJcIiI6Ci0gICAgICAg ICAgY2FzZSAiZGVjaW1hbCI6Ci0gICAgICAgICAgY2FzZSAiZGVjaW1hbFtd IjoKLSAgICAgICAgICBjYXNlICJkb3VibGUgcHJlY2lzaW9uIjoKLSAgICAg ICAgICBjYXNlICJkb3VibGUgcHJlY2lzaW9uW10iOgotICAgICAgICAgIGNh c2UgImludDRyYW5nZSI6Ci0gICAgICAgICAgY2FzZSAiaW50NHJhbmdlW10i OgotICAgICAgICAgIGNhc2UgImludDhyYW5nZSI6Ci0gICAgICAgICAgY2Fz ZSAiaW50OHJhbmdlW10iOgotICAgICAgICAgIGNhc2UgImludGVnZXIiOgot ICAgICAgICAgIGNhc2UgImludGVnZXJbXSI6Ci0gICAgICAgICAgY2FzZSAi bW9uZXkiOgotICAgICAgICAgIGNhc2UgIm1vbmV5W10iOgotICAgICAgICAg IGNhc2UgIm51bWVyaWMiOgotICAgICAgICAgIGNhc2UgIm51bWVyaWNbXSI6 Ci0gICAgICAgICAgY2FzZSAibnVtcmFuZ2UiOgotICAgICAgICAgIGNhc2Ug Im51bXJhbmdlW10iOgotICAgICAgICAgIGNhc2UgIm9pZCI6Ci0gICAgICAg ICAgY2FzZSAib2lkW10iOgotICAgICAgICAgIGNhc2UgInJlYWwiOgotICAg ICAgICAgIGNhc2UgInJlYWxbXSI6Ci0gICAgICAgICAgY2FzZSAic2VyaWFs IjoKLSAgICAgICAgICBjYXNlICJzbWFsbGludCI6Ci0gICAgICAgICAgY2Fz ZSAic21hbGxpbnRbXSI6Ci0gICAgICAgICAgY2FzZSAic21hbGxzZXJpYWwi OgotICAgICAgICAgICAgcmV0dXJuIDgwOwotICAgICAgICAgIGNhc2UgImJv b2xlYW4iOgotICAgICAgICAgIGNhc2UgImJvb2xlYW5bXSI6Ci0gICAgICAg ICAgICByZXR1cm4gNjA7Ci0gICAgICAgIH0KKyAgICAgIGNhbGN1bGF0ZV9j b2x1bW5fd2lkdGg6IGZ1bmN0aW9uICh0ZXh0KSB7CisgICAgICAgIC8vIENh bGN1bGF0ZSBjb2x1bW4gaGVhZGVyIHdpZHRoIGJhc2VkIG9uIGNvbHVtbiBu YW1lIG9yIHR5cGUKKyAgICAgICAgLy8gQ3JlYXRlIGEgdGVtcG9yYXJ5IGVs ZW1lbnQgd2l0aCBnaXZlbiBsYWJlbCwgYXBwZW5kIHRvIGJvZHkKKyAgICAg ICAgLy8gY2FsY3VsYXRlIGl0cyB3aWR0aCBhbmQgcmVtb3ZlIHRoZSBlbGVt ZW50LgorICAgICAgICAkKCdib2R5JykuYXBwZW5kKAorICAgICAgICAgICAg JzxzcGFuIGlkPSJwZ190ZXh0IiBzdHlsZT0idmlzaWJpbGl0eTogaGlkZGVu OyI+JysgdGV4dCArICc8L3NwYW4+JworICAgICAgICApOworICAgICAgICB2 YXIgd2lkdGggPSAkKCcjcGdfdGV4dCcpLndpZHRoKCkgKyAzMDsKKyAgICAg ICAgJCgnI3BnX3RleHQnKS5yZW1vdmUoKTsgLy8gcmVtb3ZlIGVsZW1lbnQK IAotICAgICAgICAvKiBJbiBjYXNlIG9mIG90aGVyIGRhdGEgdHlwZXMgd2Ug d2lsbCBjYWxjdWxhdGUKLSAgICAgICAgICogMjAlIG9mIHRoZSB0b3RhbCBj b250YWluZXIgd2lkdGggYW5kIHJldHVybiBpdC4KLSAgICAgICAgICovCi0g ICAgICAgIHJldHVybiBNYXRoLnJvdW5kKChncmlkX3dpZHRoICogMjApLyAx MDApCisgICAgICAgIHJldHVybiB3aWR0aDsKICAgICAgIH0sCiAKICAgICAg IC8qIFJlZ2FyZGluZyBTbGlja0dyaWQgdXNhZ2UgaW4gcmVuZGVyX2dyaWQg ZnVuY3Rpb24uCkBAIC01ODUsOCArNTM3LDIyIEBAIGRlZmluZSgKICAgICAg ICAgfQogCiAgICAgICAgIHZhciBncmlkX2NvbHVtbnMgPSBbXTsKKyAgICAg ICAgdmFyIGNvbHVtbl9zaXplID0gc2VsZi5oYW5kbGVyWydjb2xfc2l6ZSdd LAorICAgICAgICAgIHF1ZXJ5ID0gc2VsZi5oYW5kbGVyLnF1ZXJ5LAorICAg ICAgICAgIC8vIEV4dHJhY3QgdGFibGUgbmFtZSBmcm9tIHF1ZXJ5CisgICAg ICAgICAgdGFibGVfbGlzdCA9IHF1ZXJ5Lm1hdGNoKC9zZWxlY3QuKmZyb21c cysoXHcrKS9pKTsKIAotICAgICAgICB2YXIgZ3JpZF93aWR0aCA9ICQoJCgn I2VkaXRvci1wYW5lbCcpLmZpbmQoJy53Y0ZyYW1lJylbMV0pLndpZHRoKCkK KyAgICAgICAgaWYgKCF0YWJsZV9saXN0KSB7CisgICAgICAgICAgdGFibGVf bmFtZSA9IHV0aWxzLmdldEhhc2gocXVlcnkpOworICAgICAgICB9CisgICAg ICAgIGVsc2UgeworICAgICAgICAgIHRhYmxlX25hbWUgPSB0YWJsZV9saXN0 WzFdOworICAgICAgICB9CisKKyAgICAgICAgc2VsZi5oYW5kbGVyWyd0YWJs ZV9uYW1lJ10gPSB0YWJsZV9uYW1lOworICAgICAgICBjb2x1bW5fc2l6ZVt0 YWJsZV9uYW1lXSA9IGNvbHVtbl9zaXplW3RhYmxlX25hbWVdIHx8IHt9Owor CisgICAgICAgIHZhciBncmlkX3dpZHRoID0gJCgkKCcjZWRpdG9yLXBhbmVs JykuZmluZCgnLndjRnJhbWUnKVsxXSkud2lkdGgoKTsKICAgICAgICAgXy5l YWNoKGNvbHVtbnMsIGZ1bmN0aW9uKGMpIHsKICAgICAgICAgICAgIHZhciBv cHRpb25zID0gewogICAgICAgICAgICAgICBpZDogYy5uYW1lLApAQCAtNTk3 LDggKzU2MywxOCBAQCBkZWZpbmUoCiAgICAgICAgICAgICAgIGhhc19kZWZh dWx0X3ZhbDogYy5oYXNfZGVmYXVsdF92YWwKICAgICAgICAgICAgIH07CiAK LSAgICAgICAgICAgIC8vIEdldCB0aGUgY29sdW1ucyB3aWR0aCBiYXNlZCBv biBkYXRhIHR5cGUKLSAgICAgICAgICAgIG9wdGlvbnNbJ3dpZHRoJ10gPSBz ZWxmLmdldF9jb2x1bW5fd2lkdGgoYy50eXBlLCBncmlkX3dpZHRoKTsKKyAg ICAgICAgICAgIC8vIEdldCB0aGUgY29sdW1ucyB3aWR0aCBiYXNlZCBvbiBs b25nZXIgc3RyaW5nIGFtb25nIGRhdGEgdHlwZSBvcgorICAgICAgICAgICAg Ly8gY29sdW1uIG5hbWUuCisgICAgICAgICAgICB2YXIgbGFiZWwgPSBjLmxh YmVsLnNwbGl0KCc8YnI+Jyk7CisgICAgICAgICAgICBsYWJlbCA9IGxhYmVs WzBdLmxlbmd0aCA+IGxhYmVsWzFdLmxlbmd0aCA/IGxhYmVsWzBdIDogbGFi ZWxbMV07CisKKyAgICAgICAgICAgIGlmIChfLmlzVW5kZWZpbmVkKGNvbHVt bl9zaXplW3RhYmxlX25hbWVdW2MubmFtZV0pKSB7CisgICAgICAgICAgICAg ICAgb3B0aW9uc1snd2lkdGgnXSA9IHNlbGYuY2FsY3VsYXRlX2NvbHVtbl93 aWR0aChsYWJlbCkKKyAgICAgICAgICAgICAgICBjb2x1bW5fc2l6ZVt0YWJs ZV9uYW1lXVtjLm5hbWVdID0gc2VsZi5jYWxjdWxhdGVfY29sdW1uX3dpZHRo KGxhYmVsKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2Ugewor ICAgICAgICAgICAgICAgIG9wdGlvbnNbJ3dpZHRoJ10gPSBjb2x1bW5fc2l6 ZVt0YWJsZV9uYW1lXVtjLm5hbWVdOworICAgICAgICAgICAgfQogCiAgICAg ICAgICAgICAvLyBJZiBncmlkIGlzIGVkaXRhYmxlIHRoZW4gYWRkIGVkaXRv ciBlbHNlIG1ha2UgaXQgcmVhZG9ubHkKICAgICAgICAgICAgIGlmKGMuY2Vs bCA9PSAnSnNvbicpIHsKQEAgLTY0Miw3ICs2MTgsNyBAQCBkZWZpbmUoCiAK ICAgICAgICAgLy8gQWRkIG91ciBvd24gY3VzdG9tIHByaW1hcnkga2V5IHRv IGtlZXAgdHJhY2sgb2YgY2hhbmdlcwogICAgICAgICBfLmVhY2goY29sbGVj dGlvbiwgZnVuY3Rpb24ocm93KXsKLSAgICAgICAgICByb3dbJ19fdGVtcF9Q SyddID0gZXBpY1JhbmRvbVN0cmluZygxNSk7CisgICAgICAgICAgcm93Wydf X3RlbXBfUEsnXSA9IHV0aWxzLmVwaWNSYW5kb21TdHJpbmcoMTUpOwogICAg ICAgICB9KTsKIAogICAgICAgICAvLyBBZGQtb24gZnVuY3Rpb24gd2hpY2gg YWxsb3cgdXMgdG8gaWRlbnRpZnkgdGhlIGZhdWx0eSByb3cgYWZ0ZXIgaW5z ZXJ0L3VwZGF0ZQpAQCAtNzczLDYgKzc0OSwxMyBAQCBkZWZpbmUoCiAgICAg ICAgICAgIH0uYmluZChlZGl0b3JfZGF0YSkpOwogICAgICAgICB9CiAKKyAg ICAgICAgZ3JpZC5vbkNvbHVtbnNSZXNpemVkLnN1YnNjcmliZShmdW5jdGlv biAoZSwgYXJncykgeworICAgICAgICAgICAgdmFyIGNvbHVtbnMgPSB0aGlz LmdldENvbHVtbnMoKTsKKyAgICAgICAgICAgIF8uZWFjaChjb2x1bW5zLCBm dW5jdGlvbihjb2wsIGtleSkgeworICAgICAgICAgICAgICAgIHZhciBjb2x1 bW5fc2l6ZSA9IHNlbGYuaGFuZGxlclsnY29sX3NpemUnXTsKKyAgICAgICAg ICAgICAgICBjb2x1bW5fc2l6ZVtzZWxmLmhhbmRsZXJbJ3RhYmxlX25hbWUn XV1bY29sWydpZCddXSA9IGNvbFsnd2lkdGgnXTsKKyAgICAgICAgICAgIH0p OworICAgICAgICB9KTsKIAogICAgICAgICAvLyBMaXN0ZW5lciBmdW5jdGlv biB3aGljaCB3aWxsIGJlIGNhbGxlZCBiZWZvcmUgdXNlciB1cGRhdGVzIGV4 aXN0aW5nIGNlbGwKICAgICAgICAgLy8gVGhpcyB3aWxsIGJlIHVzZWQgdG8g Y29sbGVjdCBwcmltYXJ5IGtleSBmb3IgdGhhdCByb3cKQEAgLTkyMSw3ICs5 MDQsNyBAQCBkZWZpbmUoCiAgICAgICAgIC8vIExpc3RlbmVyIGZ1bmN0aW9u IHdoaWNoIHdpbGwgYmUgY2FsbGVkIHdoZW4gdXNlciBhZGRzIG5ldyByb3dz CiAgICAgICAgIGdyaWQub25BZGROZXdSb3cuc3Vic2NyaWJlKGZ1bmN0aW9u IChlLCBhcmdzKSB7CiAgICAgICAgICAgLy8gc2VsZi5oYW5kbGVyLmRhdGFf c3RvcmUuYWRkZWQgd2lsbCBob2xkcyBhbGwgdGhlIG5ld2x5IGFkZGVkIHJv d3MvZGF0YQotICAgICAgICAgIHZhciBfa2V5ID0gZXBpY1JhbmRvbVN0cmlu ZygxMCksCisgICAgICAgICAgdmFyIF9rZXkgPSB1dGlscy5lcGljUmFuZG9t U3RyaW5nKDEwKSwKICAgICAgICAgICAgIGNvbHVtbiA9IGFyZ3MuY29sdW1u LAogICAgICAgICAgICAgaXRlbSA9IGFyZ3MuaXRlbSwKICAgICAgICAgICAg IGRhdGFfbGVuZ3RoID0gdGhpcy5ncmlkLmdldERhdGFMZW5ndGgoKSwK --94eb2c0d9ecedf8f4105513468bf 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 --94eb2c0d9ecedf8f4105513468bf--