Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1r9xYm-003eGg-Qw for pgsql-hackers@arkaria.postgresql.org; Mon, 04 Dec 2023 01:15:45 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1r9xXn-00Dq5M-7D for pgsql-hackers@arkaria.postgresql.org; Mon, 04 Dec 2023 01:14:43 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1r9xXm-00Dq5B-IN for pgsql-hackers@lists.postgresql.org; Mon, 04 Dec 2023 01:14:42 +0000 Received: from mail-yw1-x1131.google.com ([2607:f8b0:4864:20::1131]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1r9xXe-009xuU-LI for pgsql-hackers@postgresql.org; Mon, 04 Dec 2023 01:14:41 +0000 Received: by mail-yw1-x1131.google.com with SMTP id 00721157ae682-5d852ac9bb2so5392707b3.2 for ; Sun, 03 Dec 2023 17:14:34 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=joeconway.com; s=google; t=1701652472; x=1702257272; darn=postgresql.org; h=content-transfer-encoding:in-reply-to:autocrypt:from:references:to :content-language:subject:user-agent:mime-version:date:message-id :from:to:cc:subject:date:message-id:reply-to; bh=dZPny7WOIkiXqNLIqZAQSC8X8egjVPWT2L+7jjGUtGc=; b=MqVMZoDNTJpg0w8gi+Q2pszvu1NVvQsOz4Z6MxcttskHxOeUKRG0BLBSXM4JAg9+5z mcwoSu14nt8V09bBc5WiTLy8yg3MTy6wS8Qar1bstKF8/kSpAfOlu4HRO+i5LXAW5wkj iCie5tC7HdjuQfT24Pgjnp5GhrJi6sd60384L3l+g0gbl1+YpRXQS2aTt3pxvErm4gND e+8PY+Rvc1xhY53cpN5Sp1Em+9geEikhFUlPP0TELlYCjGLPq8GmI5g+xetn13sVAqCU ONsJAQh37Wmld8rYM+kMY0lKQzHj9oRPW/yCehS4eg2EqXYA8A6bRSK8yQwlWBzC/NSn CtHg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1701652472; x=1702257272; h=content-transfer-encoding:in-reply-to:autocrypt:from:references:to :content-language:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=dZPny7WOIkiXqNLIqZAQSC8X8egjVPWT2L+7jjGUtGc=; b=bqhZCotD05jcw/+J6JHgZKj1h/TABU8u7LFPagjaWZGFlqaVJwuKymw2exnxJOippo v60eYBRV7CNmynMCD1bdZHY0z3Doij8DooRrsAwSA9IXqzGMUaGPR7x6I6rdLBp8iuvk ntZrGkJt9G3IpcHKeRtb/pHidM/1SL6O125zfnrV4UHjvktAj53EvfGtokmmJuEPBW7u 7jmAWtZ3YJVuskeUWuaC/BPjHBkgY8zt+tkADzKqqVEWn5HDnoda9PCY61AWL+8cGpV2 ldQ1rW1ZkfvxsQyBBxG3Ei4bLDtgBYU6fr+5q4fwvt4Fw8IDb62X00QhabCjx4Gmv2LN wzGw== X-Gm-Message-State: AOJu0YxL3yJnAozQmNYfQEGAfU41hJWWJCrA8TIxyG9TOeXU/w0rEk2K G+5w7WID4nsOFlHJHIH6sczSCA== X-Google-Smtp-Source: AGHT+IEyNkIAkM9g+xmqh6nFuJ5HNE7WF7HjIOx1RYkGqFHBBmhBuzIKb1BjCe3MI9kWHSYjPh8cTw== X-Received: by 2002:a81:d202:0:b0:5d7:1940:53e7 with SMTP id x2-20020a81d202000000b005d7194053e7mr2419364ywi.95.1701652472672; Sun, 03 Dec 2023 17:14:32 -0800 (PST) Received: from [192.168.4.41] (162-239-31-113.lightspeed.dybhfl.sbcglobal.net. [162.239.31.113]) by smtp.gmail.com with ESMTPSA id q188-20020a8199c5000000b00583f8f41cb8sm2916771ywg.63.2023.12.03.17.14.32 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sun, 03 Dec 2023 17:14:32 -0800 (PST) Message-ID: Date: Sun, 3 Dec 2023 20:14:31 -0500 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: Emitting JSON to file using COPY TO Content-Language: en-US To: Davin Shearer , PostgreSQL-development , Andrew Dunstan References: <3853387.1701096982@sss.pgh.pa.us> <3a98decf-3fe3-4b49-9b68-fda01338872c@sedlakovi.org> <24e3ee88-ec1e-421b-89ae-8a47ee0d2df1@joeconway.com> <7117a356-916c-4cf3-bad8-861490e65dcf@joeconway.com> From: Joe Conway Autocrypt: addr=mail@joeconway.com; keydata= xsFNBEpXMCsBEADDnXUQzjlyi/cX02Gtdy2CLcroE5CsC7DJKdOBDbfgn0kfiIYoV5JniG4l VyzZUodY8yUAagqLYolh0UkBzs9N+qkm7erde4ypw3jzVQ37BuzIvk3nMUbuDZDgxWqX+nVS sKc+BQ5BpzgCHg48leoRO2ohjvYnUhgH3j2rFZCzaj6qQ7mv+XoxOJmUlVQtG06Jwkk7Vu14 7U9nMMM6hyUKzVnmCphnlcMNo26UyVU70MwFfFJgcI0c5fpp8byN56eD6VJVnufO5WAuEhzE qcrSJR2FAlmM90GBY+6vP29twLDCHuSFvrnujNCx/BvCC/a3/gPvyAFp4JtMm9eXAmq3m/Kw 94nTJXVdcbQeQQDp3KIG7MmWS4lnGvPn8v0CjgNaLvZXFLo1FgmUVsyEq1Lww4iRLa6sbpXJ ESx15UEue1k1YZM9C+4F/o3aeKNsAienjw2EXFzcaxIg/C4P493VMi3Qa8ycVxR5iYhUbYdo DFIUQhbFNsYfrtW/qZAELT3FCYFpZYG01e9Hj+cBrXXgyDDkQ5Lq4mlvmkRvuxn61V6Au4HA 0sJiCox5pM1FvzT+aI8HY1BYaiB9Pl4fhpKgmhhlSuglk9v39S4jmlUIb45iLAUVpeNM6Qjm 69pf5da9sm4aGFa7YlDSKf/WcU7z9ITZxsilOi2n7YJiwG7kTQARAQABzSRKb3NlcGggRSBD b253YXkgPG1haWxAam9lY29ud2F5LmNvbT7CwXoEEwEIACQCGwMCHgECF4AFCwkIBwMFFQoJ CAsFFgIDAQAFAlWTVvUCGQEACgkQMyt+aLaZQ0oPCQ/9HyRewMyvAIJRmoXoLAr8AoFLId6R qBJnNX0Lll0RLZui65aQ0+exwX7aH7TxWR16B2gWX3OmLfGT8XITOoG+zt9zsEpLvNkHchkF T/jyAcbuRj5WX9hamZgMbjXAJeCdlhW+fRA9Upb0w4dgBjqK5OgsqMikASL7t2vogHl9H08j vSoQLW+8wTnSBXBeBTBwB7xLIin5WVivzFHUCrnD2UsjeBIW3fmGdpTAjSxRzG+UPYVwXQ8F FLt7DpEytvLWapmZWMRdj0WZ/Q3SOO/Ed0yFqbzuwKaWcFrQBNeS2Sig+FefBNS98f9Hx7ku H3DW34qX/zSSdDh0jLs7X3PkIgF6BZR2TxaCwHPP9ERDiDaUInC9U7We1iZE1DjW8rLMEVJB hY0ClrrF67pnUKTbcU+uajpPn+2Jl74T0Set/XxpHZ4cezcJuqg31R8vHZgd5cf1WKP0D0pc qiuS02BBFkNCs1jQ+raTWcDuE6F1mUO2nvjUBN9r4y5DUbCNSqLKeAe/aA6JaSDkBpoXKdNS +c4rbzbktWkfUW8EhVlCGzNpy4ezEoVsqV2Ex7fNoxsE2vnSylLT9hycAmYf8ryMvniRZqnD T4JgLenIcQlkhB896T7wApOXfD8OJj1/XFxAfPi6vdlsr81uoxuB4euLp8IyduwLORRUogO9 zmAXG5jOwU0ESlcyJwEQAOkTBb9yDhJbMUgvhM11rZwT5tm4Y9TqtEHn0Zy3t9g7bdFFpMva v/KENd3oAtLFpMDf+H3AggFk4ftUwJwiVgJ88ilvCynJUGXiuYIaexY4DLgn4xpnuiEpYEFV dWnlw7dWVTc62exfqIz9bSWRzwfBCY9ruYGEb4RDPDSNSAVyI7sxHzef2asiYxIcxrTrw5Vu gWNlPZcV5/EJ6PUvATjBF2TBkXV7KOciQng2tsQGrGMkY5mduNqwpuh6zfPcVF8LeObe96wv 5ZhPRpO79nef7hnK2lJogp3JIo558Jlbz9WHtQEMZR85+bUhtI825QyNAFz3Jrn7NMgvDikc 2OrWo7YMgMC5hDSWVFqA6/EQCNnDWGABWgeYHZFpnPwsvUWIYdhSilUuj/Tuzvz9ZmucFNbQ bauDQw6VQ38ofGnoYDZFJsGncprB8dBi4tDrIQ+1RlIh6C2Z/eMipqJOT26+spluTjouvnKT 0S5yOgyX0PjbsysgwQdCGNJLHOjhHbSpSmOLaduV3CQo/0+DHT/TBjYfIXjTWouY9TkGxG4e NrxU0u2xAy5bMqOPmsFdjLTWlQUlF/fTMhB54XwI3FHWgnSnXZzStDTmTebLNdT/ftgliAzA 81uMj49j0exv731/v+7udLA1bV8gnZ01zQCASDpWiRQR3fgwcugSUqgRABEBAAHCwV8EGAEI AAkFAkpXMicCGwwACgkQMyt+aLaZQ0pwAQ//bjcWnZg/jjRQ9gbZUGMqniItZYRglBMKIqt4 Fia379JmHwTvavnFkJ8XMZ56UB0FIrgS+sUkRH6cPRQR+7Qi392LD021DXgSsz9CwFHjFyBG HwLEOTRcfYQbtJy0shHDJB4aQTOX3ERDH1PsvJNuevmQMzS0DWFav9+xMz9rKP4N+HffoBIZ E0C1xIE43nD4eLsbycte9sVIrmlNuUti3qUxJAQw8HwfJ6ZbBInHxquApR16uD1u99o6Xlnd FrDlY22tRmHCM0bR81GfGNdcU3Uo+rG/R/k4qa7s9/dgKvMbyH3fHhp/ceKag80Xo8IFurRl 0ZJP3sHJ2QDHCVLat7jRZ+43hi1WlIhFbrgn6IyI0i7XR/W8JjrC5MsKq4TUwGH077sU/kcH YebVJZRbUUst2hAGHDFVBcG12qoKf+ltL9qXJc1y7BGeCoUW6QjOpljpq6ZL4FQUsM0RSRjs 5egE3szPcIf5SyPK6WDOApoAq6M7BBFMGDZwEylYMtr0YekA1u86UA9D2xwLHEbBBp/uiby1 c9JbPJ1Pn8zJP8WZNeRw4Q9TtqVK09+oLirMUSpIDd6KdZ1VgRxOK2re7tjDvkVuYsSrsiJ+ 1iJNEnp9iK0ok0DlJpSCe6KhkxpaTdeoWMXdKuJWec0NIqoAd54ZgBPnr+UPxTixgPq/p6Q= In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk (please don't top quote on the Postgres lists) On 12/3/23 17:38, Davin Shearer wrote: > " being quoted as \\" breaks the JSON. It needs to be \".  This has been > my whole problem with COPY TO for JSON. > > Please validate that the output is in proper format with correct quoting > for special characters. I use `jq` on the command line to validate and > format the output. I just hooked existing "row-to-json machinery" up to the "COPY TO" statement. If the output is wrong (just for for this use case?), that would be a missing feature (or possibly a bug?). Davin -- how did you work around the issue with the way the built in functions output JSON? Andrew -- comments/thoughts? Joe > On Sun, Dec 3, 2023, 10:51 Joe Conway > wrote: > > On 12/3/23 10:31, Davin Shearer wrote: > > Please be sure to include single and double quotes in the test > values > > since that was the original problem (double quoting in COPY TO > breaking > > the JSON syntax). > > test=# copy (select * from foo limit 4) to stdout (format json); > {"id":2456092,"f1":"line with ' in it: > 2456092","f2":"2023-12-03T10:44:40.9712-05:00"} > {"id":2456093,"f1":"line with \\" in it: > 2456093","f2":"2023-12-03T10:44:40.971221-05:00"} > {"id":2456094,"f1":"line with ' in it: > 2456094","f2":"2023-12-03T10:44:40.971225-05:00"} > {"id":2456095,"f1":"line with \\" in it: > 2456095","f2":"2023-12-03T10:44:40.971228-05:00"} > > -- > Joe Conway > PostgreSQL Contributors Team > RDS Open Source Databases > Amazon Web Services: https://aws.amazon.com > -- Joe Conway PostgreSQL Contributors Team RDS Open Source Databases Amazon Web Services: https://aws.amazon.com