@ -428,6 +428,8 @@ main(int argc, char **argv)
char * error_detail = NULL ;
bool user_compression_defined = false ;
DataDirSyncMethod sync_method = DATA_DIR_SYNC_METHOD_FSYNC ;
bool data_only = false ;
bool schema_only = false ;
static DumpOptions dopt ;
@ -543,7 +545,7 @@ main(int argc, char **argv)
switch ( c )
{
case ' a ' : /* Dump data only */
dopt . dataO nly = true ;
data_o nly = true ;
break ;
case ' b ' : /* Dump LOs */
@ -616,7 +618,7 @@ main(int argc, char **argv)
break ;
case ' s ' : /* dump schema only */
dopt . schemaO nly = true ;
schema_o nly = true ;
break ;
case ' S ' : /* Username for superuser in plain text output */
@ -780,21 +782,25 @@ main(int argc, char **argv)
if ( dopt . binary_upgrade )
dopt . sequence_data = 1 ;
if ( dopt . dataOnly & & dopt . schemaO nly )
if ( data_only & & schema_o nly )
pg_fatal ( " options -s/--schema-only and -a/--data-only cannot be used together " ) ;
if ( dopt . schemaO nly & & foreign_servers_include_patterns . head ! = NULL )
if ( schema_o nly & & foreign_servers_include_patterns . head ! = NULL )
pg_fatal ( " options -s/--schema-only and --include-foreign-data cannot be used together " ) ;
if ( numWorkers > 1 & & foreign_servers_include_patterns . head ! = NULL )
pg_fatal ( " option --include-foreign-data is not supported with parallel backup " ) ;
if ( dopt . dataO nly & & dopt . outputClean )
if ( data_o nly & & dopt . outputClean )
pg_fatal ( " options -c/--clean and -a/--data-only cannot be used together " ) ;
if ( dopt . if_exists & & ! dopt . outputClean )
pg_fatal ( " option --if-exists requires option -c/--clean " ) ;
/* set derivative flags */
dopt . dumpSchema = ( ! data_only ) ;
dopt . dumpData = ( ! schema_only ) ;
/*
* - - inserts are already implied above if - - column - inserts or
* - - rows - per - insert were specified .
@ -977,7 +983,7 @@ main(int argc, char **argv)
* - s means " schema only " and LOs are data , not schema , so we never
* include LOs when - s is used .
*/
if ( dopt . include_everything & & ! dopt . schemaOnly & & ! dopt . dontOutputLOs )
if ( dopt . include_everything & & dopt . dumpData & & ! dopt . dontOutputLOs )
dopt . outputLOs = true ;
/*
@ -991,15 +997,15 @@ main(int argc, char **argv)
*/
tblinfo = getSchemaData ( fout , & numTables ) ;
if ( ! dopt . schemaOnly )
if ( dopt . dumpData )
{
getTableData ( & dopt , tblinfo , numTables , 0 ) ;
buildMatViewRefreshDependencies ( fout ) ;
if ( dopt . dataOnly )
if ( ! dopt . dumpSchema )
getTableDataFKConstraints ( ) ;
}
if ( dopt . schemaOnly & & dopt . sequence_data )
if ( ! dopt . dumpData & & dopt . sequence_data )
getTableData ( & dopt , tblinfo , numTables , RELKIND_SEQUENCE ) ;
/*
@ -1091,8 +1097,8 @@ main(int argc, char **argv)
ropt - > cparams . username = dopt . cparams . username ? pg_strdup ( dopt . cparams . username ) : NULL ;
ropt - > cparams . promptPassword = dopt . cparams . promptPassword ;
ropt - > dropSchema = dopt . outputClean ;
ropt - > dataOnly = dopt . dataOnly ;
ropt - > schemaOnly = dopt . schemaOnly ;
ropt - > dumpD ata = dopt . dumpD ata ;
ropt - > dumpSchema = dopt . dumpSchema ;
ropt - > if_exists = dopt . if_exists ;
ropt - > column_inserts = dopt . column_inserts ;
ropt - > dumpSections = dopt . dumpSections ;
@ -1987,7 +1993,7 @@ selectDumpableType(TypeInfo *tyinfo, Archive *fout)
* Mark a default ACL as to be dumped or not
*
* For per - schema default ACLs , dump if the schema is to be dumped .
* Otherwise dump if we are dumping " everything " . Note that dataOnly
* Otherwise dump if we are dumping " everything " . Note that dumpSchema
* and aclsSkip are checked separately .
*/
static void
@ -4161,8 +4167,8 @@ dumpPolicy(Archive *fout, const PolicyInfo *polinfo)
const char * cmd ;
char * tag ;
/* Do nothing in data-only dump */
if ( dopt - > dataOnly )
/* Do nothing if not dumping schema */
if ( ! dopt - > dumpSchema )
return ;
/*
@ -4383,8 +4389,8 @@ dumpPublication(Archive *fout, const PublicationInfo *pubinfo)
char * qpubname ;
bool first = true ;
/* Do nothing in data-only dump */
if ( dopt - > dataOnly )
/* Do nothing if not dumping schema */
if ( ! dopt - > dumpSchema )
return ;
delq = createPQExpBuffer ( ) ;
@ -4701,8 +4707,8 @@ dumpPublicationNamespace(Archive *fout, const PublicationSchemaInfo *pubsinfo)
PQExpBuffer query ;
char * tag ;
/* Do nothing in data-only dump */
if ( dopt - > dataOnly )
/* Do nothing if not dumping schema */
if ( ! dopt - > dumpSchema )
return ;
tag = psprintf ( " %s %s " , pubinfo - > dobj . name , schemainfo - > dobj . name ) ;
@ -4744,8 +4750,8 @@ dumpPublicationTable(Archive *fout, const PublicationRelInfo *pubrinfo)
PQExpBuffer query ;
char * tag ;
/* Do nothing in data-only dump */
if ( dopt - > dataOnly )
/* Do nothing if not dumping schema */
if ( ! dopt - > dumpSchema )
return ;
tag = psprintf ( " %s %s " , pubinfo - > dobj . name , tbinfo - > dobj . name ) ;
@ -5130,8 +5136,8 @@ dumpSubscriptionTable(Archive *fout, const SubRelInfo *subrinfo)
PQExpBuffer query ;
char * tag ;
/* Do nothing in data-only dump */
if ( dopt - > dataOnly )
/* Do nothing if not dumping schema */
if ( ! dopt - > dumpSchema )
return ;
Assert ( fout - > dopt - > binary_upgrade & & fout - > remoteVersion > = 170000 ) ;
@ -5204,8 +5210,8 @@ dumpSubscription(Archive *fout, const SubscriptionInfo *subinfo)
int i ;
char two_phase_disabled [ ] = { LOGICALREP_TWOPHASE_STATE_DISABLED , ' \0 ' } ;
/* Do nothing in data-only dump */
if ( dopt - > dataOnly )
/* Do nothing if not dumping schema */
if ( ! dopt - > dumpSchema )
return ;
delq = createPQExpBuffer ( ) ;
@ -7356,8 +7362,8 @@ getPartitioningInfo(Archive *fout)
/* hash partitioning didn't exist before v11 */
if ( fout - > remoteVersion < 110000 )
return ;
/* needn't bother if schema-only dump */
if ( fout - > dopt - > schemaOnly )
/* needn't bother if not dumping data */
if ( ! fout - > dopt - > dumpData )
return ;
query = createPQExpBuffer ( ) ;
@ -9055,7 +9061,7 @@ getTableAttrs(Archive *fout, TableInfo *tblinfo, int numTables)
* Now get info about column defaults . This is skipped for a data - only
* dump , as it is only needed for table schemas .
*/
if ( ! dopt - > dataOnly & & tbloids - > len > 1 )
if ( dopt - > dumpSchema & & tbloids - > len > 1 )
{
AttrDefInfo * attrdefs ;
int numDefaults ;
@ -9185,7 +9191,7 @@ getTableAttrs(Archive *fout, TableInfo *tblinfo, int numTables)
* Get info about table CHECK constraints . This is skipped for a
* data - only dump , as it is only needed for table schemas .
*/
if ( ! dopt - > dataOnly & & checkoids - > len > 2 )
if ( dopt - > dumpSchema & & checkoids - > len > 2 )
{
ConstraintInfo * constrs ;
int numConstrs ;
@ -10199,13 +10205,13 @@ dumpCommentExtended(Archive *fout, const char *type,
/* Comments are schema not data ... except LO comments are data */
if ( strcmp ( type , " LARGE OBJECT " ) ! = 0 )
{
if ( dopt - > dataOnly )
if ( ! dopt - > dumpSchema )
return ;
}
else
{
/* We do dump LO comments in binary-upgrade mode */
if ( dopt - > schemaOnly & & ! dopt - > binary_upgrade )
if ( ! dopt - > dumpData & & ! dopt - > binary_upgrade )
return ;
}
@ -10312,7 +10318,7 @@ dumpTableComment(Archive *fout, const TableInfo *tbinfo,
return ;
/* Comments are SCHEMA not data */
if ( dopt - > dataOnly )
if ( ! dopt - > dumpSchema )
return ;
/* Search for comments associated with relation, using table */
@ -10758,8 +10764,8 @@ dumpNamespace(Archive *fout, const NamespaceInfo *nspinfo)
PQExpBuffer delq ;
char * qnspname ;
/* Do nothing in data-only dump */
if ( dopt - > dataOnly )
/* Do nothing if not dumping schema */
if ( ! dopt - > dumpSchema )
return ;
q = createPQExpBuffer ( ) ;
@ -10835,8 +10841,8 @@ dumpExtension(Archive *fout, const ExtensionInfo *extinfo)
PQExpBuffer delq ;
char * qextname ;
/* Do nothing in data-only dump */
if ( dopt - > dataOnly )
/* Do nothing if not dumping schema */
if ( ! dopt - > dumpSchema )
return ;
q = createPQExpBuffer ( ) ;
@ -10960,8 +10966,8 @@ dumpType(Archive *fout, const TypeInfo *tyinfo)
{
DumpOptions * dopt = fout - > dopt ;
/* Do nothing in data-only dump */
if ( dopt - > dataOnly )
/* Do nothing if not dumping schema */
if ( ! dopt - > dumpSchema )
return ;
/* Dump out in proper style */
@ -12071,8 +12077,8 @@ dumpShellType(Archive *fout, const ShellTypeInfo *stinfo)
DumpOptions * dopt = fout - > dopt ;
PQExpBuffer q ;
/* Do nothing in data-only dump */
if ( dopt - > dataOnly )
/* Do nothing if not dumping schema */
if ( ! dopt - > dumpSchema )
return ;
q = createPQExpBuffer ( ) ;
@ -12123,8 +12129,8 @@ dumpProcLang(Archive *fout, const ProcLangInfo *plang)
FuncInfo * inlineInfo = NULL ;
FuncInfo * validatorInfo = NULL ;
/* Do nothing in data-only dump */
if ( dopt - > dataOnly )
/* Do nothing if not dumping schema */
if ( ! dopt - > dumpSchema )
return ;
/*
@ -12331,8 +12337,8 @@ dumpFunc(Archive *fout, const FuncInfo *finfo)
int nconfigitems = 0 ;
const char * keyword ;
/* Do nothing in data-only dump */
if ( dopt - > dataOnly )
/* Do nothing if not dumping schema */
if ( ! dopt - > dumpSchema )
return ;
query = createPQExpBuffer ( ) ;
@ -12723,8 +12729,8 @@ dumpCast(Archive *fout, const CastInfo *cast)
const char * sourceType ;
const char * targetType ;
/* Do nothing in data-only dump */
if ( dopt - > dataOnly )
/* Do nothing if not dumping schema */
if ( ! dopt - > dumpSchema )
return ;
/* Cannot dump if we don't have the cast function's info */
@ -12829,8 +12835,8 @@ dumpTransform(Archive *fout, const TransformInfo *transform)
char * lanname ;
const char * transformType ;
/* Do nothing in data-only dump */
if ( dopt - > dataOnly )
/* Do nothing if not dumping schema */
if ( ! dopt - > dumpSchema )
return ;
/* Cannot dump if we don't have the transform functions' info */
@ -12978,8 +12984,8 @@ dumpOpr(Archive *fout, const OprInfo *oprinfo)
char * oprregproc ;
char * oprref ;
/* Do nothing in data-only dump */
if ( dopt - > dataOnly )
/* Do nothing if not dumping schema */
if ( ! dopt - > dumpSchema )
return ;
/*
@ -13265,8 +13271,8 @@ dumpAccessMethod(Archive *fout, const AccessMethodInfo *aminfo)
PQExpBuffer delq ;
char * qamname ;
/* Do nothing in data-only dump */
if ( dopt - > dataOnly )
/* Do nothing if not dumping schema */
if ( ! dopt - > dumpSchema )
return ;
q = createPQExpBuffer ( ) ;
@ -13368,8 +13374,8 @@ dumpOpclass(Archive *fout, const OpclassInfo *opcinfo)
bool needComma ;
int i ;
/* Do nothing in data-only dump */
if ( dopt - > dataOnly )
/* Do nothing if not dumping schema */
if ( ! dopt - > dumpSchema )
return ;
query = createPQExpBuffer ( ) ;
@ -13639,8 +13645,8 @@ dumpOpfamily(Archive *fout, const OpfamilyInfo *opfinfo)
bool needComma ;
int i ;
/* Do nothing in data-only dump */
if ( dopt - > dataOnly )
/* Do nothing if not dumping schema */
if ( ! dopt - > dumpSchema )
return ;
query = createPQExpBuffer ( ) ;
@ -13846,8 +13852,8 @@ dumpCollation(Archive *fout, const CollInfo *collinfo)
const char * colllocale ;
const char * collicurules ;
/* Do nothing in data-only dump */
if ( dopt - > dataOnly )
/* Do nothing if not dumping schema */
if ( ! dopt - > dumpSchema )
return ;
query = createPQExpBuffer ( ) ;
@ -14100,8 +14106,8 @@ dumpConversion(Archive *fout, const ConvInfo *convinfo)
const char * conproc ;
bool condefault ;
/* Do nothing in data-only dump */
if ( dopt - > dataOnly )
/* Do nothing if not dumping schema */
if ( ! dopt - > dumpSchema )
return ;
query = createPQExpBuffer ( ) ;
@ -14248,8 +14254,8 @@ dumpAgg(Archive *fout, const AggInfo *agginfo)
const char * proparallel ;
char defaultfinalmodify ;
/* Do nothing in data-only dump */
if ( dopt - > dataOnly )
/* Do nothing if not dumping schema */
if ( ! dopt - > dumpSchema )
return ;
query = createPQExpBuffer ( ) ;
@ -14578,8 +14584,8 @@ dumpTSParser(Archive *fout, const TSParserInfo *prsinfo)
PQExpBuffer delq ;
char * qprsname ;
/* Do nothing in data-only dump */
if ( dopt - > dataOnly )
/* Do nothing if not dumping schema */
if ( ! dopt - > dumpSchema )
return ;
q = createPQExpBuffer ( ) ;
@ -14646,8 +14652,8 @@ dumpTSDictionary(Archive *fout, const TSDictInfo *dictinfo)
char * nspname ;
char * tmplname ;
/* Do nothing in data-only dump */
if ( dopt - > dataOnly )
/* Do nothing if not dumping schema */
if ( ! dopt - > dumpSchema )
return ;
q = createPQExpBuffer ( ) ;
@ -14722,8 +14728,8 @@ dumpTSTemplate(Archive *fout, const TSTemplateInfo *tmplinfo)
PQExpBuffer delq ;
char * qtmplname ;
/* Do nothing in data-only dump */
if ( dopt - > dataOnly )
/* Do nothing if not dumping schema */
if ( ! dopt - > dumpSchema )
return ;
q = createPQExpBuffer ( ) ;
@ -14788,8 +14794,8 @@ dumpTSConfig(Archive *fout, const TSConfigInfo *cfginfo)
int i_tokenname ;
int i_dictname ;
/* Do nothing in data-only dump */
if ( dopt - > dataOnly )
/* Do nothing if not dumping schema */
if ( ! dopt - > dumpSchema )
return ;
q = createPQExpBuffer ( ) ;
@ -14900,8 +14906,8 @@ dumpForeignDataWrapper(Archive *fout, const FdwInfo *fdwinfo)
PQExpBuffer delq ;
char * qfdwname ;
/* Do nothing in data-only dump */
if ( dopt - > dataOnly )
/* Do nothing if not dumping schema */
if ( ! dopt - > dumpSchema )
return ;
q = createPQExpBuffer ( ) ;
@ -14973,8 +14979,8 @@ dumpForeignServer(Archive *fout, const ForeignServerInfo *srvinfo)
char * qsrvname ;
char * fdwname ;
/* Do nothing in data-only dump */
if ( dopt - > dataOnly )
/* Do nothing if not dumping schema */
if ( ! dopt - > dumpSchema )
return ;
q = createPQExpBuffer ( ) ;
@ -15164,8 +15170,8 @@ dumpDefaultACL(Archive *fout, const DefaultACLInfo *daclinfo)
PQExpBuffer tag ;
const char * type ;
/* Do nothing in data-only dump , or if we're skipping ACLs */
if ( dopt - > dataOnly | | dopt - > aclsSkip )
/* Do nothing if not dumping schema , or if we're skipping ACLs */
if ( ! dopt - > dumpSchema | | dopt - > aclsSkip )
return ;
q = createPQExpBuffer ( ) ;
@ -15265,7 +15271,7 @@ dumpACL(Archive *fout, DumpId objDumpId, DumpId altDumpId,
return InvalidDumpId ;
/* --data-only skips ACLs *except* large object ACLs */
if ( dopt - > dataOnly & & strcmp ( type , " LARGE OBJECT " ) ! = 0 )
if ( ! dopt - > dumpSchema & & strcmp ( type , " LARGE OBJECT " ) ! = 0 )
return InvalidDumpId ;
sql = createPQExpBuffer ( ) ;
@ -15394,13 +15400,13 @@ dumpSecLabel(Archive *fout, const char *type, const char *name,
*/
if ( strcmp ( type , " LARGE OBJECT " ) ! = 0 )
{
if ( dopt - > dataOnly )
if ( ! dopt - > dumpSchema )
return ;
}
else
{
/* We do dump large object security labels in binary-upgrade mode */
if ( dopt - > schemaOnly & & ! dopt - > binary_upgrade )
if ( ! dopt - > dumpData & & ! dopt - > binary_upgrade )
return ;
}
@ -15468,7 +15474,7 @@ dumpTableSecLabel(Archive *fout, const TableInfo *tbinfo, const char *reltypenam
return ;
/* SecLabel are SCHEMA not data */
if ( dopt - > dataOnly )
if ( ! dopt - > dumpSchema )
return ;
/* Search for comments associated with relation, using table */
@ -15707,8 +15713,8 @@ dumpTable(Archive *fout, const TableInfo *tbinfo)
DumpId tableAclDumpId = InvalidDumpId ;
char * namecopy ;
/* Do nothing in data-only dump */
if ( dopt - > dataOnly )
/* Do nothing if not dumping schema */
if ( ! dopt - > dumpSchema )
return ;
if ( tbinfo - > dobj . dump & DUMP_COMPONENT_DEFINITION )
@ -16895,8 +16901,8 @@ dumpTableAttach(Archive *fout, const TableAttachInfo *attachinfo)
PGresult * res ;
char * partbound ;
/* Do nothing in data-only dump */
if ( dopt - > dataOnly )
/* Do nothing if not dumping schema */
if ( ! dopt - > dumpSchema )
return ;
q = createPQExpBuffer ( ) ;
@ -16967,8 +16973,8 @@ dumpAttrDef(Archive *fout, const AttrDefInfo *adinfo)
char * tag ;
char * foreign ;
/* Do nothing in data-only dump */
if ( dopt - > dataOnly )
/* Do nothing if not dumping schema */
if ( ! dopt - > dumpSchema )
return ;
/* Skip if not "separate"; it was dumped in the table's definition */
@ -17056,8 +17062,8 @@ dumpIndex(Archive *fout, const IndxInfo *indxinfo)
char * qindxname ;
char * qqindxname ;
/* Do nothing in data-only dump */
if ( dopt - > dataOnly )
/* Do nothing if not dumping schema */
if ( ! dopt - > dumpSchema )
return ;
q = createPQExpBuffer ( ) ;
@ -17189,8 +17195,8 @@ dumpIndex(Archive *fout, const IndxInfo *indxinfo)
static void
dumpIndexAttach ( Archive * fout , const IndexAttachInfo * attachinfo )
{
/* Do nothing in data-only dump */
if ( fout - > dopt - > dataOnly )
/* Do nothing if not dumping schema */
if ( ! fout - > dopt - > dumpSchema )
return ;
if ( attachinfo - > partitionIdx - > dobj . dump & DUMP_COMPONENT_DEFINITION )
@ -17236,8 +17242,8 @@ dumpStatisticsExt(Archive *fout, const StatsExtInfo *statsextinfo)
PGresult * res ;
char * stxdef ;
/* Do nothing in data-only dump */
if ( dopt - > dataOnly )
/* Do nothing if not dumping schema */
if ( ! dopt - > dumpSchema )
return ;
q = createPQExpBuffer ( ) ;
@ -17312,8 +17318,8 @@ dumpConstraint(Archive *fout, const ConstraintInfo *coninfo)
char * tag = NULL ;
char * foreign ;
/* Do nothing in data-only dump */
if ( dopt - > dataOnly )
/* Do nothing if not dumping schema */
if ( ! dopt - > dumpSchema )
return ;
q = createPQExpBuffer ( ) ;
@ -17662,7 +17668,7 @@ collectSequences(Archive *fout)
if ( fout - > remoteVersion < 100000 )
return ;
else if ( fout - > remoteVersion < 180000 | |
( fout - > dopt - > schemaOnly & & ! fout - > dopt - > sequence_data ) )
( ! fout - > dopt - > dumpData & & ! fout - > dopt - > sequence_data ) )
query = " SELECT seqrelid, format_type(seqtypid, NULL), "
" seqstart, seqincrement, "
" seqmax, seqmin, "
@ -18049,8 +18055,8 @@ dumpTrigger(Archive *fout, const TriggerInfo *tginfo)
char * qtabname ;
char * tag ;
/* Do nothing in data-only dump */
if ( dopt - > dataOnly )
/* Do nothing if not dumping schema */
if ( ! dopt - > dumpSchema )
return ;
query = createPQExpBuffer ( ) ;
@ -18171,8 +18177,8 @@ dumpEventTrigger(Archive *fout, const EventTriggerInfo *evtinfo)
PQExpBuffer delqry ;
char * qevtname ;
/* Do nothing in data-only dump */
if ( dopt - > dataOnly )
/* Do nothing if not dumping schema */
if ( ! dopt - > dumpSchema )
return ;
query = createPQExpBuffer ( ) ;
@ -18262,8 +18268,8 @@ dumpRule(Archive *fout, const RuleInfo *rinfo)
PGresult * res ;
char * tag ;
/* Do nothing in data-only dump */
if ( dopt - > dataOnly )
/* Do nothing if not dumping schema */
if ( ! dopt - > dumpSchema )
return ;
/*
@ -18529,7 +18535,7 @@ processExtensionTables(Archive *fout, ExtensionInfo extinfo[],
* objects for them , ensuring their data will be dumped even though the
* tables themselves won ' t be .
*
* Note that we create TableDataInfo objects even in schemaO nly mode , ie ,
* Note that we create TableDataInfo objects even in schema - o nly mode , ie ,
* user data in a configuration table is treated like schema data . This
* seems appropriate since system data in a config table would get
* reloaded by CREATE EXTENSION . If the extension is not listed in the