On Tue, Jun 16, 2020 at 2:36 PM Amit Kapila <amit.kapil...@gmail.com> wrote: > > On Mon, Jun 15, 2020 at 6:29 PM Amit Kapila <amit.kapil...@gmail.com> wrote: > > > > I have few more comments on the patch > > 0013-Change-buffile-interface-required-for-streaming-.patch: > > > > Review comments on 0014-Worker-tempfile-use-the-shared-buffile-infrastru: >
changes_filename(char *path, Oid subid, TransactionId xid) { - char tempdirpath[MAXPGPATH]; - - TempTablespacePath(tempdirpath, DEFAULTTABLESPACE_OID); - - /* - * We might need to create the tablespace's tempfile directory, if no - * one has yet done so. - */ - if ((MakePGDirectory(tempdirpath) < 0) && errno != EEXIST) - ereport(ERROR, - (errcode_for_file_access(), - errmsg("could not create directory \"%s\": %m", - tempdirpath))); - - snprintf(path, MAXPGPATH, "%s/%s%d-%u-%u.changes", - tempdirpath, PG_TEMP_FILE_PREFIX, MyProcPid, subid, xid); + snprintf(path, MAXPGPATH, "%u-%u.changes", subid, xid); Today, I was studying this change and its impact. Initially, I thought that because the patch has removed pgsql_tmp prefix from the filename, it might create problems if the temporary files remain on the disk after the crash. Now as the patch has started using BufFile interface, it seems to be internally taking care of the same by generating names like "base/pgsql_tmp/pgsql_tmp13774.0.sharedfileset/16393-513.changes.0". Basically, it ensures to create the file in the directory starting with pgsql_tmp. I have tried by crashing the server in a situation where the temp files remain and after the restart, they are removed. So, it seems okay to generate file names like that but I still suggest testing other paths like backup where we ignore files whose names start with PG_TEMP_FILE_PREFIX. -- With Regards, Amit Kapila. EnterpriseDB: http://www.enterprisedb.com