void check_objfilter(void);
+static char *escape_quotes(const char *src);
+
/* For analyze-in-stages mode */
#define ANALYZE_NO_STAGE -1
#define ANALYZE_NUM_STAGES 3
vacopts.process_main = false;
break;
case 13:
- vacopts.buffer_usage_limit = pg_strdup(optarg);
+ vacopts.buffer_usage_limit = escape_quotes(optarg);
break;
default:
/* getopt_long already emitted a complaint */
pg_fatal("cannot vacuum all tables in schema(s) and exclude schema(s) at the same time");
}
+/*
+ * Returns a newly malloc'd version of 'src' with escaped single quotes and
+ * backslashes.
+ */
+static char *
+escape_quotes(const char *src)
+{
+ char *result = escape_single_quotes_ascii(src);
+
+ if (!result)
+ pg_fatal("out of memory");
+ return result;
+}
+
/*
* vacuum_one_database
*
appendPQExpBuffer(sql, "%sVERBOSE", sep);
sep = comma;
}
+ if (vacopts->buffer_usage_limit)
+ {
+ Assert(serverVersion >= 160000);
+ appendPQExpBuffer(sql, "%sBUFFER_USAGE_LIMIT '%s'", sep,
+ vacopts->buffer_usage_limit);
+ sep = comma;
+ }
if (sep != paren)
appendPQExpBufferChar(sql, ')');
}