default to WITHOUT OIDS - Mailing list pgsql-patches
From | Neil Conway |
---|---|
Subject | default to WITHOUT OIDS |
Date | |
Msg-id | 42313BAE.6090903@samurai.com Whole thread Raw |
Responses |
Re: default to WITHOUT OIDS
|
List | pgsql-patches |
This patch makes default_with_oids disabled by default, per earlier discussion, and updates the documentation accordingly. I might have missed a few spots in the documentation that implicitly assume that OIDs are present in user tables by default, but I think I got most of them. Barring any objections, I'll apply this on Monday. -Neil Index: doc/src/sgml/datatype.sgml =================================================================== RCS file: /var/lib/cvs/pgsql/doc/src/sgml/datatype.sgml,v retrieving revision 1.155 diff -c -r1.155 datatype.sgml *** doc/src/sgml/datatype.sgml 22 Jan 2005 22:56:35 -0000 1.155 --- doc/src/sgml/datatype.sgml 11 Mar 2005 05:35:45 -0000 *************** *** 2980,2989 **** <para> Object identifiers (OIDs) are used internally by <productname>PostgreSQL</productname> as primary keys for various ! system tables. An OID system column is also added to user-created ! tables, unless <literal>WITHOUT OIDS</literal> is specified when ! the table is created, or the <xref linkend="guc-default-with-oids"> ! configuration variable is set to false. Type <type>oid</> represents an object identifier. There are also several alias types for <type>oid</>: <type>regproc</>, <type>regprocedure</>, <type>regoper</>, <type>regoperator</>, <type>regclass</>, and --- 2980,2989 ---- <para> Object identifiers (OIDs) are used internally by <productname>PostgreSQL</productname> as primary keys for various ! system tables. OIDs are not added to user-created tables, unless ! <literal>WITH OIDS</literal> is specified when the table is ! created, or the <xref linkend="guc-default-with-oids"> ! configuration variable is set to true. Type <type>oid</> represents an object identifier. There are also several alias types for <type>oid</>: <type>regproc</>, <type>regprocedure</>, <type>regoper</>, <type>regoperator</>, <type>regclass</>, and *************** *** 3000,3027 **** references to system tables. </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> The <type>oid</> type itself has few operations beyond comparison. ! It can be cast to ! integer, however, and then manipulated using the standard integer ! operators. (Beware of possible signed-versus-unsigned confusion ! if you do this.) </para> <para> --- 3000,3010 ---- references to system tables. </para> <para> The <type>oid</> type itself has few operations beyond comparison. ! It can be cast to integer, however, and then manipulated using the ! standard integer operators. (Beware of possible ! signed-versus-unsigned confusion if you do this.) </para> <para> Index: doc/src/sgml/ddl.sgml =================================================================== RCS file: /var/lib/cvs/pgsql/doc/src/sgml/ddl.sgml,v retrieving revision 1.39 diff -c -r1.39 ddl.sgml *** doc/src/sgml/ddl.sgml 22 Jan 2005 22:56:35 -0000 1.39 --- doc/src/sgml/ddl.sgml 11 Mar 2005 05:41:25 -0000 *************** *** 868,878 **** <primary>OID</primary> <secondary>column</secondary> </indexterm> ! The object identifier (object ID) of a row. This is a serial ! number that is automatically added by ! <productname>PostgreSQL</productname> to all table rows (unless ! the table was created using <literal>WITHOUT OIDS</literal>, in which ! case this column is not present). This column is of type <type>oid</type> (same name as the column); see <xref linkend="datatype-oid"> for more information about the type. </para> --- 868,877 ---- <primary>OID</primary> <secondary>column</secondary> </indexterm> ! The object identifier (object ID) of a row. This column is only ! present if the table was created using <literal>WITH ! OIDS</literal>, or if the <xref linkend="guc-default-with-oids"> ! configuration variable was enabled. This column is of type <type>oid</type> (same name as the column); see <xref linkend="datatype-oid"> for more information about the type. </para> Index: doc/src/sgml/plpgsql.sgml =================================================================== RCS file: /var/lib/cvs/pgsql/doc/src/sgml/plpgsql.sgml,v retrieving revision 1.61 diff -c -r1.61 plpgsql.sgml *** doc/src/sgml/plpgsql.sgml 14 Feb 2005 00:54:26 -0000 1.61 --- doc/src/sgml/plpgsql.sgml 11 Mar 2005 05:47:32 -0000 *************** *** 1299,1305 **** the <acronym>SQL</acronym> engine, and <varname>RESULT_OID</>, the OID of the last row inserted by the most recent <acronym>SQL</acronym> command. Note that <varname>RESULT_OID</> ! is only useful after an <command>INSERT</command> command. </para> <para> --- 1299,1306 ---- the <acronym>SQL</acronym> engine, and <varname>RESULT_OID</>, the OID of the last row inserted by the most recent <acronym>SQL</acronym> command. Note that <varname>RESULT_OID</> ! is only useful after an <command>INSERT</command> command into a ! table containing OIDs. </para> <para> Index: doc/src/sgml/pltcl.sgml =================================================================== RCS file: /var/lib/cvs/pgsql/doc/src/sgml/pltcl.sgml,v retrieving revision 2.34 diff -c -r2.34 pltcl.sgml *** doc/src/sgml/pltcl.sgml 22 Jan 2005 22:56:36 -0000 2.34 --- doc/src/sgml/pltcl.sgml 11 Mar 2005 05:48:06 -0000 *************** *** 401,407 **** <para> Returns the OID of the row inserted by the last <function>spi_exec</> or <function>spi_execp</>, ! if the command was a single-row <command>INSERT</>. (If not, you get zero.) </para> </listitem> </varlistentry> --- 401,408 ---- <para> Returns the OID of the row inserted by the last <function>spi_exec</> or <function>spi_execp</>, ! if the command was a single-row <command>INSERT</> and ! modified table contained OIDs. (If not, you get zero.) </para> </listitem> </varlistentry> Index: doc/src/sgml/runtime.sgml =================================================================== RCS file: /var/lib/cvs/pgsql/doc/src/sgml/runtime.sgml,v retrieving revision 1.307 diff -c -r1.307 runtime.sgml *** doc/src/sgml/runtime.sgml 4 Mar 2005 20:21:05 -0000 1.307 --- doc/src/sgml/runtime.sgml 11 Mar 2005 05:20:38 -0000 *************** *** 3587,3609 **** newly-created tables, if neither <literal>WITH OIDS</literal> nor <literal>WITHOUT OIDS</literal> is specified. It also determines whether OIDs will be included in tables created by ! <command>SELECT INTO</command>. In ! <productname>PostgreSQL</productname> &version; ! <varname>default_with_oids</varname> defaults to true. This is ! 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> ! To ease compatibility with applications that make use of OIDs, ! 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> </listitem> </varlistentry> --- 3587,3604 ---- newly-created tables, if neither <literal>WITH OIDS</literal> nor <literal>WITHOUT OIDS</literal> is specified. It also determines whether OIDs will be included in tables created by ! <command>SELECT INTO</command>. In <productname>PostgreSQL</> ! 8.1 <varname>default_with_oids</> is disabled by default; in ! prior versions of PostgreSQL, it was true by default. </para> <para> ! The use of OIDs in user tables is considered deprecated, so ! most installations should leave this variable disabled. ! Applications that require OIDs for a particular table should ! specify <literal>WITH OIDS</literal> when creating the ! table. This variable can be enabled for compatibility with old ! applications that do not follow this behavior. </para> </listitem> </varlistentry> Index: doc/src/sgml/ref/select_into.sgml =================================================================== RCS file: /var/lib/cvs/pgsql/doc/src/sgml/ref/select_into.sgml,v retrieving revision 1.33 diff -c -r1.33 select_into.sgml *** doc/src/sgml/ref/select_into.sgml 9 Jan 2005 05:57:45 -0000 1.33 --- doc/src/sgml/ref/select_into.sgml 11 Mar 2005 05:52:25 -0000 *************** *** 94,107 **** </para> <para> ! Prior to <productname>PostgreSQL</> 8.0, the table created by ! <command>SELECT INTO</command> always included OIDs. ! As of <productname>PostgreSQL</> 8.0, the ! inclusion of OIDs in the table created by <command>SELECT ! INTO</command> is controlled by the ! <xref linkend="guc-default-with-oids"> configuration variable. This ! variable currently defaults to true, but will likely default to ! false in a future release of <productname>PostgreSQL</>. </para> </refsect1> --- 94,106 ---- </para> <para> ! Prior to <productname>PostgreSQL</> 8.1, the table created by ! <command>SELECT INTO</command> included OIDs by default. In ! <productname>PostgreSQL</productname> 8.1, this is not the case ! — to include OIDs in the created table, the <xref ! linkend="guc-default-with-oids"> configuration variable must be ! enabled. Alternatively, <command>CREATE TABLE AS</command> can be ! used with the <literal>WITH OIDS</literal> clause. </para> </refsect1> Index: src/backend/utils/misc/guc.c =================================================================== RCS file: /var/lib/cvs/pgsql/src/backend/utils/misc/guc.c,v retrieving revision 1.254 diff -c -r1.254 guc.c *** src/backend/utils/misc/guc.c 4 Mar 2005 20:21:06 -0000 1.254 --- src/backend/utils/misc/guc.c 11 Mar 2005 04:36:43 -0000 *************** *** 139,145 **** bool Password_encryption = true; ! bool default_with_oids = true; int log_min_error_statement = PANIC; int log_min_messages = NOTICE; --- 139,145 ---- bool Password_encryption = true; ! bool default_with_oids = false; int log_min_error_statement = PANIC; int log_min_messages = NOTICE; *************** *** 801,811 **** }, { {"default_with_oids", PGC_USERSET, COMPAT_OPTIONS_PREVIOUS, ! gettext_noop("By default, newly-created tables should have OIDs."), NULL }, &default_with_oids, ! true, NULL, NULL }, { {"redirect_stderr", PGC_POSTMASTER, LOGGING_WHERE, --- 801,811 ---- }, { {"default_with_oids", PGC_USERSET, COMPAT_OPTIONS_PREVIOUS, ! gettext_noop("Create new tables with OIDs by default."), NULL }, &default_with_oids, ! false, NULL, NULL }, { {"redirect_stderr", PGC_POSTMASTER, LOGGING_WHERE, Index: src/backend/utils/misc/postgresql.conf.sample =================================================================== RCS file: /var/lib/cvs/pgsql/src/backend/utils/misc/postgresql.conf.sample,v retrieving revision 1.135 diff -c -r1.135 postgresql.conf.sample *** src/backend/utils/misc/postgresql.conf.sample 4 Mar 2005 20:21:06 -0000 1.135 --- src/backend/utils/misc/postgresql.conf.sample 11 Mar 2005 04:37:06 -0000 *************** *** 314,320 **** #add_missing_from = true #regex_flavor = advanced # advanced, extended, or basic #sql_inheritance = true ! #default_with_oids = true # - Other Platforms & Clients - --- 314,320 ---- #add_missing_from = true #regex_flavor = advanced # advanced, extended, or basic #sql_inheritance = true ! #default_with_oids = false # - Other Platforms & Clients -
pgsql-patches by date: