Re: [PATCHES] default to WITHOUT OIDS

2005-03-11 Thread Qingqing Zhou
!gettext_noop(Create new tables with OIDs by default.),
without?



Neil Conway [EMAIL PROTECTED]
 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 - 1.155
 --- doc/src/sgml/datatype.sgml 11 Mar 2005 05:35:45 -
 ***
 *** 2980,2989 
  para
   Object identifiers (OIDs) are used internally by
   productnamePostgreSQL/productname as primary keys for various
 ! system tables.  An OID system column is also added to user-created
 ! tables, unless literalWITHOUT OIDS/literal is specified when
 ! the table is created, or the xref linkend=guc-default-with-oids
 ! configuration variable is set to false.  Type typeoid/
   represents an object identifier.  There are also several alias
   types for typeoid/: typeregproc/, typeregprocedure/,
   typeregoper/, typeregoperator/, typeregclass/, and
 --- 2980,2989 
  para
   Object identifiers (OIDs) are used internally by
   productnamePostgreSQL/productname as primary keys for various
 ! system tables.  OIDs are not added to user-created tables, unless
 ! literalWITH OIDS/literal is specified when the table is
 ! created, or the xref linkend=guc-default-with-oids
 ! configuration variable is set to true.  Type typeoid/
   represents an object identifier.  There are also several alias
   types for typeoid/: typeregproc/, typeregprocedure/,
   typeregoper/, typeregoperator/, typeregclass/, and
 ***
 *** 3000,3027 
   references to system tables.
  /para

 -note
 - para
 -  OIDs are included by default in user-created tables in
 -  productnamePostgreSQL/productname version;. However, this
 -  behavior is likely to change in a future version of
 -  productnamePostgreSQL/productname. Eventually, user-created
 -  tables will not include an OID system column unless literalWITH
 -  OIDS/literal is specified when the table is created, or the
 -  varnamedefault_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 literalWITH
 -  OIDS/literal when that table is created to ensure compatibility
 -  with future releases of productnamePostgreSQL/productname.
 - /para
 -/note
 -
  para
   The typeoid/ 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 typeoid/ 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 - 1.39
 --- doc/src/sgml/ddl.sgml 11 Mar 2005 05:41:25 -
 ***
 *** 868,878 
  primaryOID/primary
  secondarycolumn/secondary
 /indexterm
 !   The object identifier (object ID) of a row.  This is a serial
 !   number that is automatically added by
 !   productnamePostgreSQL/productname to all table rows (unless
 !   the table was created using literalWITHOUT OIDS/literal, in
which
 !   case this column is not present).  This column is of type
 typeoid/type (same name as the column); see xref
 linkend=datatype-oid for more information about the type.
/para
 --- 868,877 
  primaryOID/primary
  secondarycolumn/secondary
 /indexterm
 !   The object identifier (object ID) of a row. This column is only
 !   present if the table was created using literalWITH
 !   OIDS/literal, or if the xref linkend=guc-default-with-oids
 !   configuration variable was enabled. This column is of type
 typeoid/type (same name as the column); see xref
 

Re: [PATCHES] default to WITHOUT OIDS

2005-03-11 Thread Neil Conway
Qingqing Zhou wrote:
!gettext_noop(Create new tables with OIDs by default.),
without?
Right: if the variable is on, Postgres will create new tables with 
OIDs by default. If the variable is off, it won't. This is similar to 
how the check_function_bodies GUC var is already documented.

(Speaking of which, it would be good if the descriptions of the GUC 
variables were more consistent with one another. Some say that a 
variable Sets the threshold of FROM items beyond which GEQO will be 
used, for example, whereas others merely state what the variable 
controls -- e.g. Encrypt passwords.)

-Neil
---(end of broadcast)---
TIP 9: the planner will ignore your desire to choose an index scan if your
 joining column's datatypes do not match