1
0
mirror of https://github.com/postgres/postgres.git synced 2025-04-25 21:42:33 +03:00

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.
This commit is contained in:
Neil Conway 2005-03-13 09:36:31 +00:00
parent 0edc2f14e0
commit ff02d0a052
8 changed files with 45 additions and 67 deletions

View File

@ -1,5 +1,5 @@
<!-- <!--
$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;
<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;
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>

View File

@ -1,4 +1,4 @@
<!-- $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 (
<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>

View File

@ -1,5 +1,5 @@
<!-- <!--
$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
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>

View File

@ -1,5 +1,5 @@
<!-- <!--
$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;
<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>

View File

@ -1,5 +1,5 @@
<!-- <!--
$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
</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>

View File

@ -1,5 +1,5 @@
<!-- <!--
$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'
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
<productname>PostgreSQL</productname>. However, assuming that
tables will contain OIDs by default is not encouraged. This
option will probably default to false in a future release of
<productname>PostgreSQL</productname>.
</para> </para>
<para> <para>
To ease compatibility with applications that make use of OIDs, The use of OIDs in user tables is considered deprecated, so
this option should left enabled. To ease compatibility with most installations should leave this variable disabled.
future versions of <productname>PostgreSQL</productname>, this Applications that require OIDs for a particular table should
option should be disabled, and applications that require OIDs specify <literal>WITH OIDS</literal> when creating the
on certain tables should explicitly specify <literal>WITH table. This variable can be enabled for compatibility with old
OIDS</literal> when those tables are created. applications that do not follow this behavior.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>

View File

@ -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;
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[] =
}, },
{ {
{"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,

View File

@ -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 -