2020年1月2日(木) 20:56 Alvaro Herrera <alvhe...@2ndquadrant.com>: > > On 2020-Jan-02, Kohei KaiGai wrote: > > > 2020年1月2日(木) 12:16 Alvaro Herrera <alvhe...@2ndquadrant.com>: > > > > > > I think this would need to preserve the notion of multi-table truncates. > > > Otherwise it won't be possible to truncate tables linked by FKs. I > > > think this means the new entrypoint needs to receive a list of rels to > > > truncate, not just one. (Maybe an alternative is to make it "please > > > truncate rel X, and be aware that relations Y,Z are also being > > > truncated at the same time".) > > > > Please check at ExecuteTruncateGuts(). It makes a list of relations to be > > truncated, including the relations that references the specified table by > > FK, > > prior to invocation of the new FDW callback. > > So, if multiple foreign tables are involved in a single TRUNCATE command, > > this callback can be invoked multiple times. > > Yeah, that's my concern: if you have postgres_fdw tables linked by FKs > in the remote server, the truncate will fail because it'll try to > truncate them in separate commands instead of using a multi-table > truncate. > Ah, it makes sense. Probably, backend can make sub-list of the foreign tables to be truncated for each pair of FDW and Server, then invoke the FDW callback only once with this list. FDW driver can issue multi-tables truncate on all the foreign tables supplied, with nothing difficult to do.
Best regards, -- HeteroDB, Inc / The PG-Strom Project KaiGai Kohei <kai...@heterodb.com>