Commit ff02d0a0 authored by Neil Conway's avatar Neil Conway

Make default_with_oids default to false -- user-created tables will now

no longer include OIDs, unless WITH OIDS is specified or the
default_with_oids configuration parameter is enabled. Update the docs
accordingly.
parent 0edc2f14
<!-- <!--
$PostgreSQL: pgsql/doc/src/sgml/datatype.sgml,v 1.155 2005/01/22 22:56:35 momjian Exp $ $PostgreSQL: pgsql/doc/src/sgml/datatype.sgml,v 1.156 2005/03/13 09:36:30 neilc Exp $
--> -->
<chapter id="datatype"> <chapter id="datatype">
...@@ -2980,12 +2980,12 @@ SELECT * FROM test; ...@@ -2980,12 +2980,12 @@ SELECT * FROM test;
<para> <para>
Object identifiers (OIDs) are used internally by Object identifiers (OIDs) are used internally by
<productname>PostgreSQL</productname> as primary keys for various <productname>PostgreSQL</productname> as primary keys for various
system tables. An OID system column is also added to user-created system tables. OIDs are not added to user-created tables, unless
tables, unless <literal>WITHOUT OIDS</literal> is specified when <literal>WITH OIDS</literal> is specified when the table is
the table is created, or the <xref linkend="guc-default-with-oids"> created, or the <xref linkend="guc-default-with-oids">
configuration variable is set to false. Type <type>oid</> configuration variable is enabled. Type <type>oid</> represents
represents an object identifier. There are also several alias an object identifier. There are also several alias types for
types for <type>oid</>: <type>regproc</>, <type>regprocedure</>, <type>oid</>: <type>regproc</>, <type>regprocedure</>,
<type>regoper</>, <type>regoperator</>, <type>regclass</>, and <type>regoper</>, <type>regoperator</>, <type>regclass</>, and
<type>regtype</>. <xref linkend="datatype-oid-table"> shows an <type>regtype</>. <xref linkend="datatype-oid-table"> shows an
overview. overview.
...@@ -3000,28 +3000,11 @@ SELECT * FROM test; ...@@ -3000,28 +3000,11 @@ SELECT * FROM test;
references to system tables. references to system tables.
</para> </para>
<note>
<para>
OIDs are included by default in user-created tables in
<productname>PostgreSQL</productname> &version;. However, this
behavior is likely to change in a future version of
<productname>PostgreSQL</productname>. Eventually, user-created
tables will not include an OID system column unless <literal>WITH
OIDS</literal> is specified when the table is created, or the
<varname>default_with_oids</varname> configuration variable is set
to true. If your application requires the presence of an OID
system column in a table, it should specify <literal>WITH
OIDS</literal> when that table is created to ensure compatibility
with future releases of <productname>PostgreSQL</productname>.
</para>
</note>
<para> <para>
The <type>oid</> type itself has few operations beyond comparison. The <type>oid</> type itself has few operations beyond comparison.
It can be cast to It can be cast to integer, however, and then manipulated using the
integer, however, and then manipulated using the standard integer standard integer operators. (Beware of possible
operators. (Beware of possible signed-versus-unsigned confusion signed-versus-unsigned confusion if you do this.)
if you do this.)
</para> </para>
<para> <para>
......
<!-- $PostgreSQL: pgsql/doc/src/sgml/ddl.sgml,v 1.39 2005/01/22 22:56:35 momjian Exp $ --> <!-- $PostgreSQL: pgsql/doc/src/sgml/ddl.sgml,v 1.40 2005/03/13 09:36:30 neilc Exp $ -->
<chapter id="ddl"> <chapter id="ddl">
<title>Data Definition</title> <title>Data Definition</title>
...@@ -868,11 +868,10 @@ CREATE TABLE order_items ( ...@@ -868,11 +868,10 @@ CREATE TABLE order_items (
<primary>OID</primary> <primary>OID</primary>
<secondary>column</secondary> <secondary>column</secondary>
</indexterm> </indexterm>
The object identifier (object ID) of a row. This is a serial The object identifier (object ID) of a row. This column is only
number that is automatically added by present if the table was created using <literal>WITH
<productname>PostgreSQL</productname> to all table rows (unless OIDS</literal>, or if the <xref linkend="guc-default-with-oids">
the table was created using <literal>WITHOUT OIDS</literal>, in which configuration variable was enabled. This column is of type
case this column is not present). This column is of type
<type>oid</type> (same name as the column); see <xref <type>oid</type> (same name as the column); see <xref
linkend="datatype-oid"> for more information about the type. linkend="datatype-oid"> for more information about the type.
</para> </para>
......
<!-- <!--
$PostgreSQL: pgsql/doc/src/sgml/plpgsql.sgml,v 1.61 2005/02/14 00:54:26 neilc Exp $ $PostgreSQL: pgsql/doc/src/sgml/plpgsql.sgml,v 1.62 2005/03/13 09:36:30 neilc Exp $
--> -->
<chapter id="plpgsql"> <chapter id="plpgsql">
...@@ -1299,7 +1299,8 @@ GET DIAGNOSTICS <replaceable>variable</replaceable> = <replaceable>item</replace ...@@ -1299,7 +1299,8 @@ GET DIAGNOSTICS <replaceable>variable</replaceable> = <replaceable>item</replace
the <acronym>SQL</acronym> engine, and <varname>RESULT_OID</>, the <acronym>SQL</acronym> engine, and <varname>RESULT_OID</>,
the OID of the last row inserted by the most recent the OID of the last row inserted by the most recent
<acronym>SQL</acronym> command. Note that <varname>RESULT_OID</> <acronym>SQL</acronym> command. Note that <varname>RESULT_OID</>
is only useful after an <command>INSERT</command> command. is only useful after an <command>INSERT</command> command into a
table containing OIDs.
</para> </para>
<para> <para>
......
<!-- <!--
$PostgreSQL: pgsql/doc/src/sgml/pltcl.sgml,v 2.34 2005/01/22 22:56:36 momjian Exp $ $PostgreSQL: pgsql/doc/src/sgml/pltcl.sgml,v 2.35 2005/03/13 09:36:30 neilc Exp $
--> -->
<chapter id="pltcl"> <chapter id="pltcl">
...@@ -400,8 +400,9 @@ $$ LANGUAGE pltcl; ...@@ -400,8 +400,9 @@ $$ LANGUAGE pltcl;
<listitem> <listitem>
<para> <para>
Returns the OID of the row inserted by the last Returns the OID of the row inserted by the last
<function>spi_exec</> or <function>spi_execp</>, <function>spi_exec</> or <function>spi_execp</>, if the
if the command was a single-row <command>INSERT</>. (If not, you get zero.) command was a single-row <command>INSERT</> and the modified
table contained OIDs. (If not, you get zero.)
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
......
<!-- <!--
$PostgreSQL: pgsql/doc/src/sgml/ref/select_into.sgml,v 1.33 2005/01/09 05:57:45 tgl Exp $ $PostgreSQL: pgsql/doc/src/sgml/ref/select_into.sgml,v 1.34 2005/03/13 09:36:31 neilc Exp $
PostgreSQL documentation PostgreSQL documentation
--> -->
...@@ -94,14 +94,13 @@ SELECT [ ALL | DISTINCT [ ON ( <replaceable class="PARAMETER">expression</replac ...@@ -94,14 +94,13 @@ SELECT [ ALL | DISTINCT [ ON ( <replaceable class="PARAMETER">expression</replac
</para> </para>
<para> <para>
Prior to <productname>PostgreSQL</> 8.0, the table created by Prior to <productname>PostgreSQL</> 8.1, the table created by
<command>SELECT INTO</command> always included OIDs. <command>SELECT INTO</command> included OIDs by default. In
As of <productname>PostgreSQL</> 8.0, the <productname>PostgreSQL</productname> 8.1, this is not the case
inclusion of OIDs in the table created by <command>SELECT &mdash; to include OIDs in the new table, the <xref
INTO</command> is controlled by the linkend="guc-default-with-oids"> configuration variable must be
<xref linkend="guc-default-with-oids"> configuration variable. This enabled. Alternatively, <command>CREATE TABLE AS</command> can be
variable currently defaults to true, but will likely default to used with the <literal>WITH OIDS</literal> clause.
false in a future release of <productname>PostgreSQL</>.
</para> </para>
</refsect1> </refsect1>
......
<!-- <!--
$PostgreSQL: pgsql/doc/src/sgml/runtime.sgml,v 1.307 2005/03/04 20:21:05 tgl Exp $ $PostgreSQL: pgsql/doc/src/sgml/runtime.sgml,v 1.308 2005/03/13 09:36:30 neilc Exp $
--> -->
<chapter Id="runtime"> <chapter Id="runtime">
...@@ -3587,23 +3587,18 @@ dynamic_library_path = 'C:\tools\postgresql;H:\my_project\lib;$libdir' ...@@ -3587,23 +3587,18 @@ dynamic_library_path = 'C:\tools\postgresql;H:\my_project\lib;$libdir'
newly-created tables, if neither <literal>WITH OIDS</literal> newly-created tables, if neither <literal>WITH OIDS</literal>
nor <literal>WITHOUT OIDS</literal> is specified. It also nor <literal>WITHOUT OIDS</literal> is specified. It also
determines whether OIDs will be included in tables created by determines whether OIDs will be included in tables created by
<command>SELECT INTO</command>. In <command>SELECT INTO</command>. In <productname>PostgreSQL</>
<productname>PostgreSQL</productname> &version; 8.1 <varname>default_with_oids</> is disabled by default; in
<varname>default_with_oids</varname> defaults to true. This is prior versions of PostgreSQL, it was true by default.
also the behavior of previous versions of </para>
<productname>PostgreSQL</productname>. However, assuming that
tables will contain OIDs by default is not encouraged. This <para>
option will probably default to false in a future release of The use of OIDs in user tables is considered deprecated, so
<productname>PostgreSQL</productname>. most installations should leave this variable disabled.
</para> Applications that require OIDs for a particular table should
specify <literal>WITH OIDS</literal> when creating the
<para> table. This variable can be enabled for compatibility with old
To ease compatibility with applications that make use of OIDs, applications that do not follow this behavior.
this option should left enabled. To ease compatibility with
future versions of <productname>PostgreSQL</productname>, this
option should be disabled, and applications that require OIDs
on certain tables should explicitly specify <literal>WITH
OIDS</literal> when those tables are created.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
......
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
* Written by Peter Eisentraut <peter_e@gmx.net>. * Written by Peter Eisentraut <peter_e@gmx.net>.
* *
* IDENTIFICATION * IDENTIFICATION
* $PostgreSQL: pgsql/src/backend/utils/misc/guc.c,v 1.254 2005/03/04 20:21:06 tgl Exp $ * $PostgreSQL: pgsql/src/backend/utils/misc/guc.c,v 1.255 2005/03/13 09:36:31 neilc Exp $
* *
*-------------------------------------------------------------------- *--------------------------------------------------------------------
*/ */
...@@ -139,7 +139,7 @@ bool Australian_timezones = false; ...@@ -139,7 +139,7 @@ bool Australian_timezones = false;
bool Password_encryption = true; bool Password_encryption = true;
bool default_with_oids = true; bool default_with_oids = false;
int log_min_error_statement = PANIC; int log_min_error_statement = PANIC;
int log_min_messages = NOTICE; int log_min_messages = NOTICE;
...@@ -801,11 +801,11 @@ static struct config_bool ConfigureNamesBool[] = ...@@ -801,11 +801,11 @@ static struct config_bool ConfigureNamesBool[] =
}, },
{ {
{"default_with_oids", PGC_USERSET, COMPAT_OPTIONS_PREVIOUS, {"default_with_oids", PGC_USERSET, COMPAT_OPTIONS_PREVIOUS,
gettext_noop("By default, newly-created tables should have OIDs."), gettext_noop("Create new tables with OIDs by default."),
NULL NULL
}, },
&default_with_oids, &default_with_oids,
true, NULL, NULL false, NULL, NULL
}, },
{ {
{"redirect_stderr", PGC_POSTMASTER, LOGGING_WHERE, {"redirect_stderr", PGC_POSTMASTER, LOGGING_WHERE,
......
...@@ -314,7 +314,7 @@ ...@@ -314,7 +314,7 @@
#add_missing_from = true #add_missing_from = true
#regex_flavor = advanced # advanced, extended, or basic #regex_flavor = advanced # advanced, extended, or basic
#sql_inheritance = true #sql_inheritance = true
#default_with_oids = true #default_with_oids = false
# - Other Platforms & Clients - # - Other Platforms & Clients -
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment