On Mon, Aug 12, 2019 at 4:57 PM Jeevan Chalke < jeevan.cha...@enterprisedb.com> wrote:
> > > On Fri, Aug 9, 2019 at 6:36 PM Robert Haas <robertmh...@gmail.com> wrote: > >> On Wed, Aug 7, 2019 at 5:46 AM Jeevan Chalke >> <jeevan.cha...@enterprisedb.com> wrote: >> > So, do you mean we should just do fread() and fwrite() for the whole >> file? >> > >> > I thought it is better if it was done by the OS itself instead of >> reading 1GB >> > into the memory and writing the same to the file. >> >> Well, 'cp' is just a C program. If they can write code to copy a >> file, so can we, and then we're not dependent on 'cp' being installed, >> working properly, being in the user's path or at the hard-coded >> pathname we expect, etc. There's an existing copy_file() function in >> src/backed/storage/file/copydir.c which I'd probably look into >> adapting for frontend use. I'm not sure whether it would be important >> to adapt the data-flushing code that's present in that routine or >> whether we could get by with just the loop to read() and write() data. >> > > Agree that we can certainly use open(), read(), write(), and close() here, > but > given that pg_basebackup.c and basbackup.c are using file operations, I > think > using fopen(), fread(), fwrite(), and fclose() will be better here, > at-least > for consistetncy. > +1 for using fopen(), fread(), fwrite(), and fclose() > Let me know if we still want to go with native OS calls. > > -1 for OS call > >> -- >> Robert Haas >> EnterpriseDB: http://www.enterprisedb.com >> The Enterprise PostgreSQL Company >> > > > -- > Jeevan Chalke > Technical Architect, Product Development > EnterpriseDB Corporation > The Enterprise PostgreSQL Company > > -- Ibrar Ahmed