Subject: Re: tab complete for COPY populated materialized view TO

From: Kirill Reshke <[email-masked]>
Date: Wed, 9 Apr 2025 14:25:54 +0500

On Wed, 9 Apr 2025 at 13:23, jian he <[email-masked]> wrote:
>
> hi.
>
> we allow the "COPY table TO" command to copy rows from materialized
> views in [1].
> The attached patch is to add a tab complete for it.
>
> [1] https://git.postgresql.org/cgit/postgresql.git/commit/?id=534874fac0b34535c9a5ab9257d6574f78423578

Hi!
Patch works good for me, but I noticed that psql COPY <tab> suggests
partitioned relation both with and without this patch. Maybe that's
not a big problem, if [0] will be pushed.

[0] https://www.postgresql.org/message-id/CACJufxHjBPrsbNZAp-DCmwvOE_Gkogb%2Brhfqqe1%3DS5cOHR-V7Q%40mail.gmail.com

-- 
Best regards,
Kirill Reshke

---

From: Kirill Reshke <[email-masked]>
Date: Wed, 9 Apr 2025 15:24:00 +0500

On Wed, 9 Apr 2025 at 14:45, Fujii Masao <[email-masked]> wrote:
>
>
>
> On 2025/04/09 18:25, Kirill Reshke wrote:
> Is the partitioned table currently tab-completed for the COPY FROM case?

If I'm not mistaken, yes. I double checked.

> INSTEAD OF INSERT triggers - though maybe that's overkill?

That's wild to me, psql tab completions feature designed to support
postgresql not fully, but in frequent cases. So maybe we should keep
it stupud.

-- 
Best regards,
Kirill Reshke

---

From: Kirill Reshke <[email-masked]>
Date: Fri, 11 Apr 2025 00:19:59 +0500

On Thu, 10 Apr 2025 at 20:07, Fujii Masao <[email-masked]> wrote:
>
>
>
> On 2025/04/09 19:24, Kirill Reshke wrote:
> I agree that it's reasonable to exclude such rarely used objects from
> tab-completion. How about including just tables, partitioned tables,
> foreign tables, and materialized views?
> I've attached a patch for that.
>
> Regards,

Patch is ok. However...

> If we aim to support tab-completion for all valid targets of both COPY TO
and COPY FROM, shouldn't foreign tables also be included?

Ah.. Sorry I missed this part of your message initially. No, foreign
tables are not supported:

```
reshke=# CREATE FOREIGN TABLE ft (i int) server zz OPTIONS ( filename
'zz.csv', format 'csv' );
reshke=# copy ft to stdout;
ERROR:  cannot copy from foreign table "ft"
HINT:  Try the COPY (SELECT ...) TO variant.
```

So we will tab complete for cases that yet to be supported (foreign
tables and partitioned tables);

What's funny is that copying foreign tables using MV works fine

```
reshke=# create materialized view mv as table ft;
SELECT 1
reshke=# copy mv to stdout;
228
```

-- 
Best regards,
Kirill Reshke

---

From: "David G. Johnston" <[email-masked]>
Date: Thu, 10 Apr 2025 12:33:56 -0700

> > I've attached a patch for that.

I concur with the premise of the patch.  Tab-complete is going to happen
before we know whether to/from is specified so the syntax limits our smarts
here.

> tables are not supported:

They are supported for the From variant; valid completions need only
satisfy one of to/from, not both.

> reshke=# copy mv to stdout;

I don’t get why this is “funny” or otherwise surprising.

David J.

---

From: Kirill Reshke <[email-masked]>
Date: Fri, 11 Apr 2025 00:37:56 +0500

On Fri, 11 Apr 2025 at 00:33, David G. Johnston
<[email-masked]> wrote:
>
> They are supported for the From variant; valid completions need only satisfy one of to/from, not both.
>

Thank you. If so, then WFM, and I don't have any more objections.

-- 
Best regards,
Kirill Reshke

---

From: Fujii Masao <[email-masked]>
Date: Mon, 30 Jun 2025 18:39:09 +0900

> Thank you. If so, then WFM, and I don't have any more objections.

I've pushed the patch. Thanks!

Regards,

-- 
Fujii Masao
NTT DATA Japan Corporation