Thread

  1. [PATCH v2 3/4] psql: bump minimum supported version to v10

    Nathan Bossart <nathan@postgresql.org> — 2026-04-17T18:34:35Z

    ---
     doc/src/sgml/ref/psql-ref.sgml |   2 +-
     src/bin/psql/command.c         |  23 +--
     src/bin/psql/describe.c        | 255 +--------------------------------
     3 files changed, 11 insertions(+), 269 deletions(-)
    
    diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
    index 7c05afd4719..56c2692e618 100644
    --- a/doc/src/sgml/ref/psql-ref.sgml
    +++ b/doc/src/sgml/ref/psql-ref.sgml
    @@ -5523,7 +5523,7 @@ PSQL_EDITOR_LINENUMBER_ARG='--line '
            or an older major version.  Backslash commands are particularly likely
            to fail if the server is of a newer version than <application>psql</application>
            itself.  However, backslash commands of the <literal>\d</literal> family should
    -       work with servers of versions back to 9.2, though not necessarily with
    +       work with servers of versions back to 10, though not necessarily with
            servers newer than <application>psql</application> itself.  The general
            functionality of running SQL commands and displaying query results
            should also work with servers of a newer major version, but this cannot
    diff --git a/src/bin/psql/command.c b/src/bin/psql/command.c
    index 493400f9090..c9573d4b765 100644
    --- a/src/bin/psql/command.c
    +++ b/src/bin/psql/command.c
    @@ -4471,10 +4471,10 @@ connection_warnings(bool in_startup)
     
     		/*
     		 * Warn if server's major version is newer than ours, or if server
    -		 * predates our support cutoff (currently 9.2).
    +		 * predates our support cutoff (currently 10).
     		 */
     		if (pset.sversion / 100 > client_ver / 100 ||
    -			pset.sversion < 90200)
    +			pset.sversion < 100000)
     			printf(_("WARNING: %s major version %s, server major version %s.\n"
     					 "         Some psql features might not work.\n"),
     				   pset.progname,
    @@ -6272,15 +6272,13 @@ get_create_object_cmd(EditableObjectType obj_type, Oid oid,
     			 * ensure the right view gets replaced.  Also, check relation kind
     			 * to be sure it's a view.
     			 *
    -			 * Starting with PG 9.4, views may have WITH [LOCAL|CASCADED]
    +			 * Views may have WITH [LOCAL|CASCADED]
     			 * CHECK OPTION.  These are not part of the view definition
     			 * returned by pg_get_viewdef() and so need to be retrieved
    -			 * separately.  Materialized views (introduced in 9.3) may have
    +			 * separately.  Materialized views may have
     			 * arbitrary storage parameter reloptions.
     			 */
     			printfPQExpBuffer(query, "/* %s */\n", _("Get view's definition and details"));
    -			if (pset.sversion >= 90400)
    -			{
     				appendPQExpBuffer(query,
     								  "SELECT nspname, relname, relkind, "
     								  "pg_catalog.pg_get_viewdef(c.oid, true), "
    @@ -6291,19 +6289,6 @@ get_create_object_cmd(EditableObjectType obj_type, Oid oid,
     								  "LEFT JOIN pg_catalog.pg_namespace n "
     								  "ON c.relnamespace = n.oid WHERE c.oid = %u",
     								  oid);
    -			}
    -			else
    -			{
    -				appendPQExpBuffer(query,
    -								  "SELECT nspname, relname, relkind, "
    -								  "pg_catalog.pg_get_viewdef(c.oid, true), "
    -								  "c.reloptions AS reloptions, "
    -								  "NULL AS checkoption "
    -								  "FROM pg_catalog.pg_class c "
    -								  "LEFT JOIN pg_catalog.pg_namespace n "
    -								  "ON c.relnamespace = n.oid WHERE c.oid = %u",
    -								  oid);
    -			}
     			break;
     	}
     
    diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
    index e1449654f96..76d299fb55c 100644
    --- a/src/bin/psql/describe.c
    +++ b/src/bin/psql/describe.c
    @@ -3,9 +3,9 @@
      *
      * Support for the various \d ("describe") commands.  Note that the current
      * expectation is that all functions in this file will succeed when working
    - * with servers of versions 9.2 and up.  It's okay to omit irrelevant
    + * with servers of versions 10 and up.  It's okay to omit irrelevant
      * information for an old server, but not to fail outright.  (But failing
    - * against a pre-9.2 server is allowed.)
    + * against a pre-10 server is allowed.)
      *
      * Copyright (c) 2000-2026, PostgreSQL Global Development Group
      *
    @@ -98,20 +98,12 @@ describeAggregates(const char *pattern, bool verbose, bool showSystem)
     					  gettext_noop("Result data type"),
     					  gettext_noop("Argument data types"));
     
    -	if (pset.sversion >= 110000)
     		appendPQExpBuffer(&buf,
     						  "  pg_catalog.obj_description(p.oid, 'pg_proc') as \"%s\"\n"
     						  "FROM pg_catalog.pg_proc p\n"
     						  "     LEFT JOIN pg_catalog.pg_namespace n ON n.oid = p.pronamespace\n"
     						  "WHERE p.prokind = " CppAsString2(PROKIND_AGGREGATE) "\n",
     						  gettext_noop("Description"));
    -	else
    -		appendPQExpBuffer(&buf,
    -						  "  pg_catalog.obj_description(p.oid, 'pg_proc') as \"%s\"\n"
    -						  "FROM pg_catalog.pg_proc p\n"
    -						  "     LEFT JOIN pg_catalog.pg_namespace n ON n.oid = p.pronamespace\n"
    -						  "WHERE p.proisagg\n",
    -						  gettext_noop("Description"));
     
     	if (!showSystem && !pattern)
     		appendPQExpBufferStr(&buf, "      AND n.nspname <> 'pg_catalog'\n"
    @@ -154,16 +146,6 @@ describeAccessMethods(const char *pattern, bool verbose)
     	printQueryOpt myopt = pset.popt;
     	static const bool translate_columns[] = {false, true, false, false};
     
    -	if (pset.sversion < 90600)
    -	{
    -		char		sverbuf[32];
    -
    -		pg_log_error("The server (version %s) does not support access methods.",
    -					 formatPGVersionNumber(pset.sversion, false,
    -										   sverbuf, sizeof(sverbuf)));
    -		return true;
    -	}
    -
     	initPQExpBuffer(&buf);
     
     	printfPQExpBuffer(&buf, "/* %s */\n", _("Get matching access methods"));
    @@ -312,9 +294,6 @@ describeFunctions(const char *functypes, const char *func_pattern,
     	printQueryOpt myopt = pset.popt;
     	static const bool translate_columns[] = {false, false, false, false, true, true, true, false, true, true, false, false, false, false};
     
    -	/* No "Parallel" column before 9.6 */
    -	static const bool translate_columns_pre_96[] = {false, false, false, false, true, true, false, true, true, false, false, false, false};
    -
     	if (strlen(functypes) != strspn(functypes, df_options))
     	{
     		pg_log_error("\\df only takes [%s] as options", df_options);
    @@ -400,7 +379,6 @@ describeFunctions(const char *functypes, const char *func_pattern,
     						  gettext_noop("stable"),
     						  gettext_noop("volatile"),
     						  gettext_noop("Volatility"));
    -		if (pset.sversion >= 90600)
     			appendPQExpBuffer(&buf,
     							  ",\n CASE\n"
     							  "  WHEN p.proparallel = "
    @@ -613,16 +591,8 @@ describeFunctions(const char *functypes, const char *func_pattern,
     
     	myopt.title = _("List of functions");
     	myopt.translate_header = true;
    -	if (pset.sversion >= 90600)
    -	{
     		myopt.translate_columns = translate_columns;
     		myopt.n_translate_columns = lengthof(translate_columns);
    -	}
    -	else
    -	{
    -		myopt.translate_columns = translate_columns_pre_96;
    -		myopt.n_translate_columns = lengthof(translate_columns_pre_96);
    -	}
     
     	printQuery(res, &myopt, pset.queryFout, false, pset.logfile);
     
    @@ -1108,38 +1078,6 @@ permissionsList(const char *pattern, bool showSystem)
     					  "  ), E'\\n') AS \"%s\"",
     					  gettext_noop("Column privileges"));
     
    -	if (pset.sversion >= 90500 && pset.sversion < 100000)
    -		appendPQExpBuffer(&buf,
    -						  ",\n  pg_catalog.array_to_string(ARRAY(\n"
    -						  "    SELECT polname\n"
    -						  "    || CASE WHEN polcmd != '*' THEN\n"
    -						  "           E' (' || polcmd::pg_catalog.text || E'):'\n"
    -						  "       ELSE E':'\n"
    -						  "       END\n"
    -						  "    || CASE WHEN polqual IS NOT NULL THEN\n"
    -						  "           E'\\n  (u): ' || pg_catalog.pg_get_expr(polqual, polrelid)\n"
    -						  "       ELSE E''\n"
    -						  "       END\n"
    -						  "    || CASE WHEN polwithcheck IS NOT NULL THEN\n"
    -						  "           E'\\n  (c): ' || pg_catalog.pg_get_expr(polwithcheck, polrelid)\n"
    -						  "       ELSE E''\n"
    -						  "       END"
    -						  "    || CASE WHEN polroles <> '{0}' THEN\n"
    -						  "           E'\\n  to: ' || pg_catalog.array_to_string(\n"
    -						  "               ARRAY(\n"
    -						  "                   SELECT rolname\n"
    -						  "                   FROM pg_catalog.pg_roles\n"
    -						  "                   WHERE oid = ANY (polroles)\n"
    -						  "                   ORDER BY 1\n"
    -						  "               ), E', ')\n"
    -						  "       ELSE E''\n"
    -						  "       END\n"
    -						  "    FROM pg_catalog.pg_policy pol\n"
    -						  "    WHERE polrelid = c.oid), E'\\n')\n"
    -						  "    AS \"%s\"",
    -						  gettext_noop("Policies"));
    -
    -	if (pset.sversion >= 100000)
     		appendPQExpBuffer(&buf,
     						  ",\n  pg_catalog.array_to_string(ARRAY(\n"
     						  "    SELECT polname\n"
    @@ -1666,7 +1604,7 @@ describeOneTableDetails(const char *schemaname,
     						   : "''"),
     						  oid);
     	}
    -	else if (pset.sversion >= 100000)
    +	else
     	{
     		appendPQExpBuffer(&buf,
     						  "SELECT c.relchecks, c.relkind, c.relhasindex, c.relhasrules, "
    @@ -1683,57 +1621,6 @@ describeOneTableDetails(const char *schemaname,
     						   : "''"),
     						  oid);
     	}
    -	else if (pset.sversion >= 90500)
    -	{
    -		appendPQExpBuffer(&buf,
    -						  "SELECT c.relchecks, c.relkind, c.relhasindex, c.relhasrules, "
    -						  "c.relhastriggers, c.relrowsecurity, c.relforcerowsecurity, "
    -						  "c.relhasoids, false as relispartition, %s, c.reltablespace, "
    -						  "CASE WHEN c.reloftype = 0 THEN '' ELSE c.reloftype::pg_catalog.regtype::pg_catalog.text END, "
    -						  "c.relpersistence, c.relreplident\n"
    -						  "FROM pg_catalog.pg_class c\n "
    -						  "LEFT JOIN pg_catalog.pg_class tc ON (c.reltoastrelid = tc.oid)\n"
    -						  "WHERE c.oid = '%s';",
    -						  (verbose ?
    -						   "pg_catalog.array_to_string(c.reloptions || "
    -						   "array(select 'toast.' || x from pg_catalog.unnest(tc.reloptions) x), ', ')\n"
    -						   : "''"),
    -						  oid);
    -	}
    -	else if (pset.sversion >= 90400)
    -	{
    -		appendPQExpBuffer(&buf,
    -						  "SELECT c.relchecks, c.relkind, c.relhasindex, c.relhasrules, "
    -						  "c.relhastriggers, false, false, c.relhasoids, "
    -						  "false as relispartition, %s, c.reltablespace, "
    -						  "CASE WHEN c.reloftype = 0 THEN '' ELSE c.reloftype::pg_catalog.regtype::pg_catalog.text END, "
    -						  "c.relpersistence, c.relreplident\n"
    -						  "FROM pg_catalog.pg_class c\n "
    -						  "LEFT JOIN pg_catalog.pg_class tc ON (c.reltoastrelid = tc.oid)\n"
    -						  "WHERE c.oid = '%s';",
    -						  (verbose ?
    -						   "pg_catalog.array_to_string(c.reloptions || "
    -						   "array(select 'toast.' || x from pg_catalog.unnest(tc.reloptions) x), ', ')\n"
    -						   : "''"),
    -						  oid);
    -	}
    -	else
    -	{
    -		appendPQExpBuffer(&buf,
    -						  "SELECT c.relchecks, c.relkind, c.relhasindex, c.relhasrules, "
    -						  "c.relhastriggers, false, false, c.relhasoids, "
    -						  "false as relispartition, %s, c.reltablespace, "
    -						  "CASE WHEN c.reloftype = 0 THEN '' ELSE c.reloftype::pg_catalog.regtype::pg_catalog.text END, "
    -						  "c.relpersistence\n"
    -						  "FROM pg_catalog.pg_class c\n "
    -						  "LEFT JOIN pg_catalog.pg_class tc ON (c.reltoastrelid = tc.oid)\n"
    -						  "WHERE c.oid = '%s';",
    -						  (verbose ?
    -						   "pg_catalog.array_to_string(c.reloptions || "
    -						   "array(select 'toast.' || x from pg_catalog.unnest(tc.reloptions) x), ', ')\n"
    -						   : "''"),
    -						  oid);
    -	}
     
     	res = PSQLexec(buf.data);
     	if (!res)
    @@ -1761,8 +1648,7 @@ describeOneTableDetails(const char *schemaname,
     	tableinfo.reloftype = (strcmp(PQgetvalue(res, 0, 11), "") != 0) ?
     		pg_strdup(PQgetvalue(res, 0, 11)) : NULL;
     	tableinfo.relpersistence = *(PQgetvalue(res, 0, 12));
    -	tableinfo.relreplident = (pset.sversion >= 90400) ?
    -		*(PQgetvalue(res, 0, 13)) : 'd';
    +	tableinfo.relreplident = *(PQgetvalue(res, 0, 13));
     	if (pset.sversion >= 120000)
     		tableinfo.relam = PQgetisnull(res, 0, 14) ?
     			NULL : pg_strdup(PQgetvalue(res, 0, 14));
    @@ -1781,8 +1667,6 @@ describeOneTableDetails(const char *schemaname,
     		char	   *footers[3] = {NULL, NULL, NULL};
     
     		printfPQExpBuffer(&buf, "/* %s */\n", _("Get sequence information"));
    -		if (pset.sversion >= 100000)
    -		{
     			appendPQExpBuffer(&buf,
     							  "SELECT pg_catalog.format_type(seqtypid, NULL) AS \"%s\",\n"
     							  "       seqstart AS \"%s\",\n"
    @@ -1804,30 +1688,6 @@ describeOneTableDetails(const char *schemaname,
     							  "FROM pg_catalog.pg_sequence\n"
     							  "WHERE seqrelid = '%s';",
     							  oid);
    -		}
    -		else
    -		{
    -			appendPQExpBuffer(&buf,
    -							  "SELECT 'bigint' AS \"%s\",\n"
    -							  "       start_value AS \"%s\",\n"
    -							  "       min_value AS \"%s\",\n"
    -							  "       max_value AS \"%s\",\n"
    -							  "       increment_by AS \"%s\",\n"
    -							  "       CASE WHEN is_cycled THEN '%s' ELSE '%s' END AS \"%s\",\n"
    -							  "       cache_value AS \"%s\"\n",
    -							  gettext_noop("Type"),
    -							  gettext_noop("Start"),
    -							  gettext_noop("Minimum"),
    -							  gettext_noop("Maximum"),
    -							  gettext_noop("Increment"),
    -							  gettext_noop("yes"),
    -							  gettext_noop("no"),
    -							  gettext_noop("Cycles?"),
    -							  gettext_noop("Cache"));
    -			appendPQExpBuffer(&buf, "FROM %s", fmtId(schemaname));
    -			/* must be separate because fmtId isn't reentrant */
    -			appendPQExpBuffer(&buf, ".%s;", fmtId(relationname));
    -		}
     
     		res = PSQLexec(buf.data);
     		if (!res)
    @@ -2045,10 +1905,7 @@ describeOneTableDetails(const char *schemaname,
     		appendPQExpBufferStr(&buf, ",\n  (SELECT c.collname FROM pg_catalog.pg_collation c, pg_catalog.pg_type t\n"
     							 "   WHERE c.oid = a.attcollation AND t.oid = a.atttypid AND a.attcollation <> t.typcollation) AS attcollation");
     		attcoll_col = cols++;
    -		if (pset.sversion >= 100000)
     			appendPQExpBufferStr(&buf, ",\n  a.attidentity");
    -		else
    -			appendPQExpBufferStr(&buf, ",\n  ''::pg_catalog.char AS attidentity");
     		attidentity_col = cols++;
     		if (pset.sversion >= 120000)
     			appendPQExpBufferStr(&buf, ",\n  a.attgenerated");
    @@ -2059,14 +1916,11 @@ describeOneTableDetails(const char *schemaname,
     	if (tableinfo.relkind == RELKIND_INDEX ||
     		tableinfo.relkind == RELKIND_PARTITIONED_INDEX)
     	{
    -		if (pset.sversion >= 110000)
    -		{
     			appendPQExpBuffer(&buf, ",\n  CASE WHEN a.attnum <= (SELECT i.indnkeyatts FROM pg_catalog.pg_index i WHERE i.indexrelid = '%s') THEN '%s' ELSE '%s' END AS is_key",
     							  oid,
     							  gettext_noop("yes"),
     							  gettext_noop("no"));
     			isindexkey_col = cols++;
    -		}
     		appendPQExpBufferStr(&buf, ",\n  pg_catalog.pg_get_indexdef(a.attrelid, a.attnum, TRUE) AS indexdef");
     		indexdef_col = cols++;
     	}
    @@ -2461,10 +2315,7 @@ describeOneTableDetails(const char *schemaname,
     							 CppAsString2(CONSTRAINT_EXCLUSION) ") AND "
     							 "condeferred) AS condeferred,\n");
     
    -		if (pset.sversion >= 90400)
     			appendPQExpBufferStr(&buf, "i.indisreplident,\n");
    -		else
    -			appendPQExpBufferStr(&buf, "false AS indisreplident,\n");
     
     		if (pset.sversion >= 150000)
     			appendPQExpBufferStr(&buf, "i.indnullsnotdistinct,\n");
    @@ -2569,10 +2420,7 @@ describeOneTableDetails(const char *schemaname,
     								 "pg_catalog.pg_get_indexdef(i.indexrelid, 0, true),\n  "
     								 "pg_catalog.pg_get_constraintdef(con.oid, true), "
     								 "contype, condeferrable, condeferred");
    -			if (pset.sversion >= 90400)
     				appendPQExpBufferStr(&buf, ", i.indisreplident");
    -			else
    -				appendPQExpBufferStr(&buf, ", false AS indisreplident");
     			appendPQExpBufferStr(&buf, ", c2.reltablespace");
     			if (pset.sversion >= 180000)
     				appendPQExpBufferStr(&buf, ", con.conperiod");
    @@ -2823,17 +2671,11 @@ describeOneTableDetails(const char *schemaname,
     		PQclear(result);
     
     		/* print any row-level policies */
    -		if (pset.sversion >= 90500)
    -		{
     			printfPQExpBuffer(&buf, "/* %s */\n",
     							  _("Get row-level policies for this table"));
     			appendPQExpBufferStr(&buf, "SELECT pol.polname,");
    -			if (pset.sversion >= 100000)
     				appendPQExpBufferStr(&buf,
     									 " pol.polpermissive,\n");
    -			else
    -				appendPQExpBufferStr(&buf,
    -									 " 't' as polpermissive,\n");
     			appendPQExpBuffer(&buf,
     							  "  CASE WHEN pol.polroles = '{0}' THEN NULL ELSE pg_catalog.array_to_string(array(select rolname from pg_catalog.pg_roles where oid = any (pol.polroles) order by 1),',') END,\n"
     							  "  pg_catalog.pg_get_expr(pol.polqual, pol.polrelid),\n"
    @@ -2904,7 +2746,6 @@ describeOneTableDetails(const char *schemaname,
     				printTableAddFooter(&cont, buf.data);
     			}
     			PQclear(result);
    -		}
     
     		/* print any extended statistics */
     		if (pset.sversion >= 140000)
    @@ -3007,7 +2848,7 @@ describeOneTableDetails(const char *schemaname,
     			}
     			PQclear(result);
     		}
    -		else if (pset.sversion >= 100000)
    +		else
     		{
     			printfPQExpBuffer(&buf, "/* %s */\n",
     							  _("Get extended statistics for this table"));
    @@ -3173,8 +3014,6 @@ describeOneTableDetails(const char *schemaname,
     		}
     
     		/* print any publications */
    -		if (pset.sversion >= 100000)
    -		{
     			printfPQExpBuffer(&buf, "/* %s */\n",
     							  _("Get publications that publish this table"));
     			if (pset.sversion >= 150000)
    @@ -3284,7 +3123,6 @@ describeOneTableDetails(const char *schemaname,
     				printTableAddFooter(&cont, buf.data);
     			}
     			PQclear(result);
    -		}
     
     		/* Print publications where the table is in the EXCEPT clause */
     		if (pset.sversion >= 190000)
    @@ -3706,7 +3544,7 @@ describeOneTableDetails(const char *schemaname,
     							  "ORDER BY pg_catalog.pg_get_expr(c.relpartbound, c.oid) = 'DEFAULT',"
     							  " c.oid::pg_catalog.regclass::pg_catalog.text;",
     							  oid);
    -		else if (pset.sversion >= 100000)
    +		else
     			appendPQExpBuffer(&buf,
     							  "SELECT c.oid::pg_catalog.regclass, c.relkind,"
     							  " false AS inhdetachpending,"
    @@ -3716,14 +3554,6 @@ describeOneTableDetails(const char *schemaname,
     							  "ORDER BY pg_catalog.pg_get_expr(c.relpartbound, c.oid) = 'DEFAULT',"
     							  " c.oid::pg_catalog.regclass::pg_catalog.text;",
     							  oid);
    -		else
    -			appendPQExpBuffer(&buf,
    -							  "SELECT c.oid::pg_catalog.regclass, c.relkind,"
    -							  " false AS inhdetachpending, NULL\n"
    -							  "FROM pg_catalog.pg_class c, pg_catalog.pg_inherits i\n"
    -							  "WHERE c.oid = i.inhrelid AND i.inhparent = '%s'\n"
    -							  "ORDER BY c.oid::pg_catalog.regclass::pg_catalog.text;",
    -							  oid);
     
     		result = PSQLexec(buf.data);
     		if (!result)
    @@ -3964,11 +3794,7 @@ describeRoles(const char *pattern, bool verbose, bool showSystem)
     		ncols++;
     	}
     	appendPQExpBufferStr(&buf, "\n, r.rolreplication");
    -
    -	if (pset.sversion >= 90500)
    -	{
     		appendPQExpBufferStr(&buf, "\n, r.rolbypassrls");
    -	}
     
     	appendPQExpBufferStr(&buf, "\nFROM pg_catalog.pg_roles r\n");
     
    @@ -4023,7 +3849,6 @@ describeRoles(const char *pattern, bool verbose, bool showSystem)
     		if (strcmp(PQgetvalue(res, i, (verbose ? 9 : 8)), "t") == 0)
     			add_role_attribute(&buf, _("Replication"));
     
    -		if (pset.sversion >= 90500)
     			if (strcmp(PQgetvalue(res, i, (verbose ? 10 : 9)), "t") == 0)
     				add_role_attribute(&buf, _("Bypass RLS"));
     
    @@ -4514,19 +4339,6 @@ listPartitionedTables(const char *reltypes, const char *pattern, bool verbose)
     	const char *tabletitle;
     	bool		mixed_output = false;
     
    -	/*
    -	 * Note: Declarative table partitioning is only supported as of Pg 10.0.
    -	 */
    -	if (pset.sversion < 100000)
    -	{
    -		char		sverbuf[32];
    -
    -		pg_log_error("The server (version %s) does not support declarative table partitioning.",
    -					 formatPGVersionNumber(pset.sversion, false,
    -										   sverbuf, sizeof(sverbuf)));
    -		return true;
    -	}
    -
     	/* If no relation kind was selected, show them all */
     	if (!showTables && !showIndexes)
     		showTables = showIndexes = true;
    @@ -5034,16 +4846,6 @@ listEventTriggers(const char *pattern, bool verbose)
     	static const bool translate_columns[] =
     	{false, false, false, true, false, false, false};
     
    -	if (pset.sversion < 90300)
    -	{
    -		char		sverbuf[32];
    -
    -		pg_log_error("The server (version %s) does not support event triggers.",
    -					 formatPGVersionNumber(pset.sversion, false,
    -										   sverbuf, sizeof(sverbuf)));
    -		return true;
    -	}
    -
     	initPQExpBuffer(&buf);
     
     	printfPQExpBuffer(&buf, "/* %s */\n", _("Get matching event triggers"));
    @@ -5113,16 +4915,6 @@ listExtendedStats(const char *pattern, bool verbose)
     	PGresult   *res;
     	printQueryOpt myopt = pset.popt;
     
    -	if (pset.sversion < 100000)
    -	{
    -		char		sverbuf[32];
    -
    -		pg_log_error("The server (version %s) does not support extended statistics.",
    -					 formatPGVersionNumber(pset.sversion, false,
    -										   sverbuf, sizeof(sverbuf)));
    -		return true;
    -	}
    -
     	initPQExpBuffer(&buf);
     
     	printfPQExpBuffer(&buf, "/* %s */\n", _("Get matching extended statistics"));
    @@ -5352,7 +5144,6 @@ listCollations(const char *pattern, bool verbose, bool showSystem)
     					  gettext_noop("Schema"),
     					  gettext_noop("Name"));
     
    -	if (pset.sversion >= 100000)
     		appendPQExpBuffer(&buf,
     						  "  CASE c.collprovider "
     						  "WHEN " CppAsString2(COLLPROVIDER_DEFAULT) " THEN 'default' "
    @@ -5361,10 +5152,6 @@ listCollations(const char *pattern, bool verbose, bool showSystem)
     						  "WHEN " CppAsString2(COLLPROVIDER_ICU) " THEN 'icu' "
     						  "END AS \"%s\",\n",
     						  gettext_noop("Provider"));
    -	else
    -		appendPQExpBuffer(&buf,
    -						  "  'libc' AS \"%s\",\n",
    -						  gettext_noop("Provider"));
     
     	appendPQExpBuffer(&buf,
     					  "  c.collcollate AS \"%s\",\n"
    @@ -6688,16 +6475,6 @@ listPublications(const char *pattern)
     	printQueryOpt myopt = pset.popt;
     	static const bool translate_columns[] = {false, false, false, false, false, false, false, false, false, false};
     
    -	if (pset.sversion < 100000)
    -	{
    -		char		sverbuf[32];
    -
    -		pg_log_error("The server (version %s) does not support publications.",
    -					 formatPGVersionNumber(pset.sversion, false,
    -										   sverbuf, sizeof(sverbuf)));
    -		return true;
    -	}
    -
     	initPQExpBuffer(&buf);
     
     	printfPQExpBuffer(&buf, "/* %s */\n", _("Get matching publications"));
    @@ -6835,16 +6612,6 @@ describePublications(const char *pattern)
     	PQExpBufferData title;
     	printTableContent cont;
     
    -	if (pset.sversion < 100000)
    -	{
    -		char		sverbuf[32];
    -
    -		pg_log_error("The server (version %s) does not support publications.",
    -					 formatPGVersionNumber(pset.sversion, false,
    -										   sverbuf, sizeof(sverbuf)));
    -		return true;
    -	}
    -
     	has_pubsequence = (pset.sversion >= 190000);
     	has_pubtruncate = (pset.sversion >= 110000);
     	has_pubgencols = (pset.sversion >= 180000);
    @@ -7095,16 +6862,6 @@ describeSubscriptions(const char *pattern, bool verbose)
     		false, false, false, false, false, false, false, false, false, false,
     	false, false, false, false, false, false, false};
     
    -	if (pset.sversion < 100000)
    -	{
    -		char		sverbuf[32];
    -
    -		pg_log_error("The server (version %s) does not support subscriptions.",
    -					 formatPGVersionNumber(pset.sversion, false,
    -										   sverbuf, sizeof(sverbuf)));
    -		return true;
    -	}
    -
     	initPQExpBuffer(&buf);
     
     	printfPQExpBuffer(&buf, "/* %s */\n", _("Get matching subscriptions"));
    -- 
    2.50.1 (Apple Git-155)
    
    
    --CT89ko5pLUrsvFtH
    Content-Type: text/plain; charset=us-ascii
    Content-Disposition: attachment; filename=v2-0004-run-pgindent.patch