features.sgml 4.8 KB
Newer Older
1
<!--
Peter Eisentraut's avatar
Peter Eisentraut committed
2
$Header: /cvsroot/pgsql/doc/src/sgml/features.sgml,v 2.21 2003/11/04 09:55:38 petere Exp $
3 4
-->

Peter Eisentraut's avatar
Peter Eisentraut committed
5 6
<appendix id="features">
 <title>SQL Conformance</title>
7

Peter Eisentraut's avatar
Peter Eisentraut committed
8 9 10 11 12 13
 <para>
  This section attempts to outline to what extent
  <productname>PostgreSQL</productname> conforms to the SQL standard.
  Full compliance to the standard or a complete statement about the
  compliance to the standard is complicated and not particularly
  useful, so this section can only give an overview.
14
  </para>
15

Peter Eisentraut's avatar
Peter Eisentraut committed
16 17 18 19
 <para>
  The formal name of the SQL standard is ISO/IEC 9075 <quote>Database
  Language SQL</quote>.  A revised version of the standard is released
  from time to time; the most recent one appearing in 1999.  That
20
  version is referred to as ISO/IEC 9075:1999, or informally as SQL99.
Peter Eisentraut's avatar
Peter Eisentraut committed
21 22 23 24
  The version prior to that was SQL92.
  <productname>PostgreSQL</productname> development tends to aim for
  conformance with the latest official version of the standard where
  such conformance does not contradict traditional features or common
25
  sense.  At the time of this writing, balloting is under way for a
Peter Eisentraut's avatar
Peter Eisentraut committed
26 27 28 29 30 31 32
  new revision of the standard, which, if approved, will eventually
  become the conformance target for future
  <productname>PostgreSQL</productname> development.
 </para>

 <para>
  <acronym>SQL92</acronym> defined three feature sets for conformance:
Peter Eisentraut's avatar
Peter Eisentraut committed
33
  Entry, Intermediate, and Full. Most database management systems claiming
Peter Eisentraut's avatar
Peter Eisentraut committed
34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65
  <acronym>SQL</acronym> standard conformance were conforming at only
  the Entry level, since the entire set of features in the
  Intermediate and Full levels was either too voluminous or in
  conflict with legacy behaviors.
 </para>

 <para>
  <acronym>SQL99</acronym> defines a large set of individual features
  rather than the ineffectively broad three levels found in
  <acronym>SQL92</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.
 </para>

 <para>
  The <acronym>SQL99</acronym> standard is also split into 5 parts:
  Framework, Foundation, Call Level Interface, Persistent Stored
  Modules, and Host Language Bindings.
  <productname>PostgreSQL</productname> only covers parts 1, 2, and 5.
  Part 3 is similar to the ODBC interface, and part 4 is similar to
  the <application>PL/pgSQL</application> programming language, but
  exact conformance is not specifically intended in either case.
 </para>

 <para>
  In the following two sections, we provide a list of those features
  that <productname>PostgreSQL</productname> supports, followed by a
  list of the features defined in SQL99 which are not yet supported in
66 67 68 69 70 71
  <productname>PostgreSQL</productname>.  Both of these lists are
  approximate: There may be minor details that are nonconforming for a
  feature that is listed as supported, and large parts of an
  unsupported feature may in fact be implemented.  The main body of
  the documentation always contains the most accurate information
  about what does and does not work.
Peter Eisentraut's avatar
Peter Eisentraut committed
72 73 74
 </para>

 <note>
75
  <para>
Peter Eisentraut's avatar
Peter Eisentraut committed
76 77 78
   Feature codes containing a hyphen are subfeatures.  Therefore, if a
   particular subfeature is not supported, the main feature is listed
   as unsupported even if some other subfeatures are supported.
79
  </para>
Peter Eisentraut's avatar
Peter Eisentraut committed
80
 </note>
81

82 83
  <sect1 id="features-sql99">
   <title>Supported Features</title>
84

85
   <para>
86
    <informaltable>
Peter Eisentraut's avatar
Peter Eisentraut committed
87
     <tgroup cols="4">
88 89 90
      <thead>
       <row>
        <entry>Identifier</entry>
Peter Eisentraut's avatar
Peter Eisentraut committed
91
        <entry>Package</entry>
92 93 94 95
        <entry>Description</entry>
        <entry>Comment</entry>
       </row>
      </thead>
96 97 98 99 100 101 102 103 104 105 106 107 108

      &features-supported;

     </tgroup>
    </informaltable>
   </para>
  </sect1>

  <sect1 id="unsupported-features-sql99">
   <title>Unsupported Features</title>

   <para>
    The following features defined in <acronym>SQL99</acronym> are not
109
    implemented in this release of
110 111 112 113 114 115
    <productname>PostgreSQL</productname>. In a few cases, equivalent
    functionality is available.

    <informaltable>
     <tgroup cols="4">
      <thead>
116
       <row>
117 118 119 120
        <entry>Identifier</entry>
        <entry>Package</entry>
        <entry>Description</entry>
        <entry>Comment</entry>
121
       </row>
122 123 124 125
      </thead>

      &features-unsupported;

126 127 128 129
     </tgroup>
    </informaltable>
   </para>
  </sect1>
Peter Eisentraut's avatar
Peter Eisentraut committed
130

131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148
 </appendix>

<!-- Keep this comment at the end of the file
Local variables:
mode:sgml
sgml-omittag:nil
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
sgml-parent-document:nil
sgml-default-dtd-file:"./reference.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:("/usr/lib/sgml/catalog")
sgml-local-ecat-files:nil
End:
-->