From aec53faf22966ee56ccd812996e40527cc2cea49 Mon Sep 17 00:00:00 2001
From: Peter Eisentraut <peter@eisentraut.org>
Date: Sat, 19 Oct 2019 22:56:18 +0200
Subject: [PATCH v2] Remove obsolete information schema tables

Remove SQL_LANGUAGES, which was eliminated in SQL:2008, and
SQL_PACKAGES and SQL_SIZING_PROFILES, which were eliminated in
SQL:2011.  Since they were dropped by the SQL standard, the
information in them was no longer updated and therefore no longer
useful.

This also removes the feature-package association information in
sql_feature_packages.txt, but for the time begin we are keeping the
information which features are in the Core package (that is, mandatory
SQL features).  Maybe at some point someone wants to invent a way to
store that that does not involve using the "package" mechanism
anymore.

Discussion https://www.postgresql.org/message-id/flat/91334220-7900-071b-9327-0c6ecd012017%402ndquadrant.com
---
 doc/src/sgml/features.sgml                   |   9 +-
 doc/src/sgml/information_schema.sgml         | 216 -------------------
 src/backend/catalog/information_schema.sql   |  70 ------
 src/backend/catalog/sql_feature_packages.txt |  29 ---
 src/backend/catalog/sql_features.txt         |   4 -
 src/test/regress/expected/sanity_check.out   |   3 -
 6 files changed, 3 insertions(+), 328 deletions(-)

diff --git a/doc/src/sgml/features.sgml b/doc/src/sgml/features.sgml
index f767bee46e..2c5a7e5d0c 100644
--- a/doc/src/sgml/features.sgml
+++ b/doc/src/sgml/features.sgml
@@ -44,10 +44,7 @@ <title>SQL Conformance</title>
   broad three levels found in <acronym>SQL-92</acronym>.  A large
   subset of these features represents the <quote>Core</quote>
   features, which every conforming SQL implementation must supply.
-  The rest of the features are purely optional.  Some optional
-  features are grouped together to form <quote>packages</quote>, which
-  SQL implementations can claim conformance to, thus claiming
-  conformance to particular groups of features.
+  The rest of the features are purely optional.
  </para>
 
  <para>
@@ -116,7 +113,7 @@ <title>Supported Features</title>
       <thead>
        <row>
         <entry>Identifier</entry>
-        <entry>Package</entry>
+        <entry>Core?</entry>
         <entry>Description</entry>
         <entry>Comment</entry>
        </row>
@@ -143,7 +140,7 @@ <title>Unsupported Features</title>
       <thead>
        <row>
         <entry>Identifier</entry>
-        <entry>Package</entry>
+        <entry>Core?</entry>
         <entry>Description</entry>
         <entry>Comment</entry>
        </row>
diff --git a/doc/src/sgml/information_schema.sgml b/doc/src/sgml/information_schema.sgml
index 906fe7819f..7a995a1b64 100644
--- a/doc/src/sgml/information_schema.sgml
+++ b/doc/src/sgml/information_schema.sgml
@@ -4963,160 +4963,6 @@ <title><literal>sql_implementation_info</literal> Columns</title>
   </table>
  </sect1>
 
