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.96) (envelope-from ) id 1wCGNl-001oNm-15 for pgsql-hackers@arkaria.postgresql.org; Mon, 13 Apr 2026 12:27:13 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wCGNi-006eHa-1p for pgsql-hackers@arkaria.postgresql.org; Mon, 13 Apr 2026 12:27:11 +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.96) (envelope-from ) id 1wCGNi-006eHR-0u for pgsql-hackers@lists.postgresql.org; Mon, 13 Apr 2026 12:27:11 +0000 Received: from mail-yx1-xb12b.google.com ([2607:f8b0:4864:20::b12b]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wCGNh-00000000pcn-0g5w for pgsql-hackers@lists.postgresql.org; Mon, 13 Apr 2026 12:27:10 +0000 Received: by mail-yx1-xb12b.google.com with SMTP id 956f58d0204a3-651b4d09141so1996639d50.1 for ; Mon, 13 Apr 2026 05:27:08 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1776083227; cv=none; d=google.com; s=arc-20240605; b=WEWW7ApnoZHBaCQXf3oET+7IayjxNzE6CA8DLwMGQfjTDT6PVMlTyCJagZh6WVqtBh DbZ8ZLjwyzYmYFa/9VsqZQ8o0Fudie+0lME0Of+Oj81Suoifyx62DEgAi/hJtUMO0wBq DXjBCS4ABa2JnB73BRpGPr7qZ4Tda6P0SjOcqeKPgnWc84dZkT7H4s4tp1TrFVUXEJa8 wtWXkTMBO+mgqSnjgsRzVAcQlFS6x9s5tEREHtdn9OymdwlCzt5CYZJMUZOAQaHdaXP5 1X5HEX9BGybbl0gIMDd6s3IdY28PfdLPkHHX30osIMlyX/CTUwVpMf/Lp9YrnqU2Kkqh fmQA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:references:in-reply-to :mime-version:dkim-signature; bh=xkg/Pc+CWPtfVej4mhplMfENV3QQ2k2recmV8WKVYEc=; fh=2qudy6VYGvZmCaoWXUZzE0kcbIqeW0vA5SBh/Hl3Djc=; b=L3Pj67JyCW72HDUYazb+DS+DeRyBfYp2n8eZDZdvNA9oGCIyK6vhG4bjW/4MR1uN+L /LDOzwCOL+67GfL234vu0nO31+W25qrlz3UvEYvjxSQkF0Te55fSZQTQK+R37bZkU9iv 37xZEAjTP9vRPySMbRPysNMFKRKdFe1upzo51wk0NP4oJBRQtcOjFB/IzIYcRGuyztU4 xX9NVfkBt3xe01sOLNTzdgLqwxCeY5kfZq/pv3sq20Frdmw7apsoSr6I8L26Fo9MiP2I T4Gpv8UTbPsAL/9hHrAxnqSiN1zWOiBKIaHlPOW9ZQjTKEDH22G/A9O4ehuJpfxpphfY ZsiA==; darn=lists.postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1776083227; x=1776688027; darn=lists.postgresql.org; h=cc:to:subject:message-id:date:from:references:in-reply-to :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=xkg/Pc+CWPtfVej4mhplMfENV3QQ2k2recmV8WKVYEc=; b=LluZMkRX6Ng82UDIcRnrJvcCSBgyezAPwyYb7c2MgXoS5cqYGkXt3DgpFAZwDiU8uR uzGx/iygjpc5DHcIQ+N8UzhhULiir7BswakhMCyj2XgXFwhFgMjumzqZTWVc2T2E/PFN Jg11aZ6W47MaqB7Ct6H6aab83gPt3MQkURaJaYbD5niKLR89MOBrLtuAiTaVS9phAaya c2qYu7e2yLD/zPLQxZcjupw9ZPccpqjhdKPLwMSVqZg8GnveXKDAR8syL2HjH9a4szM7 LjquX2OH0QInCfIlJ9kL9QkxCWklyWZZM/IMMhsA5kEqA59KFSBuEa5vi1qT97B4JcKN Rjwg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776083227; x=1776688027; h=cc:to:subject:message-id:date:from:references:in-reply-to :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=xkg/Pc+CWPtfVej4mhplMfENV3QQ2k2recmV8WKVYEc=; b=Q0yfIJLBJl9tCV4NA3F9pUTctjXKiiaXKaplzkbNwzzxZsaYaR8LRZwfoNc5ZULHsy IGk09bRLEBBIPFVL0YuJOjdV4+TVEec7/xh9CgD900j905yZ3zrNhqGBeVhqbojjYnZf mXvdlhUlk+NtgIhuauxQ9arnxQOIw71byW8pJtWA16oND8AiX4aCRlCVBP3l00xphtSi Y6aKS9mfl0oPgmKHD9PAiqZ6fESoPcJDybfw/BJ4w94kbUA6XwaAPivCxFexqjFVdil7 5bPThC/hbAJGD6ZIHDf2Ti68TrqJRbvton5P3h2tI/YXVkzMYMrU+GbEjUTbqER38Aws mjaQ== X-Gm-Message-State: AOJu0Yy2veESN/CRarO0Gn5Yk7DGGWDlvFTUfAKEzUkocrlnd8xJJWiC Cmkyx8DTAJ+K/56hvz+fiWCm3bueqyxetaPJfxkNdDt51wSblBK6evKzPS5tKFPuIprmtPHHW+2 atvQ4teMtU7stkxUWdJO3hQdfj6UWX6g= X-Gm-Gg: AeBDiet8XGk6lto9G8L5IX+Jqc/f7eG0K5DZi+45MIiZt38ipyBdHb/runp8+u1g3Yt g0ykL3nyfT6J4L4ZwTrKW0f8Py4NGNK5/yg2Frivyi1YCqpGQCNqPT2W+MoRDzPOS0ZjawTNoIt L4fz2Wl4op8gGuk40koaIqvX7mHZRuuvtWCTM97wWjNTPE88lT4XufsHk6FMDGMgoygYN8lAYNL tQPPnaQgReoBNSfnjlaYSekl+ykC1vijZYe7nUMvApGVqGkXkxbQ3pgn/xNTnWYt3w9VMSFPEdX EaDx9dY= X-Received: by 2002:a05:690e:12c9:b0:651:d0a5:cd8 with SMTP id 956f58d0204a3-651d0a52abamr1768065d50.16.1776083227171; Mon, 13 Apr 2026 05:27:07 -0700 (PDT) MIME-Version: 1.0 Received: by 2002:a05:7011:89ce:20b0:50c:dd17:2398 with HTTP; Mon, 13 Apr 2026 05:27:06 -0700 (PDT) In-Reply-To: References: From: "David G. Johnston" Date: Mon, 13 Apr 2026 05:27:06 -0700 X-Gm-Features: AQROBzA2kpd-ZB6CIbnb_JHQAmiVuUkD1GJJ3Lc0MV5Q13rfDyG69dmNk3uUsCw Message-ID: Subject: Re: Show VIRTUAL keyword for virtual generated columns in pg_dump and psql To: Lakshmi N Cc: "pgsql-hackers@lists.postgresql.org" , "dean.a.rasheed@gmail.com" , "peter@eisentraut.org" Content-Type: multipart/alternative; boundary="000000000000d8e083064f56994b" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000d8e083064f56994b Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Monday, April 13, 2026, Lakshmi N wrote: > > pg_dump and psql's \d currently display stored and virtual generated > columns asymmetrically: > > > s_total integer GENERATED ALWAYS AS ((a + b)) STORED > v_total integer GENERATED ALWAYS AS ((a + b)) > > Since VIRTUAL is default most likely this was omitted but with this > puts the burden on the reader to identify whether it is STORED or > VIRTUAL since both kinds coexist in v19. > The output follows existing conventions of not printing extraneous text. Additionally, storage itself is non-standard so the absence of a modifier is producing standard-compliant output. I would -1 changing pg_dump on this basis. I=E2=80=99d be inclined to go with the symmetry/readability ar= gument for psql \d though. David J. --000000000000d8e083064f56994b Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Monday, April 13, 2026, Lakshmi N <lakshmin.jhs@gmail.com> wrote:
pg_dump and psql's \d currently displa= y stored and virtual generated
columns asymmetrically:
=


=C2=A0 =C2=A0 s_total integer GENERATED ALWAYS AS ((a + b)) = STORED
=C2=A0 =C2=A0 v_total integer GENERATED ALWAYS AS ((a + b))
Since VIRTUAL is default most likely this was omitted but with this
=
puts the burden on the reader to identify whether it is = STORED or=C2=A0
VIRTUAL since both kinds coexist in v19.

The output follows existing= conventions of not printing extraneous text.=C2=A0 Additionally, storage i= tself is non-standard so the absence of a modifier is producing standard-co= mpliant output.=C2=A0 I would -1 changing pg_dump on this basis.=C2=A0 I=E2= =80=99d be inclined to go with the symmetry/readability argument for psql \= d though.

David J.

--000000000000d8e083064f56994b--