Commit 8afae114 authored by Bruce Momjian's avatar Bruce Momjian

Update for 6.3 release.

parent 4af1e537
...@@ -7,9 +7,6 @@ previous releases of PostgreSQL. ...@@ -7,9 +7,6 @@ previous releases of PostgreSQL.
* The migration/6.2.1_to_6.3 file contains a detailed description * The migration/6.2.1_to_6.3 file contains a detailed description
* of the feature changes in this release, and is recommended reading. * of the feature changes in this release, and is recommended reading.
CHANGES IN THE 6.3 RELEASE
--------------------------
Bug Fixes Bug Fixes
--------- ---------
Fix binary cursors broken by MOVE implementation(Vadim) Fix binary cursors broken by MOVE implementation(Vadim)
...@@ -43,6 +40,8 @@ Allow multiple-argument functions in constraint clauses(Thomas) ...@@ -43,6 +40,8 @@ Allow multiple-argument functions in constraint clauses(Thomas)
Check boolean input literals for 'true','false','yes','no','1','0' Check boolean input literals for 'true','false','yes','no','1','0'
and throw elog(ERROR) if unrecognized(Thomas) and throw elog(ERROR) if unrecognized(Thomas)
Major large objects fix Major large objects fix
Fix for GROUP BY showing duplicates(Vadim)
Fix for index scans in MergeJion(Vadim)
Enhancements Enhancements
------------ ------------
......
<HTML>
<HEAD> Frequently Asked Questions (FAQ) for PostgreSQL
<TITLE>PostgreSQL FAQ</title>
</HEAD> Last updated: Sat Feb 28 10:04:28 EST 1998
<BODY BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#FF0000" VLINK="#A00000" ALINK="#0
000FF"> Current maintainer: Bruce Momjian (maillist@candle.pha.pa.us)
<H1>
Frequently Asked Questions (FAQ) for PostgreSQL The most recent version of this document can be viewed at the
</H1> postgreSQL Web site, http://postgreSQL.org.
<P>
Last updated: Wed Feb 25 14:37:07 EST 1998 Linux-specific questions are answered in
<P> http://postgreSQL.org/docs/faq-linux.shtml.
Current maintainer: Bruce Momjian (<a
href="mailto:maillist@candle.pha.pa.us">maillist@candle.pha.pa.us</a>)<BR> Irix-specific questions are answered in
<P> http://postgreSQL.org/docs/faq-irix.shtml.
The most recent version of this document can be viewed at _________________________________________________________________
the postgreSQL Web site, <a
href="http://postgreSQL.org">http://postgreSQL.org</a>. Questions answered:
<P>
Linux-specific questions are answered in 1) General questions
<a href="http://postgreSQL.org/docs/faq-linux.shtml">http://postgreSQL.org/docs
/faq-linux.shtml</a>. 1.1) What is PostgreSQL?
<P> 1.2) What does PostgreSQL run on?
Irix-specific questions are answered in 1.3) Where can I get PostgreSQL?
<a href="http://postgreSQL.org/docs/faq-irix.shtml">http://postgreSQL.org/docs/ 1.4) What's the copyright on PostgreSQL?
faq-irix.shtml</a>. 1.5) Support for PostgreSQL
<P> 1.6) Latest release of PostgreSQL
<HR> 1.7) Is there a commercial version of PostgreSQL?
<P> 1.8) What documentation is available for PostgreSQL?
<H2>Questions answered:</H2> 1.9) What version of SQL does PostgreSQL use?
<H3> 1) General questions</H3> 1.10) Does PostgreSQL work with databases from earlier versions of
<a href="#1.1">1.1</a>) What is PostgreSQL?<BR> postgres?
<a href="#1.2">1.2</a>) What does PostgreSQL run on?<BR> 1.11) Are there ODBC drivers for PostgreSQL?
<a href="#1.3">1.3</a>) Where can I get PostgreSQL?<BR> 1.12) What tools are available for hooking postgres to Web pages?
<a href="#1.4">1.4</a>) What's the copyright on PostgreSQL?<BR> 1.13) Does PostgreSQL have a graphical user interface? A report
<a href="#1.5">1.5</a>) Support for PostgreSQL<BR> generator? A embedded query language interface?
<a href="#1.6">1.6</a>) Latest release of PostgreSQL<BR> 1.14) What is a good book to learn SQL?
<a href="#1.7">1.7</a>) Is there a commercial version of PostgreSQL?<BR>
<a href="#1.8">1.8</a>) What documentation is available for PostgreSQL?<BR> 2) Installation/Configuration questions
<a href="#1.9">1.9</a>) What version of SQL does PostgreSQL use?<BR>
<a href="#1.10">1.10</a>) Does PostgreSQL work with databases from 2.1) initdb doesn't run
earlier versions of postgres?<BR> 2.2) when I start up the postmaster, I get "FindBackend: could not
<a href="#1.11">1.11</a>) Are there ODBC drivers for find a backend to execute..." "postmaster: could not find backend to
PostgreSQL?<BR> execute..."
<a href="#1.12">1.12</a>) What tools are available for hooking 2.3) The system seems to be confused about commas, decimal points, and
postgres to Web pages?<BR> date formats.
<a href="#1.13">1.13</a>) Does PostgreSQL have a graphical user interface 2.4) How do I install PostgreSQL somewhere other than
? /usr/local/pgsql?
A report generator? A embedded query language interface?<BR> 2.5) When I run postmaster, I get a Bad System Call core dumped
<a href="#1.14">1.14</a>) What is a good book to learn SQL?<BR> message.
2.6) When I try to start the postmaster, I get IpcMemoryCreate errors.
<H3> 2) Installation/Configuration questions</H3> 2.7) I have changed a source file, but a recompile does not see the
<a href="#2.1">2.1</a>) initdb doesn't run<BR> change?
<a href="#2.2">2.2</a>) when I start up the postmaster, I get 2.8) How do I prevent other hosts from accessing my PostgreSQL
"FindBackend: could not find a backend to execute..." 2.9) I can't access the database as the 'root' user.
"postmaster: could not find backend to execute..."<BR> 2.10) All my servers crash under concurrent table access. Why?
<a href="#2.3">2.3</a>) The system seems to be confused about commas, 2.11) How do I tune the database engine for better performance?
decimal points, and date formats.<BR> 2.12) What debugging features are available in PostgreSQL?
<a href="#2.4">2.4</a>) How do I install PostgreSQL somewhere other than 2.13) How do I enable more than 32 concurrent backends?
/usr/local/pgsql?<BR>
<a href="#2.5">2.5</a>) When I run postmaster, I get a Bad System Call 3) Operational questions
core dumped message.<BR>
<a href="#2.6">2.6</a>) When I try to start the postmaster, I get 3.1) Does PostgreSQL support nested subqueries?
IpcMemoryCreate errors.<BR> 3.2) I've having a lot of problems using rules.
<a href="#2.7">2.7</a>) I have changed a source file, but a 3.3) I can't seem to write into the middle of large objects reliably.
recompile does not see the change?<BR> 3.4) How can I write client applications to PostgreSQL?
<a href="#2.8">2.8</a>) How do I prevent other hosts from accessing my 3.5) How do I set up a pg_group?
PostgreSQL<BR> 3.6) What is the exact difference between binary cursors and normal
<a href="#2.9">2.9</a>) I can't access the database as the cursors?
'root' user.<BR> 3.7) What is a R-tree index and what is it used for?
<a href="#2.10">2.10</a>) All my servers crash under concurrent 3.8) What is the maximum size for a tuple?
table access. Why?<BR> 3.9) I defined indices but my queries don't seem to make use of them.
<a href="#2.11">2.11</a>) How do I tune the database engine for Why?
better performance?<BR> 3.10) How do I do regular expression searches? case-insensitive regexp
<a href="#2.12">2.12</a>) What debugging features are available in searching?
PostgreSQL?<BR> 3.11) I experienced a server crash during a vacuum. How do I remove
<a href="#2.13">2.13</a>) How do I enable more than 32 concurrent the lock file?
backends? 3.12) What is the difference between the various character types?
<H3> 3) Operational questions</H3> 3.13) In a query, how do I detect if a field is NULL?
<a href="#3.1">3.1</a>) Does PostgreSQL support nested subqueries?<BR> 3.14) How do I see how the query optimizer is evaluating my query?
<a href="#3.2">3.2</a>) I've having a lot of problems using rules.<BR> 3.15) How do I create a serial field?
<a href="#3.3">3.3</a>) I can't seem to write into the middle of large 3.16) What are the pg_psort.XXX files in my database directory?
objects reliably.<BR> 3.17) Why can't I connect to my database from another machine?
<a href="#3.4">3.4</a>) How can I write client applications to 3.18) How do I find out what indexes or operations are defined in the
PostgreSQL?<BR> database?
<a href="#3.5">3.5</a>) How do I set up a pg_group?<BR> 3.19) What is the time-warp feature and how does it relate to vacuum?
<a href="#3.6">3.6</a>) What is the exact difference between 3.20) What is an oid? What is a tid?
binary cursors and normal cursors?<BR> 3.21) What is the meaning of some of the terms used in Postgres?
<a href="#3.7">3.7</a>) What is a R-tree index and what is it 3.22) What is Genetic Query Optimization?
used for?<BR> 3.23) How do you remove a column from a table?
<a href="#3.8">3.8</a>) What is the maximum size for a 3.24) How do SELECT only the first few rows of a query?
tuple?<BR> 3.25) Why can't I create a column named "time"?
<a href="#3.9">3.9</a>) I defined indices but my queries don't 3.26) How much database disk space is required to store data from a
seem to make use of them. Why?<BR> typical flat file?
<a href="#3.10">3.10</a>) How do I do regular expression searches?
case-insensitive regexp searching?<BR> 4) Questions about extending PostgreSQL
<a href="#3.11">3.11</a>) I experienced a server crash during a
vacuum. How do I remove the lock file?<BR> 4.1) I wrote a user-defined function and when I run it in psql, it
<a href="#3.12">3.12</a>) What is the difference between the dumps core.
various character types?<BR> 4.2) I get messages of the type NOTICE:PortalHeapMemoryFree:
<a href="#3.13">3.13</a>) In a query, how do I detect if a field 0x402251d0
is NULL?<BR> 4.3) I've written some nifty new types and functions for PostgreSQL.
<a href="#3.14">3.14</a>) How do I see how the query optimizer is 4.4) How do I write a C function to return a tuple?
evaluating my query?<BR>
<a href="#3.15">3.15</a>) How do I create a serial field?<BR> 5) Bugs
<a href="#3.16">3.16</a>) What are the pg_psort.XXX files in my
database directory?<BR> 5.1) How do I make a bug report?
<a href="#3.17">3.17</a>) Why can't I connect to my database from _________________________________________________________________
another machine?<BR>
<a href="#3.18">3.18</a>) How do I find out what indexes or Section 1: General Questions
operations are defined in the database?<BR>
<a href="#3.19">3.19</a>) What is the time-warp feature and how 1.1) What is PostgreSQL?
does it relate to vacuum?<BR>
<a href="#3.20">3.20</a>) What is an oid? What is a tid?<BR> PostgreSQL is an enhancement of the POSTGRES database management
<a href="#3.21">3.21</a>) What is the meaning of some of the terms system, a next-generation DBMS research prototype. While PostgreSQL
used in Postgres?<BR> retains the powerful data model and rich data types of POSTGRES, it
<a href="#3.22">3.22</a>) What is Genetic Query Optimization?<BR> replaces the PostQuel query language with an extended subset of SQL.
<a href="#3.23">3.23</a>) How do you remove a column from a table?<BR> PostgreSQL is free and the complete source is available.
<a href="#3.24">3.24</a>) How do SELECT only the first few rows of
a query?<BR> PostgreSQL development is being performed by a team of Internet
<a href="#3.25">3.25</a>) Why can't I create a column named "time"?<BR> developers who all subscribe to the PostgreSQL development mailing
<a href="#3.26">3.26</a>) How much database disk space is required list. The current coordinator is Marc G. Fournier
to store data from a typical flat file?<BR> (scrappy@postgreSQL.org). (See below on how to join). This team is now
<H3> 4) Questions about extending PostgreSQL</H3> responsible for all current and future development of PostgreSQL.
<a href="#4.1">4.1</a>) I wrote a user-defined function and when I run
it in psql, it dumps core.<BR> The authors of PostgreSQL 1.01 were Andrew Yu and Jolly Chen. Many
<a href="#4.2">4.2</a>) I get messages of the type others have contributed to the porting, testing, debugging and
NOTICE:PortalHeapMemoryFree: 0x402251d0<BR> enhancement of the code. The original Postgres code, from which
<a href="#4.3">4.3</a>) I've written some nifty new types and functions PostgreSQL is derived, was the effort of many graduate students,
for PostgreSQL.<BR> undergraduate students, and staff programmers working under the
<a href="#4.4">4.4</a>) How do I write a C function to return a direction of Professor Michael Stonebraker at the University of
tuple?<BR> California, Berkeley.
<H3> 5) Bugs</H3>
<a href="#5.1">5.1</a>) How do I make a bug report? The original name of the software at Berkeley was Postgres. When SQL
<P> functionality was added in 1995, its name was changed to Postgres95.
The name was changed at the end of 1996 to PostgreSQL.
<HR>
<H2> Section 1: General Questions</H2> <H3><a 1.2) What does PostgreSQL run on?
name="1.1">1.1</a>) What is PostgreSQL?</H3>
<P> The authors have compiled and tested PostgreSQL on the following
PostgreSQL is an enhancement of the POSTGRES database management system, platforms(some of these compiles require gcc 2.7.0):
a next-generation DBMS research prototype. While PostgreSQL retains the * aix - IBM on AIX 3.2.5 or 4.x
powerful data model and rich data types of POSTGRES, it replaces the * alpha - DEC Alpha AXP on Digital Unix 2.0, 3.2, 4.0
PostQuel query language with an extended subset of SQL. PostgreSQL is * BSD44_derived - OSs derived from 4.4-lite BSD (NetBSD, FreeBSD)
free and the complete source is available. * bsdi - BSD/OS 2.0, 2.01, 2.1, 3.0
<P> * dgux - DG/UX 5.4R4.11
PostgreSQL development is being performed by a team of Internet * hpux - HP PA-RISC on HP-UX 9.0, 10
developers who all subscribe to the PostgreSQL development mailing list. * i386_solaris - i386 Solaris
The current coordinator is Marc G. Fournier (<a * irix5 - SGI MIPS on IRIX 5.3
href="mailto:scrappy@postgreSQL.org">scrappy@postgreSQL.org</a>). (See * linux - Intel x86 on Linux 2.0 and Linux ELF SPARC on Linux ELF
below on how to join). This team is now responsible for all current and PPC on Linux Elf (For non-ELF Linux, see LINUX_ELF below).
future development of PostgreSQL. * sco - SCO 3.2v5
<P> * sparc_solaris - SUN SPARC on Solaris 2.4, 2.5, 2.5.1
The authors of PostgreSQL 1.01 were Andrew Yu and Jolly Chen. Many * sunos4 - SUN SPARC on SunOS 4.1.3
others have contributed to the porting, testing, debugging and * svr4 - Intel x86 on Intel SVR4 and MIPS
enhancement of the code. The original Postgres code, from which * ultrix4 - DEC MIPS on Ultrix 4.4
PostgreSQL is derived, was the effort of many graduate students,
undergraduate students, and staff programmers working under the The following platforms have known problems/bugs:
direction of Professor Michael Stonebraker at the University of * nextstep - Motorola MC68K or Intel x86 on NeXTSTEP 3.2
California, Berkeley.
<P> 1.3) Where can I get PostgreSQL?
The original name of the software at Berkeley was Postgres. When SQL
functionality was added in 1995, its name was changed to Postgres95. The The primary anonymous ftp site for PostgreSQL is:
name was changed at the end of 1996 to PostgreSQL. * ftp://ftp.postgreSQL.org/pub
<P>
<H3><a name="1.2">1.2</a>) What does PostgreSQL run A mirror site exists at:
on?</H3> * ftp://postgres95.vnet.net/pub/postgres95
<P> * ftp://ftp.luga.or.at/pub/postgres95
The authors have compiled and tested PostgreSQL on the following * ftp://cal011111.student.utwente.nl/pub/postgres95
platforms(some of these compiles require gcc 2.7.0): * ftp://ftp.uni-trier.de/pub/database/rdbms/postgres/postgres95
<UL> * ftp://rocker.sch.bme.hu
<LI> aix - IBM on AIX 3.2.5 or 4.x
<LI> alpha - DEC Alpha AXP on Digital Unix 2.0, 3.2, 4.0 1.4) What's the copyright on PostgreSQL?
<LI> BSD44_derived - OSs derived from 4.4-lite BSD (NetBSD, FreeBSD)
<LI> bsdi - BSD/OS 2.0, 2.01, 2.1, 3.0 PostgreSQL is subject to the following COPYRIGHT.
<LI> dgux - DG/UX 5.4R4.11
<LI> hpux - HP PA-RISC on HP-UX 9.0, 10 PostgreSQL Data Base Management System
<LI> i386_solaris - i386 Solaris
<LI> irix5 - SGI MIPS on IRIX 5.3 Copyright (c) 1994-6 Regents of the University of California
<LI> linux - Intel x86 on Linux 2.0 and Linux ELF
SPARC on Linux ELF Permission to use, copy, modify, and distribute this software and its
PPC on Linux Elf documentation for any purpose, without fee, and without a written
(For non-ELF Linux, see LINUX_ELF below). agreement is hereby granted, provided that the above copyright notice
<LI> sco - SCO 3.2v5 and this paragraph and the following two paragraphs appear in all
<LI> sparc_solaris - SUN SPARC on Solaris 2.4, 2.5, 2.5.1 copies.
<LI> sunos4 - SUN SPARC on SunOS 4.1.3
<LI> svr4 - Intel x86 on Intel SVR4 and MIPS IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY
<LI> ultrix4 - DEC MIPS on Ultrix 4.4 FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES,
</UL> INCLUDING LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND
The following platforms have known problems/bugs: ITS DOCUMENTATION, EVEN IF THE UNIVERSITY OF CALIFORNIA HAS BEEN
<UL> ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
<LI> nextstep - Motorola MC68K or Intel x86 on NeXTSTEP 3.2
</UL> THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES,
<P> INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
<H3><a name="1.3">1.3</a>) Where can I get PostgreSQL?</H3> MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE
<P> The primary anonymous ftp site for PostgreSQL is: PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE UNIVERSITY OF
<UL> CALIFORNIA HAS NO OBLIGATIONS TO PROVIDE MAINTENANCE, SUPPORT,
<LI> <a UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
href="ftp://ftp.postgreSQL.org/pub">ftp://ftp.postgreSQL.org/pub</a>
</UL> 1.5) Support for PostgreSQL
<P> A mirror site exists at:
<UL> There is no official support for PostgreSQL from the original
<LI> <a maintainers or from University of California, Berkeley. It is
href="ftp://postgres95.vnet.net/pub/postgres95">ftp://postgres95.vnet.net/pub/p maintained through volunteer effort only.
ostgres95</a>
<LI> <a The main mailing list is: questions@postgreSQL.org. It is available
href="ftp://ftp.luga.or.at/pub/postgres95">ftp://ftp.luga.or.at/pub/postgres95< for discussion o f matters pertaining to PostgreSQL, including but not
/a> limited to bug reports and fixes. For info on how to subscribe, send a
<LI> <a mail with the lines in the body (not the subject line)
href="ftp://cal011111.student.utwente.nl/pub/postgres95">ftp://cal011111.studen
t.utwente.nl/pub/postgres95</a>
<LI> <a
href="ftp://ftp.uni-trier.de/pub/database/rdbms/postgres/postgres95">ftp://ftp.
uni-trier.de/pub/database/rdbms/postgres/postgres95</a>
<LI> <a
href="ftp://rocker.sch.bme.hu">ftp://rocker.sch.bme.hu</a>
</UL>
<H3><a name="1.4">1.4</a>) What's the copyright on
PostgreSQL?</H3>
<P>
PostgreSQL is subject to the following COPYRIGHT.
<P>
PostgreSQL Data Base Management System
<P>
Copyright (c) 1994-6 Regents of the University of California
<P>
Permission to use, copy, modify, and distribute this software and its
documentation for any purpose, without fee, and without a written
agreement is hereby granted, provided that the above copyright notice
and this paragraph and the following two paragraphs appear in all
copies.
<P>
IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY
FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES,
INCLUDING LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS
DOCUMENTATION, EVEN IF THE UNIVERSITY OF CALIFORNIA HAS BEEN ADVISED OF
THE POSSIBILITY OF SUCH DAMAGE.
<P>
THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES,
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER
IS ON AN "AS IS" BASIS, AND THE UNIVERSITY OF CALIFORNIA HAS NO
OBLIGATIONS TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR
MODIFICATIONS.
<P>
<H3><a name="1.5">1.5</a>) Support for PostgreSQL </H3>
<P>
There is no official support for PostgreSQL from the original
maintainers or from University of California, Berkeley. It is
maintained through volunteer effort only.
<P>
The main mailing list is: <a
href="mailto:questions@postgreSQL.org">questions@postgreSQL.org</a>. It
is available for discussion o f matters pertaining to PostgreSQL,
including but not limited to bug reports and fixes. For info on how to
subscribe, send a mail with the lines in the body (not the subject line)
<PRE>
<CODE>
subscribe subscribe
end end
</CODE>
</PRE> to questions-request@postgreSQL.org.
<P>
to <a There is also a digest list available. To subscribe to this list, send
href="mailto:questions-request@postgreSQL.org">questions-request@postgreSQL.org email to: questions-digest-request@postgreSQL.org with a BODY of:
</a>.
<P>
There is also a digest list available. To subscribe to this list, send
email to:
<a
href="mailto:questions-digest-request@postgreSQL.org">
questions-digest-request@postgreSQL.org</a> with a BODY of:
<PRE>
<KBD>
subscribe subscribe
end end
</KBD>
</PRE> Digests are sent out to members of this list whenever the main list
Digests are sent out to members of this list whenever the main list has has received around 30k of messages.
received around 30k of messages.
<P> There is a bugs mailing list available. To subscribe to this list,
There is a bugs mailing list available. To subscribe to this send email to bugs-request@postgreSQL.org with a BODY of:
list, send email to <a
href="mailto:bugs-request@postgreSQL.org">bugs-request@postgreSQL.org</a> There is also a developers discussion mailing list available. To
with a BODY of: subscribe to this list, send email to hackers-request@postgreSQL.org
<P> with a BODY of:
There is also a developers discussion mailing list available. To subscribe to
this
list, send email to <a
href="mailto:hackers-request@postgreSQL.org">hackers-request@postgreSQL.org</a>
with a BODY of:
<P>
<PRE>
<KBD>
subscribe subscribe
end end
</KBD>
</PRE> Additional information about PostgreSQL can be found via the
<P> PostgreSQL WWW home page at:
Additional information about PostgreSQL can be found via the PostgreSQL
WWW home page at: http://postgreSQL.org
<BLOCKQUOTE>
<a 1.6) Latest release of PostgreSQL
href="http://postgreSQL.org">http://postgreSQL.org</a>
</BLOCKQUOTE> The latest release of PostgreSQL is version 6.3, which was released on
<P> March 1st, 1998.
<H3><a name="1.6">1.6</a>) Latest release of PostgreSQL</H3>
<P> We plan to have major releases every three months.
The latest release of PostgreSQL is version 6.2.1, which was released on
October 17th, 1997. We are testing 6.3 beta. For information about 1.7) Is there a commercial version of PostgreSQL?
what is new in 6.3, see our TODO list on our WWW page.
<P> Illustra Information Technology (a wholly owned subsidiary of Informix
We plan to have major releases every three months. Software, Inc.) sells an object-relational DBMS called Illustra that
<P> was originally based on postgres. Illustra has cosmetic similarities
<H3><a name="1.7">1.7</a>) Is there a commercial version of PostgreSQL?</H to PostgreSQL but has more features, is more robust, performs better,
3> and offers real documentation and support. On the flip side, it costs
<P> money. For more information, contact sales@illustra.com
Illustra Information Technology (a wholly owned subsidiary of Informix
Software, Inc.) sells an object-relational DBMS called Illustra that was 1.8) What documentation is available for PostgreSQL?
originally based on postgres. Illustra has cosmetic similarities to
PostgreSQL but has more features, is more robust, performs better, and A user manual, manual pages, and some small test examples are included
offers real documentation and support. On the flip side, it costs in the distribution. The sql and built-in manual pages are
money. For more information, contact <a particularly important.
href="mailto:sales@illustra.com">sales@illustra.com</a>
<P> The www page contains pointers to an implementation guide and five
<H3><a name="1.8">1.8</a>) What documentation is available for PostgreSQL? papers written about postgres design concepts and features.
</H3>
<P> 1.9) What version of SQL does PostgreSQL use?
A user manual, manual pages, and some small test examples are included
in the distribution. The sql and built-in manual pages are particularly PostgreSQL supports a subset of SQL-92. It has most of the important
important. constructs but lacks some of the functionality. The most visible
<P> differences are:
The www page contains pointers to an implementation guide and five * no HAVING clause under a GROUP BY
papers written about postgres design concepts and features.
<P> On the other hand, you get to create user-defined types, functions,
<H3><a name="1.9">1.9</a>) What version of SQL does PostgreSQL use?</H3> inheritance etc.
<P>
PostgreSQL supports a subset of SQL-92. It has most of the important 1.10) Does PostgreSQL work with databases from earlier versions of postgres?
constructs but lacks some of the functionality. The most visible
differences are: PostgreSQL v1.09 is compatible with databases created with v1.01.
<UL>
<LI> no HAVING clause under a GROUP BY Upgrading to 6.3 from earlier releases requires a dump and restore.
</UL>
<P> Upgrading to 6.2.1 from pre-6.2 requires a dump and restore.
On the other hand, you get to create user-defined types, functions,
inheritance etc. Upgrading to 6.2.1 from 6.2 does not require a dump, but see the
<P> appropriate /migration file in the distribution.
<H3><a name="1.10">1.10</a>) Does PostgreSQL work with databases from
earlier versions of postgres?</H3> Those ugrading from versions earlier than 1.09 must upgrade to 1.09
<P> first without a dump/reload, then dump the data from 1.09, and then
PostgreSQL v1.09 is compatible with databases created with v1.01. load it into 6.2.1 or 6.3 beta.
<P>
Upgrading to 6.3 from earlier releases requires a dump and restore. 1.11) Are there ODBC drivers for PostgreSQL?
<P>
Upgrading to 6.2.1 from pre-6.2 requires a dump and restore. There are two ODBC drivers available, PostODBC and OpenLink ODBC.
<P>
Upgrading to 6.2.1 from 6.2 does not require a dump, but see the PostODBC is included in the distribution. For all people being
appropriate /migration file in the distribution. interested in PostODBC, there are now two mailing lists devoted to the
<P> discussion of PostODBC. The mailing lists are:
Those ugrading from versions earlier than 1.09 must upgrade to 1.09 * postodbc-users@listserv.direct. net
first without a dump/reload, then dump the data from 1.09, and then load * postodbc-developers@listse rv.direct.net
it into 6.2.1 or 6.3 beta.
<P> these lists are ordinary majordomo mailing lists. You can subscribe by
<H3><a name="1.11">1.11</a>) Are there ODBC drivers for PostgreSQL?</H3> sending a mail to:
<P> * majordomo@listserv.direct.net
There are two ODBC drivers available, PostODBC and OpenLink ODBC.
<P> OpenLink ODBC is very popular. You can get it from
PostODBC is included in the distribution. http://www.openlinksw.com/postgres.html. It works with our standard
For all people being interested in PostODBC, there are now two mailing ODBC client software so you'll have Postgres ODBC available on every
lists devoted to the discussion of PostODBC. The mailing lists are: client platform we support (Win, Mac, Unix, VMS).
<UL>
<LI> <a We will probably be selling this product to people who need
href="mailto:postodbc-users@listserv.direct.net">postodbc-users@listserv.direct commercial-quality support, but a freeware version will always be
. available. Questions to postgres95@openlink.co.uk.
net</a>
<LI> <a 1.12) What tools are available for hooking postgres to Web pages?
href="mailto:postodbc-developers@listserv.direct.net">postodbc-developers@lists
e A nice introduction to Database-backed Web pages can be seen at:
rv.direct.net</a> http://www.webtools.com
</UL>
<P> For web integration, PHP is an excellent interface. The URL for that
these lists are ordinary majordomo mailing lists. You can subscribe by is http://www.php.net
sending a mail to:
<UL> PHP is great for simple stuff, but for more complex stuff, some still
<LI> <a use the perl interface and CGI.pm.
href="mailto:majordomo@listserv.direct.net">majordomo@listserv.direct.net</a>
</UL> An WWW gatway based on WDB using perl can be downloaded from:
<P> * http://www.eol.ists.ca/~dunlop/wdb -p95
OpenLink ODBC is very popular. You can get it from <a
href="http://www.openlinksw.com/"> 1.13) Does PostgreSQL have a graphical user interface? A report generator? A
http://www.openlinksw.com/postgres.html</a>. It works with our standard embedded query language interface?
ODBC client software so you'll have Postgres ODBC available on every
client platform we support (Win, Mac, Unix, VMS). We have a nice graphical user interface called pgaccess, which is
<P> shipped as part of the distribtion. Pgaccess also has a report
We will probably be selling this product to people who need generator.
commercial-quality support, but a freeware version will always be
available. Questions to <a We also have ecpg, which is an embedded SQL query language interface
href="mailto:postgres95@openlink.co.uk">postgres95@openlink.co.uk</a>. for C. This is also included.
<P>
<H3><a name="1.12">1.12</a>) What tools are available for hooking 1.14) What is a good book to learn SQL?
postgres to Web pages?</H3>
<P> Many of our users like The Practical SQL Handbook, Bowman et al,
A nice introduction to Database-backed Web pages can be seen at: Addison Wesley.
<a href="http://www.webtools.com">http://www.webtools.com</a> _________________________________________________________________
<P>
For web integration, PHP is an excellent interface. The URL for that Section 2: Installation Questions
is <a href="http://www.php.net">http://www.php.net</a>
<P> 2.1) initdb doesn't run
PHP is great for simple stuff, but for more complex stuff, some still
use the perl interface and CGI.pm. * check to see that you have the proper paths set
<P> * check that the 'postgres' user owns all the right files
An WWW gatway based on WDB using perl can be downloaded from: * ensure that there are files in $PGDATA/files, and that they are
<UL> non-empty. If they aren't, then "gmake install" failed for some
<LI> reason
<a
href="http://www.eol.ists.ca/~dunlop/wdb-p95">http://www.eol.ists.ca/~dunlop/wd 2.2) when I start up the postmaster, I get "FindBackend: could not find a
b backend to execute..." "postmaster: could not find backend to execute..."
-p95</a>
</UL> You probably do not have the right path set up. The 'postgres'
<H3><a name="1.13">1.13</a>) Does PostgreSQL have a graphical user interface executable needs to be in your path.
?
A report generator? A embedded query language interface?</H3> 2.3) The system seems to be confused about commas, decimal points, and date
<P> formats.
We have a nice graphical user interface called pgaccess, which is
shipped as part of the distribtion. Pgaccess also has a report Check your locale configuration. PostgreSQL uses the locale settings
generator. of the user that ran the postmaster process. Set those accordingly for
<P> your operating environment.
We also have ecpg, which is an embedded SQL query language interface for
C. This is also included. 2.4) How do I install PostgreSQL somewhere other than /usr/local/pgsql?
<P>
<H3><a name="1.14">1.14</a>) What is a good book to learn SQL?</H3> You need to edit Makefile.global and change POSTGRESDIR accordingly,
<P> or create a Makefile.custom and define POSTGRESDIR there.
Many of our users like <I>The Practical SQL Handbook</I>,
Bowman et al, Addison Wesley. 2.5) When I run postmaster, I get a Bad System Call core dumped message.
<P>
It could be a variety of problems, but first check to see that you
<HR> have system V extensions installed on your kernel. PostgreSQL requires
<H2> Section 2: Installation Questions kernel support for shared memory.
</H2>
<P> 2.6) When I try to start the postmaster, I get IpcMemoryCreate errors.
<H3><a name="2.1">2.1</a>) initdb doesn't run</H3>
<P> You either do not have shared memory configured properly in kernel or
<UL> you need to enlarge the shared memory available in the kernel. The
<LI> check to see that you have the proper paths set exact amount you need depends on your architecture and how many
<LI> check that the 'postgres' user owns all the right files buffers you configure postmaster to run with. For most systems, with
<LI> ensure that there are files in $PGDATA/files, and that they default buffer sizes, you need a minimum of ~760K.
are non-empty. If they aren't, then "gmake install" failed for
some reason 2.7) I have changed a source file, but a recompile does not see the change?
</UL>
<P> The Makefiles do not have the proper dependencies for include files.
<H3><a name="2.2">2.2</a>) when I start up the postmaster, I get You have to do a 'make clean' and then another 'make'.
"FindBackend: could not find a backend to execute..."
"postmaster: could not find backend to execute..."</H3> 2.8) How do I prevent other hosts from accessing my PostgreSQL backend?
<P>
You probably do not have the right path set up. The 'postgres' By default, PostgreSQL only allows connections from the local machine
executable needs to be in your path. using unix domain. You must add the -i flag to the postmaster, and
<P> enable host-based authentication by modifying the file $PGDATA/pg_hba
<H3><a name="2.3">2.3</a>) The system seems to be confused about commas, accordingly.
decimal points, and date formats.</H3>
<P> 2.9) I can't access the database as the 'root' user.
Check your locale configuration. PostgreSQL uses the locale settings of
the user that ran the postmaster process. Set those accordingly for You should not create database users with user id 0(root). They will
your operating environment. be unable to access the database. This is a security precaution
<P> because of the ability of any user to dynamically link object modules
<H3><a name="2.4">2.4</a>) How do I install PostgreSQL somewhere other tha into the database engine.
n
/usr/local/pgsql?</H3> 2.10) All my servers crash under concurrent table access. Why?
<P>
You need to edit Makefile.global and change POSTGRESDIR accordingly, or This problem can be caused by a kernel that is not configured to
create a Makefile.custom and define POSTGRESDIR there. support semaphores.
<P>
<H3><a name="2.5">2.5</a>) When I run postmaster, I get a Bad System 2.11) How do I tune the database engine for better performance?
Call core dumped message.</H3>
<P> There are two things that can be done. You can disable fsync() by
It could be a variety of problems, but first check to see that you have starting the postmaster with a '-o -F' option. This will prevent
system V extensions installed on your kernel. PostgreSQL requires kernel fsync()'s from flushing to disk after every transaction.
support for shared memory.
<P> You can also use the postmaster -B option to increase the number of
<H3><a name="2.6">2.6</a>) When I try to start the postmaster, I get shared memory buffers shared among the backend processes. If you make
IpcMemoryCreate errors.</H3> this parameter too high, the process will not start or crash
<P> unexpectedly. Each buffer is 8K and the defualt is 64 buffers.
You either do not have shared memory configured properly in kernel or
you need to enlarge the shared memory available in the kernel. The You can also use the postgres -S option to increase the maximum amount
exact amount you need depends on your architecture and how many buffers of memory used by each backend process for temporary sorts. Each
you configure postmaster to run with. For most systems, with default buffer is 1K and the defualt is 512 buffers.
buffer sizes, you need a minimum of ~760K.
<P> 2.12) What debugging features are available in PostgreSQL?
<H3><a name="2.7">2.7</a>) I have changed a source file, but a
recompile does not see the change?</H3> PostgreSQL has several features that report status information that
<P> can be valuable for debugging purposes.
The Makefiles do not have the proper dependencies for include files. You
have to do a 'make clean' and then another 'make'. First, by running configure with the -enable-cassert option, many
<P> assert()'s monitor the progress of the backend and halt the program
<H3><a name="2.8">2.8</a>) How do I prevent other hosts from accessing my when something unexpected occurs.
PostgreSQL backend?</H3>
<P> Both postmaster and postgres have several debug options available.
By default, PostgreSQL only allows connections from the local machine First, whenever you start the postmaster, make sure you send the
using unix domain. You must add the -i flag to the postmaster, and standard output and error to a log file, like:
enable host-based authentication by modifying the file $PGDATA/pg_hba
accordingly.
<P>
<H3><a name="2.9">2.9</a>) I can't access the database as the 'root'
user.</H3>
<P>
You should not create database users with user id 0(root). They will be
unable to access the database. This is a security precaution because
of the ability of any user to dynamically link object modules into the
database engine.
<P>
<H3><a name="2.10">2.10</a>) All my servers crash under concurrent table
access. Why?</H3>
<P>
This problem can be caused by a kernel that is not configured to support
semaphores.
<P>
<H3><a name="2.11">2.11</a>) How do I tune the database engine for
better performance?</H3>
<P>
There are two things that can be done. You can disable fsync() by
starting the postmaster with a '-o -F' option. This
will prevent fsync()'s from flushing to disk after every transaction.
<P>
You can also use the postmaster -B option to increase the number of
shared memory buffers shared among the backend processes. If you make
this parameter too high, the process will not start or crash
unexpectedly. Each buffer is 8K and the defualt is 64 buffers.
<P>
You can also use the postgres -S option to increase the maximum
amount of memory used by each backend process for temporary sorts.
Each buffer is 1K and the defualt is 512 buffers.
<P>
<H3><a name="2.12">2.12</a>) What debugging features are available in
PostgreSQL?</H3>
<P>
PostgreSQL has several features that report status information that can
be valuable for debugging purposes.
<P>
First, by running configure with the -enable-cassert option,
many assert()'s monitor the progress of the backend and halt the
program when something unexpected occurs.
<P>
Both postmaster and postgres have several debug options available.
First, whenever you start the postmaster, make sure you send the
standard output and error to a log file, like:
<PRE>
<KBD>
cd /usr/local/pgsql cd /usr/local/pgsql
./bin/postmaster &gt;server.log 2&gt;&1 & ./bin/postmaster >server.log 2>&1 &
</KBD>
</PRE> This will put a server.log file in the top-level PostgreSQL directory.
<P> This file can contain useful information about problems or errors
This will put a server.log file in the top-level PostgreSQL directory. encountered by the server. Postmaster has a -d option that allows even
This file can contain useful information about problems or errors more detailed information to be reported. The -d option takes a number
encountered by the server. Postmaster has a -d option that allows even 1-3 that specifies the debug level. Be warned that a debug level of 3
more detailed information to be reported. The -d option takes a number generates large log files.
1-3 that specifies the debug level. Be warned that a debug level
of 3 generates large log files. You can actuall run the postgres backend from the command line, and
<P> type your SQL statement directly. This is recommended ONLY for
You can actuall run the postgres backend from the command line, and type debugging purposes. Note that a newline terminates the query, not a
your SQL statement directly. This is recommended ONLY for debugging semicolon. If you have compiled with debugging symbols, you can use a
purposes. Note that a newline terminates the query, not a semicolon. If debugger to see what is happening. Because the backend was not started
you have compiled with debugging symbols, you can use a debugger from the postmaster, it is not running in an identical environment and
to see what is happening. Because the backend was not started from the locking/backend interaction problems may not be duplicated. Some
postmaster, it is not running in an identical environment and operating system can attach to a running backend directly to diagnose
locking/backend interaction problems may not be duplicated. Some problems.
operating system can attach to a running backend directly to diagnose
problems. The postgres program has a -s, -A, -t options that can be very usefull
<P> for debugging and performance measurements.
The postgres program has a -s, -A, -t options that can be very usefull
for debugging and performance measurements. You can also compile with profiling to see what functions are taking
<P> execution time. The backend profile files will be deposited in the
You can also compile with profiling to see what functions are taking pgsql/data/base/dbname directory. The client profile file will be put
execution time. The backend profile files will be deposited in the in the current directory.
pgsql/data/base/dbname directory. The client profile file will be put
in the current directory. The EXPLAIN command (see this FAQ) allows you to see how PostgreSQL is
<P> interpreting your query.
The EXPLAIN command (see this FAQ) allows you to see how PostgreSQL is
interpreting your query. 2.13) How do I enable more than 32 concurrent backends?
<P>
<H3><a name="2.13">2.13</a>) How do I enable more than 32 concurrent Edit include/storage/sinvaladt.h, and change the value of
backends?</H3> MaxBackendId. In the future, we plan to make this a configurable
<P> prameter.
Edit include/storage/sinvaladt.h, and change the value of MaxBackendId. _________________________________________________________________
In the future, we plan to make this a configurable prameter.
<P> Section 3: PostgreSQL Features
<HR> 3.1) Does PostgreSQL support nested subqueries?
<H2> Section 3: PostgreSQL Features
</H2> Yes.
<P>
<H3><a name="3.1">3.1</a>) Does PostgreSQL support nested subqueries?</H3> 3.2) I've having a lot of problems using rules.
<P>
Yes. Currently, the rule system in PostgreSQL has some limitations. It
<P> works enough to support the view mechanism, but does not handle
<H3><a name="3.2">3.2</a>) I've having a lot of problems using rules.</H3> Insert/Update/Delete well.
<P>
Currently, the rule system in PostgreSQL has some limitations. It works 3.3) I can't seem to write into the middle of large objects reliably.
enough to support the view mechanism, but does not handle
Insert/Update/Delete well. The Inversion large object system now works perfectly. You should no
<P> longer have problems with large objects.
<H3><a name="3.3">3.3</a>) I can't seem to write into the middle of large
objects reliably.</H3> 3.4) How can I write client applications to PostgreSQL?
<P>
The Inversion large object system now works perfectly. You should no PostgreSQL supports a C-callable library interface called libpq as
longer have problems with large objects. well as many others. See the /src/interfaces directory.
<P>
<H3><a name="3.4">3.4</a>) How can I write client applications to PostgreS Others have contributed a perl interface and a WWW gateway to
QL?</H3> PostgreSQL. See the PostgreSQL home pages for more details.
<P>
PostgreSQL supports a C-callable library interface called libpq as well 3.5) How do I set up a pg_group?
as many others. See the /src/interfaces directory.
<P> Currently, there is no easy interface to set up user groups. You have
Others have contributed a perl interface and a WWW gateway to to explicitly insert/update the pg_group table. For example:
PostgreSQL. See the PostgreSQL home pages for more details.
<P>
<H3><a name="3.5">3.5</a>) How do I set up a pg_group?</H3> jolly=> insert into pg_group (groname, grosysid, grolist)
<P> jolly=> values ('posthackers', '1234', '{5443, 8261}');
Currently, there is no easy interface to set up user groups. You have to
explicitly insert/update the pg_group table. For example:
<PRE>
<CODE>
jolly=&gt; insert into pg_group (groname, grosysid, grolist)
jolly=&gt; values ('posthackers', '1234', '{5443, 8261}');
INSERT 548224 INSERT 548224
jolly=&gt; grant insert on foo to group posthackers; jolly=> grant insert on foo to group posthackers;
CHANGE CHANGE
jolly=&gt; jolly=>
</CODE>
</PRE> The fields in pg_group are:
<P> * groname: the group name. This a char16 and should be purely
The fields in pg_group are: alphanumeric. Do not include underscores or other punctuation.
<UL> * grosysid: the group id. This is an int4. This should be unique for
<LI> groname: the group name. This a char16 and should each group.
be purely alphanumeric. Do not include underscores * grolist: the list of pg_user id's that belong in the group. This
or other punctuation. is an int4[].
<LI> grosysid: the group id. This is an int4.
This should be unique for each group. 3.6) What is the exact difference between binary cursors and normal cursors?
<LI> grolist: the list of pg_user id's that belong in the group.
This is an int4[]. See the declare manual page for a description.
</UL>
<P> 3.7) What is a R-tree index and what is it used for?
<H3><a name="3.6">3.6</a>) What is the exact difference between binary
cursors and normal cursors?</H3> An r-tree index is used for indexing spatial data. A hash index can't
<P> handle range searches. A B-tree index only handles range searches in a
See the <I>declare</I> manual page for a description. single dimension. R-tree's can handle multi-dimensional data. For
<P> example, if a R-tree index can be built on an attribute of type
<H3><a name="3.7">3.7</a>) What is a R-tree index and what is it used for? 'point', the system can more efficient answer queries like select all
</H3> points within a bounding rectangle.
<P>
An r-tree index is used for indexing spatial data. A hash index can't The canonical paper that describes the original R-Tree design is:
handle range searches. A B-tree index only handles range searches in a
single dimension. R-tree's can handle multi-dimensional data. For Guttman, A. "R-Trees: A Dynamic Index Structure for Spatial
example, if a R-tree index can be built on an attribute of type 'point', Searching." Proc of the 1984 ACM SIGMOD Int'l Conf on Mgmt of Data,
the system can more efficient answer queries like select all points 45-57.
within a bounding rectangle.
<P> You can also find this paper in Stonebraker's "Readings in Database
The canonical paper that describes the original R-Tree design is: Systems"
<P>
Guttman, A. "R-Trees: A Dynamic Index Structure for Spatial Searching." Builtin R-Trees can handle polygons and boxes. In theory, R-trees can
Proc of the 1984 ACM SIGMOD Int'l Conf on Mgmt of Data, 45-57. be extended to handle higher number of dimensions. In practice,
<P> extending R-trees require a bit of work and we don't currently have
You can also find this paper in Stonebraker's "Readings in Database any documentation on how to do it.
Systems"
<P> 3.8) What is the maximum size for a tuple?
Builtin R-Trees can handle polygons and boxes. In theory, R-trees can
be extended to handle higher number of dimensions. In practice, Tuples are limited to 8K bytes. Taking into account system attributes
extending R-trees require a bit of work and we don't currently have any and other overhead, one should stay well shy of 8,000 bytes to be on
documentation on how to do it. the safe side. To use attributes larger than 8K, try using the large
<P> objects interface.
<H3><a name="3.8">3.8</a>) What is the maximum size for a tuple?</H3>
<P> Tuples do not cross 8k boundaries so a 5k tuple will require 8k of
Tuples are limited to 8K bytes. Taking into account system attributes storage.
and other overhead, one should stay well shy of 8,000 bytes to be on the
safe side. To use attributes larger than 8K, try using the large 3.9) I defined indices but my queries don't seem to make use of them. Why?
objects interface.
<P> PostgreSQL does not automatically maintain statistics. One has to make
Tuples do not cross 8k boundaries so a 5k tuple will require 8k of an explicit 'vacuum' call to update the statistics. After statistics
storage. are updated, the optimizer has a better shot at using indices. Note
<P> that the optimizer is limited and does not use indices in some
<H3><a name="3.9">3.9</a>) I defined indices but my queries don't seem circumstances (such as OR clauses). For column-specific optimization
to make use of them. Why?</H3> statistics, use 'vacuum analyze'.
<P>
PostgreSQL does not automatically maintain statistics. One has to make If the system still does not see the index, it is probably because you
an explicit 'vacuum' call to update the statistics. After statistics have created an index on a field with the improper *_ops type. For
are updated, the optimizer has a better shot at using indices. Note example, you have created a CHAR(4) field, but have specified a
that the optimizer is limited and does not use indices in some char_ops index type_class.
circumstances (such as OR clauses). For column-specific optimization
statistics, use 'vacuum analyze'. See the create_index manual page for information on what type classes
<P> are available. It must match the field type.
If the system still does not see the index, it is probably because you
have created an index on a field with the improper *_ops type. For Postgres does not warn the user when the improper index is created.
example, you have created a CHAR(4) field, but have specified a char_ops
index type_class. Indexes not used for ORDER BY operations.
<P>
See the create_index manual page for information on what type classes 3.10) How do I do regular expression searches? case-insensitive regexp
are available. It must match the field type. searching?
<P>
Postgres does not warn the user when the improper index is created. See the pgbuiltin manual page. Search for regular expression.
<P>
Indexes not used for ORDER BY operations. 3.11) I experienced a server crash during a vacuum. How do I remove the lock
<P> file?
<H3><a name="3.10">3.10</a>) How do I do regular expression searches?
case-insensitive regexp searching?</H3> See the vacuum manual page.
<P>
See the <I>pgbuiltin</I> manual page. Search for <I>regular expression.</I> 3.12) What is the difference between the various character types?
<P>
<H3><a name="3.11">3.11</a>) I experienced a server crash during a
vacuum. How do I remove the lock file?</H3>
<P>
See the <I>vacuum</I> manual page.
<P>
<H3><a name="3.12">3.12</a>) What is the difference between the various
character types?</H3>
<PRE>
Type Internal Name Notes Type Internal Name Notes
-------------------------------------------------- --------------------------------------------------
CHAR char 1 character } CHAR char 1 character }
...@@ -723,185 +603,166 @@ CHAR(#) bpchar blank padded to the specified fixed length ...@@ -723,185 +603,166 @@ CHAR(#) bpchar blank padded to the specified fixed length
VARCHAR(#) varchar size specifies maximum length, no padding VARCHAR(#) varchar size specifies maximum length, no padding
TEXT text length limited only by maximum tuple length TEXT text length limited only by maximum tuple length
BYTEA bytea variable-length array of bytes BYTEA bytea variable-length array of bytes
</PRE>
<P> You need to use the internal name when doing internal operations.
You need to use the internal name when doing internal operations.
<P> The last four types above are "varlena" types (i.e. the first four
The last four types above are "varlena" types (i.e. the first four bytes bytes are the length, followed by the data). CHAR(#) allocates the
are the length, followed by the data). CHAR(#) allocates the maximum maximum number of bytes no matter how much data is stored in the
number of bytes no matter how much data is stored in the field. field. TEXT, VARCHAR(#), and BYTEA all have variable length on the
TEXT, VARCHAR(#), and BYTEA all have variable length on the disk, and disk, and because of this, there is a small performance penalty for
because of this, there is a small performance penalty for using them. using them. Specifically, the penalty is for access to any columns
Specifically, the penalty is for access to any columns after the first after the first column of this type.
column of this type.
<P> 3.13) In a query, how do I detect if a field is NULL?
<H3><a name="3.13">3.13</a>) In a query, how do I detect if a field is NULL?
</H3> You test the column with IS NULL and IS NOT NULL.
<P>
You test the column with IS NULL and IS NOT NULL. 3.14) How do I see how the query optimizer is evaluating my query?
<P>
<H3><a name="3.14">3.14</a>) How do I see how the query optimizer is See the explain manual page.
evaluating my query?</H3>
<P> 3.15) How do I create a serial field?
See the <I>explain</I> manual page.
<P> Postgres does not allow the user to specifiy a user column as type
<H3><a name="3.15">3.15</a>) How do I create a serial field?</H3> SERIAL. Instead, you can use each row's oid field as a unique value.
<P> However, if you need to dump and reload the database, you need to use
Postgres does not allow the user to specifiy a user column as type pgdump's -o option or COPY's WITH OIDS option to preserver the oids.
SERIAL. Instead, you can use each row's oid field as a unique value.
However, if you need to dump and reload the database, you need to use We also have a SEQUENCE function that is similar to SERIAL. See the
pgdump's -o option or COPY's WITH OIDS option to preserver the oids. create_sequence manual page.
<P>
We also have a SEQUENCE function that is similar to SERIAL. See the Another valid way of doing this is to create a function:
create_sequence manual page.
<P>
Another valid way of doing this is to create a function:
<PRE>
<CODE>
create table my_oids (f1 int4); create table my_oids (f1 int4);
insert into my_oids values (1); insert into my_oids values (1);
create function new_oid () returns int4 as create function new_oid () returns int4 as
'update my_oids set f1 = f1 + 1; select f1 from my_oids; ' 'update my_oids set f1 = f1 + 1; select f1 from my_oids; '
language 'sql'; language 'sql';
</CODE>
</PRE> then:
<P>
then:
<PRE>
<CODE>
create table my_stuff (my_key int4, value text); create table my_stuff (my_key int4, value text);
insert into my_stuff values (new_oid(), 'hello'); insert into my_stuff values (new_oid(), 'hello');
</CODE>
</PRE> However, keep in mind there is a race condition here where one server
<P> could do the update, then another one do an update, and they both
However, keep in mind there is a race condition here where one server could select the same new id. This statement should be performed
could do the update, then another one do an update, and they both could within a transaction.
select the same new id. This statement should be performed within a
transaction. Yet another way is to use general trigger function autoinc() from
<P> contrib/spi/autoinc.c.
Yet another way is to use general trigger function autoinc()
from contrib/spi/autoinc.c. 3.16) What are the pg_psort.XXX files in my database directory?
<P>
<H3><a name="3.16">3.16</a>) What are the pg_psort.XXX files in my database They are temporary sort files generated by the query executor. For
directory?</H3> example, if a sort needs to be done to satisfy an ORDER BY, some temp
<P> files are generated as a result of the sort.
They are temporary sort files generated by the query executor.
For example, if a sort needs to be done to satisfy an ORDER BY, If you have no transactions or sorts running at the time, it is safe
some temp files are generated as a result of the sort. to delete the pg_psort.XXX files.
<P>
If you have no transactions or sorts running at the time, it is safe to 3.17) Why can't I connect to my database from another machine?
delete the pg_psort.XXX files.
<P> The default configuration allows only unix domain socket connections
<H3><a name="3.17">3.17</a>) Why can't I connect to my database from from the local machine. To enable TCP/IP connections, use the
another machine?</H3> postmaster -i option You need to add a host entry to the file
<P> pgsql/data/pg_hba. See the hba_conf manual page.
The default configuration allows only unix domain socket connections
from the local machine. To enable TCP/IP connections, use the 3.18) How do I find out what indexes or operations are defined in the
postmaster -i option You need to add a host entry to the file database?
pgsql/data/pg_hba. See the <I>hba_conf</I> manual page.
<P> psql has a variety of backslash commands to show such information. Use
<H3><a name="3.18">3.18</a>) How do I find out what indexes or \? to see them.
operations are defined in the database?</H3>
<P> Also try the file pgsql/src/tutorial/syscat.source. It illustrates
psql has a variety of backslash commands to show such information. Use many of the 'select's needed to get information out of the database
\? to see them. system tables.
<P>
Also try the file pgsql/src/tutorial/syscat.source. It illustrates many of 3.19) What is the time-warp feature and how does it relate to vacuum?
the 'select's needed to get information out of the database system
tables. PostgreSQL no longer supports this feature. All support code has been
<P> removed. This was done to improve performance and reduce disk storage
<H3><a name="3.19">3.19</a>) What is the time-warp feature and how does overhead.
it relate to vacuum?</H3>
<P> 3.20) What is an oid? What is a tid?
PostgreSQL no longer supports this feature. All support code has been
removed. This was done to improve performance and reduce disk storage Oids are Postgres's answer to unique row ids or serial columns. Every
overhead. row that is created in Postgres gets a unique oid. All oids generated
<P> by initdb are less than 16384 (from backend/access/transam.h). All
<H3><a name="3.20">3.20</a>) What is an oid? What is a tid?</H3> post-initdb (user-created) oids are equal or greater that this. All
<P> these oids are unique not only within a table, or database, but unique
Oids are Postgres's answer to unique row ids or serial columns. Every within the entire postgres installation.
row that is created in Postgres gets a unique oid. All oids generated
by initdb are less than 16384 (from backend/access/transam.h). All Postgres uses oids in its internal system tables to link rows in
post-initdb (user-created) oids are equal or greater that this. All separate tables. These oids can be used to identify specific user rows
these oids are unique not only within a table, or database, but unique and used in joins. It is recommended you use column type oid to store
within the entire postgres installation. oid values. See the sql(l) manual page to see the other internal
<P> columns. You can create an index on the oid field for faster access.
Postgres uses oids in its internal system tables to link rows in
separate tables. These oids can be used to identify specific user rows Tids are used to indentify specific physical rows with block and
and used in joins. It is recommended you use column type oid to store offset values. Tids change after rows are modified or reloaded. They
oid values. See the sql(l) manual page to see the other internal are used by index entries to point to physical rows. They can not be
columns. You can create an index on the oid field for faster access. accessed through sql.
<P>
Tids are used to indentify specific physical rows with block and offset 3.21) What is the meaning of some of the terms used in Postgres?
values. Tids change after rows are modified or reloaded. They are used
by index entries to point to physical rows. They can not be accessed Some of the source code and older documentation use terms that have
through sql. more common usage. Here are some:
<P> * row, record, tuple
<H3><a name="3.21">3.21</a>) What is the meaning of some of the terms * attribute, field, column
used in Postgres?</H3> * table, class
<P> * retrieve, select
Some of the source code and older documentation use terms that have more * replace, update
common usage. Here are some: * append, insert
<UL> * oid, serial value
<LI> row, record, tuple * portal, cursor
<LI> attribute, field, column * range variable, table name, table alias
<LI> table, class
<LI> retrieve, select Please let me know if you think of any more.
<LI> replace, update
<LI> append, insert 3.22) What is Genetic Query Optimization?
<LI> oid, serial value
<LI> portal, cursor The GEQO module in PostgreSQL is intended to solve the query
<LI> range variable, table name, table alias optimization problem of joining many tables by means of a Genetic
</UL> Algorithm (GA). It allows the handling of large join queries through
<P> non-exhaustive search.
Please let me know if you think of any more.
<P> For further information see README.GEQO <utesch@aut.tu-freiberg.de>.
<H3><a name="3.22">3.22</a>) What is Genetic Query Optimization?</H3>
<P> 3.23) How do you remove a column from a table?
The GEQO module in PostgreSQL is intended to solve the query
optimization problem of joining many tables by means of a Genetic We do not support ALTER TABLE DROP COLUMN, but do this:
Algorithm (GA). It allows the handling of large join queries through
non-exhaustive search.
<P>
For further information see README.GEQO &lt;utesch@aut.tu-freiberg.de&gt;.
<P>
<H3><a name="3.23">3.23</a>) How do you remove a column from a table?</H3>
We do not support ALTER TABLE DROP COLUMN, but do this:
<PRE>
<CODE>
SELECT ... -- select all columns but the one you want to remove SELECT ... -- select all columns but the one you want to remove
INTO TABLE new_table INTO TABLE new_table
FROM old_table; FROM old_table;
DROP TABLE old_table; DROP TABLE old_table;
ALTER TABLE new_table RENAME TO old_table; ALTER TABLE new_table RENAME TO old_table;
</CODE>
</PRE> 3.24) How do SELECT only the first few rows of a query?
<P>
<H3><a name="3.24">3.24</a>) How do SELECT only the first few rows of See the fetch manual page.
a query?</H3>
<P> This only prevents all row results from being transfered to the
See the <I>fetch</I> manual page. client. The entire query must be evaluated, even if you only want just
<P> first few rows. Consider a query that has and ORDER BY. There is no
This only prevents all row results from being transfered to the client. way to return any rows until the entire query is evaluated and sorted.
The entire query must be evaluated, even if you only want just first few
rows. 3.25) Why can't I create a column named "time"?
Consider a query that has and ORDER BY. There is no way to return any
rows until the entire query is evaluated and sorted. 6.2.1 has added some new restricted keywords as we make PostgreSQL
<P> more ANSI-92 compilant. The next release will have this restriction
<H3><a name="3.25">3.25</a>) Why can't I create a column named removed. There is a patch on ftp.postgresql.org that will allow this
"time"?<BR></H3> feature now.
<P>
6.2.1 has added some new restricted keywords as we make PostgreSQL more 3.26)How much database disk space is required to store data from a typical
ANSI-92 compilant. The next release will have this restriction removed. flat file?
There is a patch on ftp.postgresql.org that will allow this feature now.
<P> Consider a file with 300,000 lines with two integers on each line. The
<H3><a name="3.26">3.26</a>)How much database disk space is required flat file is 2.4MB. The size of the PostgreSQL database file
to store data from a typical flat file?<BR></H3> containing this data can be estimated:
<P>
Consider a file with 300,000 lines with two integers on each line.
The flat file is 2.4MB. The size of the PostgreSQL database file
containing this data can be estimated:
<PRE>
40 bytes + each row header (approximate) 40 bytes + each row header (approximate)
8 bytes + two int fields @ 4 bytes each 8 bytes + two int fields @ 4 bytes each
4 bytes + pointer on page to tuple 4 bytes + pointer on page to tuple
...@@ -919,67 +780,52 @@ The data page size in PostgreSQL is 8192(8k) bytes, so: ...@@ -919,67 +780,52 @@ The data page size in PostgreSQL is 8192(8k) bytes, so:
157 rows per page 157 rows per page
1911 database pages * 8192 bytes per page = 15,654,912 or 15.5MB 1911 database pages * 8192 bytes per page = 15,654,912 or 15.5MB
<P>
Indexes do not contain as much overhead, but do contain the data that Indexes do not contain as much overhead, but do contain the data that
is being indexed, so they can be large also. is being indexed, so they can be large also.
</PRE> _________________________________________________________________
<P>
<HR> Section 4: Extending PostgreSQL
<H2> Section 4: Extending PostgreSQL
</H2> 4.1) I wrote a user-defined function and when I run it in psql, it dumps
<P> core.
<H3><a name="4.1">4.1</a>) I wrote a user-defined function and when I run
it The problem could be a number of things. Try testing your user-defined
in psql, it dumps core.</H3> function in a stand alone test program first. Also, make sure you are
<P> not sending elog NOTICES when the front-end is expecting data, such as
The problem could be a number of things. Try testing your user-defined during a type_in() or type_out() functions
function in a stand alone test program first. Also, make sure you are
not sending elog NOTICES when the front-end is expecting data, such as 4.2) I get messages of the type NOTICE:PortalHeapMemoryFree: 0x402251d0 not
during a type_in() or type_out() functions in alloc set!
<P>
<H3><a name="4.2">4.2</a>) I get messages of the type You are pfree'ing something that was not palloc'ed. When writing
NOTICE:PortalHeapMemoryFree: 0x402251d0 not in alloc set!</H3> user-defined functions, do not include the file "libpq-fe.h". Doing so
<P> will cause your palloc to be a malloc instead of a free. Then, when
You are pfree'ing something that was not palloc'ed. When writing the backend pfrees the storage, you get the notice message.
user-defined functions, do not include the file "libpq-fe.h". Doing so
will cause your palloc to be a malloc instead of a free. Then, when the 4.3) I've written some nifty new types and functions for PostgreSQL.
backend pfrees the storage, you get the notice message.
<P> Please share them with other PostgreSQL users. Send your extensions to
<H3><a name="4.3">4.3</a>) I've written some nifty new types and functions mailing list, and they will eventually end up in the contrib/
for subdirectory.
PostgreSQL.</H3>
<P> 4.4) How do I write a C function to return a tuple?
Please share them with other PostgreSQL users. Send your extensions to
mailing list, and they will eventually end up in the contrib/ This requires extreme wizardry, so extreme that the authors have not
subdirectory. ever tried it, though in principle it can be done. The short answer is
<P> ... you can't. This capability is forthcoming in the future.
<H3><a name="4.4">4.4</a>) How do I write a C function to return a tuple?< _________________________________________________________________
/H3>
<P> Section 5: Bugs
This requires extreme wizardry, so extreme that the authors have not
ever tried it, though in principle it can be done. The short answer is
... you can't. This capability is forthcoming in the future.
<P>
<HR>
<H2> Section 5: Bugs
</H2>
<P>
<H3><a name="5.1">5.1</a>) How do I make a bug report?</H3>
<P>
Check the current FAQ at <a
href="http://postgreSQL.org">http://postgreSQL.org</a>
<P>
Also check out our ftp site <a
href="ftp://ftp.postgreSQL.org/pub">ftp://ftp.postgreSQL.org/pub</a> to
see if there is a more recent PostgreSQL version.
<P>
You can also fill out the "bug-template" file and send it to:
<UL>
<LI> <a href="mailto:bugs@postgreSQL.org">bugs@postgreSQL.org</a>
</UL>
<P>
This is the address of the developers mailing list.
</BODY>
</HTML>
5.1) How do I make a bug report?
Check the current FAQ at http://postgreSQL.org
Also check out our ftp site ftp://ftp.postgreSQL.org/pub to see if
there is a more recent PostgreSQL version.
You can also fill out the "bug-template" file and send it to:
* bugs@postgreSQL.org
This is the address of the developers mailing list.
TODO list for PostgreSQL TODO list for PostgreSQL
======================== ========================
Last updated: Fri Feb 27 13:32:53 EST 1998 Last updated: Sat Feb 28 10:00:29 EST 1998
Current maintainer: Bruce Momjian (maillist@candle.pha.pa.us) Current maintainer: Bruce Momjian (maillist@candle.pha.pa.us)
The most recent version of this document can be viewed at The most recent version of this document can be viewed at
the PostgreSQL WWW site, http://www.postgreSQL.org. the PostgreSQL WWW site, http://www.postgreSQL.org.
...@@ -13,50 +13,50 @@ A dash(-) marks changes to be in the next release. ...@@ -13,50 +13,50 @@ A dash(-) marks changes to be in the next release.
Developers who have claimed items are: Developers who have claimed items are:
------------------------------------- -------------------------------------
* Bruce is Bruce Momjian<maillist@candle.pha.pa.us> * Bruce is Bruce Momjian<maillist@candle.pha.pa.us>
* Bryan is Bryan Henderson<bryanh@giraffe.netgate.net> * Bryan is Bryan Henderson<bryanh@giraffe.netgate.net>
* D'Arcy is D'Arcy J.M. Cain <darcy@druid.net> * D'Arcy is D'Arcy J.M. Cain <darcy@druid.net>
* Dan is Dan McGuirk <mcguirk@indirect.com> * Dan is Dan McGuirk <mcguirk@indirect.com>
* Daniel is Daniel Kalchev <daniel@digsys.bg> * Daniel is Daniel Kalchev <daniel@digsys.bg>
* Darren is Darren King <darrenk@insightdist.com> * Darren is Darren King <darrenk@insightdist.com>
* Edmund is Edmund Mergl <E.Mergl@bawue.de> * Edmund is Edmund Mergl <E.Mergl@bawue.de>
* Erich Stamberger <eberger@gewi.kfunigraz.ac.at> * Erich Stamberger <eberger@gewi.kfunigraz.ac.at>
* Gerhard is Gerhard Reithofer <gerhardr@tech-edv.co.at> * Gerhard is Gerhard Reithofer <gerhardr@tech-edv.co.at>
* Goran is Goran Thyni <goran@bildbasen.se> * Goran is Goran Thyni <goran@bildbasen.se>
* Henry is Henry B. Hotz <hotz@jpl.nasa.gov> * Henry is Henry B. Hotz <hotz@jpl.nasa.gov>
* Igor is Igor <igor@sba.miami.edu> * Igor is Igor <igor@sba.miami.edu>
* Jan is Jan Wieck <wieck@sapserv.debis.de> * Jan is Jan Wieck <wieck@sapserv.debis.de>
* Jun is Jun Kuwamura <juk@rccm.co.jp> * Jun is Jun Kuwamura <juk@rccm.co.jp>
* Kurt is "Kurt J. Lidl" <lidl@va.pubnix.com> * Kurt is "Kurt J. Lidl" <lidl@va.pubnix.com>
* Marc is Marc Fournier <scrappy@hub.org> * Marc is Marc Fournier <scrappy@hub.org>
* Martin is Martin S. Utesch <utesch@aut.tu-freiberg.de> * Martin is Martin S. Utesch <utesch@aut.tu-freiberg.de>
* Michael is Michael Meskes <meskes@topsystem.de> * Michael is Michael Meskes <meskes@topsystem.de>
* Oleg is Oleg Bartunov <oleg@sai.msu.su> * Oleg is Oleg Bartunov <oleg@sai.msu.su>
* Paul is Paul M. Aoki <aoki@CS.Berkeley.EDU> * Paul is Paul M. Aoki <aoki@CS.Berkeley.EDU>
* Patrick is Patrick van Kleef <pvk@pobox.com> * Patrick is Patrick van Kleef <pvk@pobox.com>
* Peter is Peter T Mount <psqlhack@maidast.demon.co.uk> * Peter is Peter T Mount <psqlhack@maidast.demon.co.uk>
* Phil is Phil Thompson <phil@river-bank.demon.co.uk> * Phil is Phil Thompson <phil@river-bank.demon.co.uk>
* Raymond is Raymond Toy <toy@rtp.ericsson.se> * Raymond is Raymond Toy <toy@rtp.ericsson.se>
* Soo-Ho Ok <shok@detc.dongeui-tc.ac.kr> * Soo-Ho Ok <shok@detc.dongeui-tc.ac.kr>
* Stefan Simkovics <ssimkovi@rainbow.studorg.tuwien.ac.at> * Stefan Simkovics <ssimkovi@rainbow.studorg.tuwien.ac.at>
* Sven is Sven Verdoolaege <skimo@breughel.ufsia.ac.be> * Sven is Sven Verdoolaege <skimo@breughel.ufsia.ac.be>
* Tatsuo is Tatsuo Ishii <t-ishii@sra.co.jp> * Tatsuo is Tatsuo Ishii <t-ishii@sra.co.jp>
* Thomas is Thomas Lockhart <tgl@mythos.jpl.nasa.gov> * Thomas is Thomas Lockhart <tgl@mythos.jpl.nasa.gov>
* Todd is Todd Brandys is <brandys@eng3.hep.uiuc.edu> * Todd is Todd Brandys is <brandys@eng3.hep.uiuc.edu>
* Vadim is "Vadim B. Mikheev" <vadim@sable.krasnoyarsk.su> * Vadim is "Vadim B. Mikheev" <vadim@sable.krasnoyarsk.su>
* Vivek is Vivek Khera <khera@kci.kciLink.com> * Vivek is Vivek Khera <khera@kci.kciLink.com>
Additional 6.3 developers include: Additional 6.3 developers include:
--------------------------------- ---------------------------------
* Billy is Billy G. Allie <Bill.Allie@mug.org> * Billy is Billy G. Allie <Bill.Allie@mug.org>
* Brook is Brook Milligan <brook@trillium.NMSU.Edu> * Brook is Brook Milligan <brook@trillium.NMSU.Edu>
* James is James Hughes <jamesh@interpath.com> * James is James Hughes <jamesh@interpath.com>
* Jeroen is Jeroen van Vianen <jeroenv@design.nl> * Jeroen is Jeroen van Vianen <jeroenv@design.nl>
* Matt is Matt Maycock <maycock@intelliquest.com> * Matt is Matt Maycock <maycock@intelliquest.com>
* Ryan is Ryan Kirkpatrick <rkirkpat@nag.cs.colorado.edu> * Ryan is Ryan Kirkpatrick <rkirkpat@nag.cs.colorado.edu>
* TomH is Tom I Helbekkmo <tih@Hamartun.Priv.NO> * TomH is Tom I Helbekkmo <tih@Hamartun.Priv.NO>
* TomS is Tom Szybist * TomS is Tom Szybist
* Travis is Travis Melhiser <melhiser@viper.co.union.nc.us> * Travis is Travis Melhiser <melhiser@viper.co.union.nc.us>
RELIABILITY RELIABILITY
----------- -----------
...@@ -64,8 +64,7 @@ RELIABILITY ...@@ -64,8 +64,7 @@ RELIABILITY
* Overhaul bufmgr/lockmgr/transaction manager * Overhaul bufmgr/lockmgr/transaction manager
* -Fix CLUSTER * -Fix CLUSTER
* Remove EXTEND? * Remove EXTEND?
* -Aggregates on VIEW always returns zero (maybe because there is no oid for vi * -Aggregates on VIEW always returns zero (maybe because there is no oid for views?)
ews?)
* CREATE VIEW requires super-user priviledge * CREATE VIEW requires super-user priviledge
* Can lo_export()/lo_import() read/write anywhere, causing a security problem? * Can lo_export()/lo_import() read/write anywhere, causing a security problem?
* Tables that start with xinv confused to be large objects * Tables that start with xinv confused to be large objects
...@@ -96,31 +95,31 @@ ENHANCEMENTS ...@@ -96,31 +95,31 @@ ENHANCEMENTS
* Allow transaction commits with rollback with no-fsync performance * Allow transaction commits with rollback with no-fsync performance
* More access control over who can create tables and access the database * More access control over who can create tables and access the database
* Add full ANSI SQL capabilities * Add full ANSI SQL capabilities
* -add subselects(Vadim) * -add subselects(Vadim)
* Implement HAVING clause * Implement HAVING clause
* -Implement EXISTS qualifier * -Implement EXISTS qualifier
* -report "Not implemented" if valid syntax is supplied * -report "Not implemented" if valid syntax is supplied
* add OUTER joins, left and right (Thomas) * add OUTER joins, left and right (Thomas)
* make VIEWs updateable where possible * make VIEWs updateable where possible
* -add UNIONS(Bruce) * -add UNIONS(Bruce)
* add INTERSECTS, SUBTRACTS * add INTERSECTS, SUBTRACTS
* add temporary tables(Bruce) * add temporary tables(Bruce)
* add sql3 recursive unions * add sql3 recursive unions
* add the concept of dataspaces * add the concept of dataspaces
* add DECIMAL, NUMERIC, DOUBLE PRECISION, BIT, BIT VARYING * add DECIMAL, NUMERIC, DOUBLE PRECISION, BIT, BIT VARYING
* NCHAR (as distinguished from ordinary varchar), * NCHAR (as distinguished from ordinary varchar),
* Allow compression of large fields or a compressed field type * Allow compression of large fields or a compressed field type
* Fix the rules system(Jan?,Soo-Ho) * Fix the rules system(Jan?,Soo-Ho)
* robust * robust
* making INSTEAD rules work * making INSTEAD rules work
* add CONSTRAINT * add CONSTRAINT
* Full set of text operations and functions * Full set of text operations and functions
* word searches, concat,max() on text, char * word searches, concat,max() on text, char
* Large objects * Large objects
* -overwriting blocks has problems(Peter) * -overwriting blocks has problems(Peter)
* -there are other problems, too.(Peter) * -there are other problems, too.(Peter)
* Fix large object mapping scheme, own reltype * Fix large object mapping scheme, own reltype
* not to stuff everything as files in a single directory * not to stuff everything as files in a single directory
* Better interface for adding to pg_group * Better interface for adding to pg_group
* Make MONEY/DECIMAL have a defined precision * Make MONEY/DECIMAL have a defined precision
* Add support for tables >2G, or test current version * Add support for tables >2G, or test current version
...@@ -128,9 +127,9 @@ ENHANCEMENTS ...@@ -128,9 +127,9 @@ ENHANCEMENTS
* Allow libpq to cancel query requests * Allow libpq to cancel query requests
* Add REGEX internationalization * Add REGEX internationalization
* -Add other language types for built-in functions * -Add other language types for built-in functions
* expand to allow tcl, perl, java * expand to allow tcl, perl, java
* generalize the function manager switch to pass * generalize the function manager switch to pass
* function sources to interpreter engines. * function sources to interpreter engines.
* -remove time-travel feature(Vadim) * -remove time-travel feature(Vadim)
* -reduce system column overhead(Vadmin) * -reduce system column overhead(Vadmin)
* -remove pg_time table(Vadim) * -remove pg_time table(Vadim)
...@@ -148,8 +147,7 @@ ENHANCEMENTS ...@@ -148,8 +147,7 @@ ENHANCEMENTS
* add UNIQUE capability to non-btree indexes * add UNIQUE capability to non-btree indexes
* make number of backends a config parameter, storage/sinvaladt.h:MaxBackendId * make number of backends a config parameter, storage/sinvaladt.h:MaxBackendId
* certain indexes will not shrink, i.e. oid indexes with many inserts * certain indexes will not shrink, i.e. oid indexes with many inserts
* make NULL's come out at the beginning or end depending on the ORDER BY direct * make NULL's come out at the beginning or end depending on the ORDER BY direction
ion
* change the library/backend interface to use network byte order * change the library/backend interface to use network byte order
* -allow unix domain sockets for local connections for performance and security * -allow unix domain sockets for local connections for performance and security
* -Add PAGER for psql's \dt, \d, \z tablename * -Add PAGER for psql's \dt, \d, \z tablename
...@@ -182,8 +180,7 @@ ion ...@@ -182,8 +180,7 @@ ion
PERFORMANCE PERFORMANCE
----------- -----------
* Use indexes in ORDER BY, min(), max()(Costin Oproiu) * Use indexes in ORDER BY, min(), max()(Costin Oproiu)
* -Allow LIKE/wildcard matches to use indexes if the wildcard character is not * -Allow LIKE/wildcard matches to use indexes if the wildcard character is not first
first
* Optimizing disjunctive queries * Optimizing disjunctive queries
* Fix bushy-plans (Martin) * Fix bushy-plans (Martin)
* Other optimizer bugs * Other optimizer bugs
...@@ -212,6 +209,59 @@ DOCUMENTATION ...@@ -212,6 +209,59 @@ DOCUMENTATION
CHANGES IN THE 6.3 RELEASE CHANGES IN THE 6.3 RELEASE
-------------------------- --------------------------
There are some general 6.3 issues that I want to mention. These are
only the big items that can not be described in one sentence.
First, we now have subselects. Now that we have them, I would like to
mention that without subselects, SQL is a very limited language.
Subselects are a major feature, and you should review your code for
places where subselects provide a better solution for your queries. I
think you will find that there are more uses for subselects than you may
think. Vadim has put us on the big SQL map with subselects, and fully
functional ones too. The only thing you can't do with subselects is to
use them in the target list.
Second, 6.3 uses unix domain sockets rather than TCP/IP by default. To
enable connections from other machines, you have to use the new
postmaster -i option, and of course edit pg_hba.conf. Also, for this
reason, the format of pg_hba.conf has changed.
Third, char() fields will now allow faster access than varchar() or
text. Specifically, the text and varchar() have a penalty for access to
any columns after the first column of this type. char() used to also
have this access penalty, but it no longer does. This may suggest that
you redesign some of your tables, especially if you have short character
columns that you have defined as varchar() or text. This and other
changes make 6.3 even faster than earlier releases.
We now have passwords definable independent of any Unix file. There are
new SQL USER commands. See the pg_hba.conf manual page for more
information. There is a new table, pg_shadow, which is used to store
user information and user passwords, and it by default only SELECT-able
by the postgres super-user. pg_user is now a view of pg_shadow, and is
SELECT-able by PUBLIC. You should keep using pg_user in your
application without changes.
User-created tables now no longer have SELECT permission to PUBLIC by
default. This was done because the ANSI standard requires it. You can
of course GRANT any permissions you want after the table is created.
System tables continue to be SELECT-able by PUBLIC.
We also have real deadlock detection code. No more sixty-second
timeouts. And the new locking code implements a FIFO better, so there
should be less resource starvation during heavy use. For performance
reasons, time travel is gone, but can be implemented using triggers (see
pgsql/contrib/spi/README). Please check out the new \d command for
types, operators, etc. Also, views have their own permissions now, not
based on the underlying tables, so permissions on them have to be set
separately. Check /pgsql/interfaces for some new ways to talk to
PostgreSQL.
This is the first release that really required an explaination for
existing users. In many ways, this was necessary because the new
release removes many limitations, and the work-arounds people were using
are no longer needed.
Bug Fixes Bug Fixes
--------- ---------
Fix binary cursors broken by MOVE implementation(Vadim) Fix binary cursors broken by MOVE implementation(Vadim)
...@@ -231,20 +281,22 @@ Fix for count(*), aggs with views and multiple tables and sum(3)(Bruce) ...@@ -231,20 +281,22 @@ Fix for count(*), aggs with views and multiple tables and sum(3)(Bruce)
Fix cluster(Bruce) Fix cluster(Bruce)
Fix for PQtrace start/stop several times(Bruce) Fix for PQtrace start/stop several times(Bruce)
Fix a variety of locking problems like newer lock waiters getting Fix a variety of locking problems like newer lock waiters getting
lock before older waiters, and having readlock people not share lock before older waiters, and having readlock people not share
locks if a writer is waiting for a lock, and waiting writers not locks if a writer is waiting for a lock, and waiting writers not
getting priority over waiting readers(Bruce) getting priority over waiting readers(Bruce)
Fix crashes in psql when executing queries from external files(James) Fix crashes in psql when executing queries from external files(James)
Fix problem with multiple order by columns, with the first one having Fix problem with multiple order by columns, with the first one having
NULL values(Jeroen) NULL values(Jeroen)
Use correct hash table support functions for float8 and int4(Thomas) Use correct hash table support functions for float8 and int4(Thomas)
Re-enable JOIN= option in CREATE OPERATOR statement (Thomas) Re-enable JOIN= option in CREATE OPERATOR statement (Thomas)
Change precedence for boolean operators to match expected behavior(Thomas) Change precedence for boolean operators to match expected behavior(Thomas)
Generate elog(ERROR) on over-large integer(Bruce) Generate elog(ERROR) on over-large integer(Bruce)
Allow multiple-argument functions in constraint clauses(Thomas) Allow multiple-argument functions in constraint clauses(Thomas)
Check boolean input literals for 'true','false','yes','no','1','0' Check boolean input literals for 'true','false','yes','no','1','0'
and throw elog(ERROR) if unrecognized(Thomas) and throw elog(ERROR) if unrecognized(Thomas)
Major large objects fix Major large objects fix
Fix for GROUP BY showing duplicates(Vadim)
Fix for index scans in MergeJion(Vadim)
Enhancements Enhancements
------------ ------------
...@@ -252,26 +304,24 @@ Subselects with EXISTS, IN, ALL, ANY keywords (Vadim, Bruce, Thomas) ...@@ -252,26 +304,24 @@ Subselects with EXISTS, IN, ALL, ANY keywords (Vadim, Bruce, Thomas)
New User Manual(Thomas, others) New User Manual(Thomas, others)
Speedup by inlining some frequently-called functions Speedup by inlining some frequently-called functions
Real deadlock detection, no more timeouts(Bruce) Real deadlock detection, no more timeouts(Bruce)
Add SQL92 "constants" CURRENT_DATE, CURRENT_TIME, CURRENT_TIMESTAMP, Add SQL92 "constants" CURRENT_DATE, CURRENT_TIME, CURRENT_TIMESTAMP,
CURRENT_USER(Thomas) CURRENT_USER(Thomas)
Modify constraint syntax to be SQL92-compliant(Thomas) Modify constraint syntax to be SQL92-compliant(Thomas)
Implement SQL92 PRIMARY KEY and UNIQUE clauses using indices(Thomas) Implement SQL92 PRIMARY KEY and UNIQUE clauses using indices(Thomas)
Recognize SQL92 syntax for FOREIGN KEY. Throw elog notice(Thomas) Recognize SQL92 syntax for FOREIGN KEY. Throw elog notice(Thomas)
Allow NOT NULL UNIQUE constraint clause (each allowed separately before)(Thomas Allow NOT NULL UNIQUE constraint clause (each allowed separately before)(Thomas)
)
Allow Postgres-style casting ("::") of non-constants(Thomas) Allow Postgres-style casting ("::") of non-constants(Thomas)
Add support for SQL3 TRUE and FALSE boolean constants(Thomas) Add support for SQL3 TRUE and FALSE boolean constants(Thomas)
Support SQL92 syntax for IS TRUE/IS FALSE/IS NOT TRUE/IS NOT FALSE(Thomas) Support SQL92 syntax for IS TRUE/IS FALSE/IS NOT TRUE/IS NOT FALSE(Thomas)
Allow shorter strings for boolean literals (e.g. "t", "tr", "tru")(Thomas) Allow shorter strings for boolean literals (e.g. "t", "tr", "tru")(Thomas)
Allow SQL92 delimited identifiers(Thomas) Allow SQL92 delimited identifiers(Thomas)
Implement SQL92 binary and hexadecimal string decoding (b'10' and x'1F')(Thomas Implement SQL92 binary and hexadecimal string decoding (b'10' and x'1F')(Thomas)
)
Support SQL92 syntax for type coercion of literal strings Support SQL92 syntax for type coercion of literal strings
(e.g. "DATETIME 'now'")(Thomas) (e.g. "DATETIME 'now'")(Thomas)
Add conversions for int2, int4, and OID types to and from text(Thomas) Add conversions for int2, int4, and OID types to and from text(Thomas)
Use shared lock when building indices(Vadim) Use shared lock when building indices(Vadim)
Free memory allocated for an user query inside transaction block after Free memory allocated for an user query inside transaction block after
this query is done, was turned off in <= 6.2.1(Vadim) this query is done, was turned off in <= 6.2.1(Vadim)
New SQL statement CREATE PROCEDURAL LANGUAGE(Jan) New SQL statement CREATE PROCEDURAL LANGUAGE(Jan)
New PostgreSQL Procedural Language (PL) backend interface(Jan) New PostgreSQL Procedural Language (PL) backend interface(Jan)
Rename pg_dump -H option to -h(Bruce) Rename pg_dump -H option to -h(Bruce)
...@@ -287,13 +337,12 @@ Augment support for SQL92 SET TIME ZONE...(Thomas) ...@@ -287,13 +337,12 @@ Augment support for SQL92 SET TIME ZONE...(Thomas)
SET/SHOW/RESET TIME ZONE uses TZ backend environment variable(Thomas) SET/SHOW/RESET TIME ZONE uses TZ backend environment variable(Thomas)
Implement SET keyword = DEFAULT and SET TIME ZONE DEFAULT(Thomas) Implement SET keyword = DEFAULT and SET TIME ZONE DEFAULT(Thomas)
Enable SET TIME ZONE using TZ environment variable(Thomas) Enable SET TIME ZONE using TZ environment variable(Thomas)
Add PGDATESTYLE environment variable to frontend and backend initialization(Tho Add PGDATESTYLE environment variable to frontend and backend initialization(Thomas)
mas)
Add PGTZ, PGCOSTHEAP, PGCOSTINDEX, PGRPLANS, PGGEQO Add PGTZ, PGCOSTHEAP, PGCOSTINDEX, PGRPLANS, PGGEQO
frontend library initialization environment variables(Thomas) frontend library initialization environment variables(Thomas)
Regression tests time zone automatically set with "setenv PGTZ PST8PDT"(Thomas) Regression tests time zone automatically set with "setenv PGTZ PST8PDT"(Thomas)
Add pg_description table for info on tables, columns, operators, types, and Add pg_description table for info on tables, columns, operators, types, and
aggregates(Bruce) aggregates(Bruce)
Increase 16 char limit on system table/index names to 32 characters(Bruce) Increase 16 char limit on system table/index names to 32 characters(Bruce)
Rename system indices(Bruce) Rename system indices(Bruce)
Add 'GERMAN' option to SET DATESTYLE(Thomas) Add 'GERMAN' option to SET DATESTYLE(Thomas)
...@@ -304,7 +353,7 @@ Implement day of year as possible input to date_part()(Thomas) ...@@ -304,7 +353,7 @@ Implement day of year as possible input to date_part()(Thomas)
Define timespan_finite() and text_timespan() functions(Thomas) Define timespan_finite() and text_timespan() functions(Thomas)
Remove archive stuff(Bruce) Remove archive stuff(Bruce)
Allow for a pg_password authentication database that is separate from Allow for a pg_password authentication database that is separate from
the system password file(Todd) the system password file(Todd)
Dump ACLs, GRANT, REVOKE permissions(Matt) Dump ACLs, GRANT, REVOKE permissions(Matt)
Define text, varchar, and bpchar string length functions(Thomas) Define text, varchar, and bpchar string length functions(Thomas)
Fix Query handling for inheritance, and cost computations(Bruce) Fix Query handling for inheritance, and cost computations(Bruce)
...@@ -336,10 +385,10 @@ Reduce system column overhead(Vadmin) ...@@ -336,10 +385,10 @@ Reduce system column overhead(Vadmin)
Remove pg_time table(Vadim) Remove pg_time table(Vadim)
Add pg_type attribute to identify types that need length (bpchar, varchar) Add pg_type attribute to identify types that need length (bpchar, varchar)
Add report of offending line when COPY command fails Add report of offending line when COPY command fails
Allow VIEW permissions to be set separately from the underlying tables. Allow VIEW permissions to be set separately from the underlying tables.
For security, use GRANT/REVOKE on views as appropriate(Jan) For security, use GRANT/REVOKE on views as appropriate(Jan)
Tables now have no default GRANT SELECT TO PUBLIC. You must Tables now have no default GRANT SELECT TO PUBLIC. You must
explicitly grant such permissions. explicitly grant such permissions.
Source Tree Changes Source Tree Changes
------------------- -------------------
...@@ -351,7 +400,7 @@ Make configure more automated(Brook) ...@@ -351,7 +400,7 @@ Make configure more automated(Brook)
Add script to check regression test results Add script to check regression test results
Break parser functions into smaller files, group together(Bruce) Break parser functions into smaller files, group together(Bruce)
Rename heap_create to heap_create_and_catalog, rename heap_creatr Rename heap_create to heap_create_and_catalog, rename heap_creatr
to heap_create()(Bruce) to heap_create()(Bruce)
Sparc/Linux patch for locking(TomS) Sparc/Linux patch for locking(TomS)
Remove PORTNAME and reorganize port-specific stuff(Marc) Remove PORTNAME and reorganize port-specific stuff(Marc)
Add optimizer README file(Bruce) Add optimizer README file(Bruce)
...@@ -360,7 +409,7 @@ Fix for NetBSD locking(Henry) ...@@ -360,7 +409,7 @@ Fix for NetBSD locking(Henry)
Fix for libptcl make(Tatsuo) Fix for libptcl make(Tatsuo)
AIX patch(Darren) AIX patch(Darren)
Change IS TRUE, IS FALSE, ... to expressions using "=" rather than Change IS TRUE, IS FALSE, ... to expressions using "=" rather than
function calls to istrue() or isfalse() to allow optimization(Thomas) function calls to istrue() or isfalse() to allow optimization(Thomas)
Various fixes NetBSD/Sparc related(TomH) Various fixes NetBSD/Sparc related(TomH)
Alpha linux locking(Travis,Ryan) Alpha linux locking(Travis,Ryan)
Change elog(WARN) to elog(ERROR)(Bruce) Change elog(WARN) to elog(ERROR)(Bruce)
...@@ -377,4 +426,3 @@ Start a Cygnus port ...@@ -377,4 +426,3 @@ Start a Cygnus port
Add string functions to regression suite(Thomas) Add string functions to regression suite(Thomas)
Expand a few function names formerly truncated to 16 characters(Thomas) Expand a few function names formerly truncated to 16 characters(Thomas)
Remove un-needed malloc() calls and replace with palloc()(Bruce) Remove un-needed malloc() calls and replace with palloc()(Bruce)
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