- <sect1 id="infoschema-sql-languages">
-  <title><literal>sql_languages</literal></title>
-
-  <para>
-   The table <literal>sql_languages</literal> contains one row for
-   each SQL language binding that is supported by
-   <productname>PostgreSQL</productname>.
-   <productname>PostgreSQL</productname> supports direct SQL and
-   embedded SQL in C; that is all you will learn from this table.
-  </para>
-
-  <para>
-   This table was removed from the SQL standard in SQL:2008, so there
-   are no entries referring to standards later than SQL:2003.
-  </para>
-
-  <table>
-   <title><literal>sql_languages</literal> Columns</title>
-
-   <tgroup cols="3">
-    <thead>
-     <row>
-      <entry>Name</entry>
-      <entry>Data Type</entry>
-      <entry>Description</entry>
-     </row>
-    </thead>
-
-    <tbody>
-     <row>
-      <entry><literal>sql_language_source</literal></entry>
-      <entry><type>character_data</type></entry>
-      <entry>
-       The name of the source of the language definition; always
-       <literal>ISO 9075</literal>, that is, the SQL standard
-      </entry>
-     </row>
-
-     <row>
-      <entry><literal>sql_language_year</literal></entry>
-      <entry><type>character_data</type></entry>
-      <entry>
-       The year the standard referenced in
-       <literal>sql_language_source</literal> was approved.
-      </entry>
-     </row>
-
-     <row>
-      <entry><literal>sql_language_conformance</literal></entry>
-      <entry><type>character_data</type></entry>
-      <entry>
-       The standard conformance level for the language binding.  For
-       ISO 9075:2003 this is always <literal>CORE</literal>.
-      </entry>
-     </row>
-
-     <row>
-      <entry><literal>sql_language_integrity</literal></entry>
-      <entry><type>character_data</type></entry>
-      <entry>Always null (This value is relevant to an earlier version of the SQL standard.)</entry>
-     </row>
-
-     <row>
-      <entry><literal>sql_language_implementation</literal></entry>
-      <entry><type>character_data</type></entry>
-      <entry>Always null</entry>
-     </row>
-
-     <row>
-      <entry><literal>sql_language_binding_style</literal></entry>
-      <entry><type>character_data</type></entry>
-      <entry>
-       The language binding style, either <literal>DIRECT</literal> or
-       <literal>EMBEDDED</literal>
-      </entry>
-     </row>
-
-     <row>
-      <entry><literal>sql_language_programming_language</literal></entry>
-      <entry><type>character_data</type></entry>
-      <entry>
-       The programming language, if the binding style is
-       <literal>EMBEDDED</literal>, else null.  <productname>PostgreSQL</productname> only
-       supports the language C.
-      </entry>
-     </row>
-    </tbody>
-   </tgroup>
-  </table>
- </sect1>
-
- <sect1 id="infoschema-sql-packages">
-  <title><literal>sql_packages</literal></title>
-
-  <para>
-   The table <literal>sql_packages</literal> contains information
-   about which feature packages defined in the SQL standard are
-   supported by <productname>PostgreSQL</productname>.  Refer to <xref
-   linkend="features"/> for background information on feature packages.
-  </para>
-
-  <table>
-   <title><literal>sql_packages</literal> Columns</title>
-
-   <tgroup cols="3">
-    <thead>
-     <row>
-      <entry>Name</entry>
-      <entry>Data Type</entry>
-      <entry>Description</entry>
-     </row>
-    </thead>
-
-    <tbody>
-     <row>
-      <entry><literal>feature_id</literal></entry>
-      <entry><type>character_data</type></entry>
-      <entry>Identifier string of the package</entry>
-     </row>
-
-     <row>
-      <entry><literal>feature_name</literal></entry>
-      <entry><type>character_data</type></entry>
-      <entry>Descriptive name of the package</entry>
-     </row>
-
-     <row>
-      <entry><literal>is_supported</literal></entry>
-      <entry><type>yes_or_no</type></entry>
-      <entry>
-       <literal>YES</literal> if the package is fully supported by the
-       current version of <productname>PostgreSQL</productname>, <literal>NO</literal> if not
-      </entry>
-     </row>
-
-     <row>
-      <entry><literal>is_verified_by</literal></entry>
-      <entry><type>character_data</type></entry>
-      <entry>
-       Always null, since the <productname>PostgreSQL</productname> development group does not
-       perform formal testing of feature conformance
-      </entry>
-     </row>
-
-     <row>
-      <entry><literal>comments</literal></entry>
-      <entry><type>character_data</type></entry>
-      <entry>Possibly a comment about the supported status of the package</entry>
-     </row>
-    </tbody>
-   </tgroup>
-  </table>
- </sect1>
-
  <sect1 id="infoschema-sql-parts">
   <title><literal>sql_parts</literal></title>
 
@@ -5239,68 +5085,6 @@ <title><literal>sql_sizing</literal> Columns</title>
   </table>
  </sect1>
 
- <sect1 id="infoschema-sql-sizing-profiles">
-  <title><literal>sql_sizing_profiles</literal></title>
-
-  <para>
-   The table <literal>sql_sizing_profiles</literal> contains
-   information about the <literal>sql_sizing</literal> values that are
-   required by various profiles of the SQL standard.  <productname>PostgreSQL</productname> does
-   not track any SQL profiles, so this table is empty.
-  </para>
-
-  <table>
-   <title><literal>sql_sizing_profiles</literal> Columns</title>
-
-   <tgroup cols="3">
-    <thead>
-     <row>
-      <entry>Name</entry>
-      <entry>Data Type</entry>
-      <entry>Description</entry>
-     </row>
-    </thead>
-
-    <tbody>
-     <row>
-      <entry><literal>sizing_id</literal></entry>
-      <entry><type>cardinal_number</type></entry>
-      <entry>Identifier of the sizing item</entry>
-     </row>
-
-     <row>
-      <entry><literal>sizing_name</literal></entry>
-      <entry><type>character_data</type></entry>
-      <entry>Descriptive name of the sizing item</entry>
-     </row>
-
-     <row>
-      <entry><literal>profile_id</literal></entry>
-      <entry><type>character_data</type></entry>
-      <entry>Identifier string of a profile</entry>
-     </row>
-
-     <row>
-      <entry><literal>required_value</literal></entry>
-      <entry><type>cardinal_number</type></entry>
-      <entry>
-       The value required by the SQL profile for the sizing item, or 0
-       if the profile places no limit on the sizing item, or null if
-       the profile does not require any of the features for which the
-       sizing item is applicable
-      </entry>
-     </row>
-
-     <row>
-      <entry><literal>comments</literal></entry>
-      <entry><type>character_data</type></entry>
-      <entry>Possibly a comment pertaining to the sizing item within the profile</entry>
-     </row>
-    </tbody>
-   </tgroup>
-  </table>
- </sect1>
-
  <sect1 id="infoschema-table-constraints">
   <title><literal>table_constraints</literal></title>
 
