On Tue, Feb 18, 2025 at 2:10 PM jian he <jian.universal...@gmail.com> wrote: > > hi.
hi. more cosmetic minor issues. +static int +get_dbname_oid_list_from_mfile(const char *dumpdirpath, SimpleDatabaseOidList *dbname_oid_list) ... + /* + * XXX : before adding dbname into list, we can verify that this db + * needs to skipped for restore or not but as of now, we are making + * a list of all the databases. + */ i think the above comment in get_dbname_oid_list_from_mfile is not necessary. we already have comments in filter_dbnames_for_restore. in get_dbname_oid_list_from_mfile: ``` pfile = fopen(map_file_path, PG_BINARY_R); if (pfile == NULL) pg_fatal("could not open map.dat file: \"%s\"", map_file_path); ``` file does not exist, we use pg_fatal, so if the directory does not exist, we should also use pg_fatal. so if (!IsFileExistsInDirectory(pg_strdup(dumpdirpath), "map.dat")) { pg_log_info("databases restoring is skipped as map.dat file is not present in \"%s\"", dumpdirpath); return 0; } can be if (!IsFileExistsInDirectory(pg_strdup(dumpdirpath), "map.dat")) pg_fatal("map.dat file: \"%s\"/map.dat does not exists", dumpdirpath); + /* Report error if file has any corrupted data. */ + if (!OidIsValid(db_oid) || strlen(dbname) == 0) + pg_fatal("invalid entry in map.dat file at line : %d", count + 1); i think the comments should be + /* Report error and exit if the file has any corrupted data. */ +/* + * filter_dbnames_for_restore + * + * This will remove names from all dblist those can + * be constructed from database_exclude_pattern list. + * + * returns number of dbnames those will be restored. + */ +static int +filter_dbnames_for_restore(PGconn *conn, + SimpleDatabaseOidList *dbname_oid_list, there is no "database_exclude_pattern" list, so the above comments are slightly wrong. +/* + * ReadOneStatement + * + * This will start reading from passed file pointer using fgetc and read till + * semicolon(sql statement terminator for global.sql file) + * + * EOF is returned if end-of-file input is seen; time to shut down. + */ here, "global sql" should change to "gloal.dat". /* sync the resulting file, errors are not fatal */ - if (dosync) + if (dosync && (archDumpFormat == archNull)) (void) fsync_fname(filename, false); does this mean pg_dumpall --no-sync option only works for plain format. if so, we need to update the pg_dumpall --no-sync section.