diff --git a/src/backend/catalog/information_schema.sql b/src/backend/catalog/information_schema.sql
index c42e76ea89..5d64791c5d 100644
--- a/src/backend/catalog/information_schema.sql
+++ b/src/backend/catalog/information_schema.sql
@@ -1648,56 +1648,6 @@ CREATE TABLE sql_implementation_info (
 GRANT SELECT ON sql_implementation_info TO PUBLIC;
 
 
-/*
- * SQL_LANGUAGES table
- * apparently removed in SQL:2008
- */
-
-CREATE TABLE sql_languages (
-    sql_language_source         character_data,
-    sql_language_year           character_data,
-    sql_language_conformance    character_data,
-    sql_language_integrity      character_data,
-    sql_language_implementation character_data,
-    sql_language_binding_style  character_data,
-    sql_language_programming_language character_data
-);
-
-INSERT INTO sql_languages VALUES ('ISO 9075', '1999', 'CORE', NULL, NULL, 'DIRECT', NULL);
-INSERT INTO sql_languages VALUES ('ISO 9075', '1999', 'CORE', NULL, NULL, 'EMBEDDED', 'C');
-INSERT INTO sql_languages VALUES ('ISO 9075', '2003', 'CORE', NULL, NULL, 'DIRECT', NULL);
-INSERT INTO sql_languages VALUES ('ISO 9075', '2003', 'CORE', NULL, NULL, 'EMBEDDED', 'C');
-
-GRANT SELECT ON sql_languages TO PUBLIC;
-
-
-/*
- * SQL_PACKAGES table
- * removed in SQL:2011
- */
-
-CREATE TABLE sql_packages (
-    feature_id      character_data,
-    feature_name    character_data,
-    is_supported    yes_or_no,
-    is_verified_by  character_data,
-    comments        character_data
-);
-
-INSERT INTO sql_packages VALUES ('PKG000', 'Core', 'NO', NULL, '');
-INSERT INTO sql_packages VALUES ('PKG001', 'Enhanced datetime facilities', 'YES', NULL, '');
-INSERT INTO sql_packages VALUES ('PKG002', 'Enhanced integrity management', 'NO', NULL, '');
-INSERT INTO sql_packages VALUES ('PKG003', 'OLAP facilities', 'NO', NULL, '');
-INSERT INTO sql_packages VALUES ('PKG004', 'PSM', 'NO', NULL, 'PL/pgSQL is similar.');
-INSERT INTO sql_packages VALUES ('PKG005', 'CLI', 'NO', NULL, 'ODBC is similar.');
-INSERT INTO sql_packages VALUES ('PKG006', 'Basic object support', 'NO', NULL, '');
-INSERT INTO sql_packages VALUES ('PKG007', 'Enhanced object support', 'NO', NULL, '');
-INSERT INTO sql_packages VALUES ('PKG008', 'Active database', 'NO', NULL, '');
-INSERT INTO sql_packages VALUES ('PKG010', 'OLAP', 'NO', NULL, 'NO');
-
-GRANT SELECT ON sql_packages TO PUBLIC;
-
-
 /*
  * 5.59
  * SQL_PARTS table
@@ -1768,26 +1718,6 @@ CREATE TABLE sql_sizing (
 GRANT SELECT ON sql_sizing TO PUBLIC;
 
 
-/*
- * SQL_SIZING_PROFILES table
- * removed in SQL:2011
- */
-
--- The data in this table are defined by various profiles of SQL.
--- Since we don't have any information about such profiles, we provide
--- an empty table.
-
-CREATE TABLE sql_sizing_profiles (
-    sizing_id       cardinal_number,
-    sizing_name     character_data,
-    profile_id      character_data,
-    required_value  cardinal_number,
-    comments        character_data
-);
-
-GRANT SELECT ON sql_sizing_profiles TO PUBLIC;
-
-
 /*
  * 5.61
  * TABLE_CONSTRAINTS view
diff --git a/src/backend/catalog/sql_feature_packages.txt b/src/backend/catalog/sql_feature_packages.txt
index 382e4aea5c..1d87a3e31e 100644
--- a/src/backend/catalog/sql_feature_packages.txt
+++ b/src/backend/catalog/sql_feature_packages.txt
@@ -22,46 +22,17 @@ F021	Core
 F031	Core
 F041	Core
 F051	Core
-F052	Enhanced datetime facilities
 F081	Core
 F131	Core
 F181	Core
-F191	Enhanced integrity management
 F201	Core
 F221	Core
 F261	Core
 F311	Core
-F411	Enhanced datetime facilities
 F471	Core
 F481	Core
-F491	Enhanced integrity management
 F501	Core
-F521	Enhanced integrity management
-F555	Enhanced datetime facilities
-F671	Enhanced integrity management
-F701	Enhanced integrity management
 F812	Core
 S011	Core
-S023	Basic object support
-S024	Enhanced object support
-S041	Basic object support
-S043	Enhanced object support
-S051	Basic object support
-S071	Enhanced object support
-S081	Enhanced object support
-S111	Enhanced object support
-S151	Basic object support
-S161	Enhanced object support
-S211	Enhanced object support
-S231	Enhanced object support
-T041	Basic object support
-T191	Enhanced integrity management
-T201	Enhanced integrity management
-T211	Active database
-T211	Enhanced integrity management
-T212	Enhanced integrity management
 T321	Core
-T322	PSM
-T431	OLAP
-T611	OLAP
 T631	Core
diff --git a/src/backend/catalog/sql_features.txt b/src/backend/catalog/sql_features.txt
index 9c68292a54..ab3e381cff 100644
--- a/src/backend/catalog/sql_features.txt
+++ b/src/backend/catalog/sql_features.txt
@@ -285,11 +285,7 @@ F492	Optional table constraint enforcement			NO
 F501	Features and conformance views			YES	
 F501	Features and conformance views	01	SQL_FEATURES view	YES	
 F501	Features and conformance views	02	SQL_SIZING view	YES	
-F501	Features and conformance views	03	SQL_LANGUAGES view	YES	
 F502	Enhanced documentation tables			YES	
-F502	Enhanced documentation tables	01	SQL_SIZING_PROFILES view	YES	
-F502	Enhanced documentation tables	02	SQL_IMPLEMENTATION_INFO view	YES	
-F502	Enhanced documentation tables	03	SQL_PACKAGES view	YES	
 F521	Assertions			NO	
 F531	Temporary tables			YES	
 F555	Enhanced seconds precision			YES	
diff --git a/src/test/regress/expected/sanity_check.out b/src/test/regress/expected/sanity_check.out
index d6e75ffce6..070de78e85 100644
--- a/src/test/regress/expected/sanity_check.out
+++ b/src/test/regress/expected/sanity_check.out
@@ -177,11 +177,8 @@ shighway|t
 slow_emp4000|f
 sql_features|f
 sql_implementation_info|f
-sql_languages|f
-sql_packages|f
 sql_parts|f
 sql_sizing|f
-sql_sizing_profiles|f
 stud_emp|f
 student|f
 tableam_parted_a_heap2|f
-- 
2.23.0

