Commit 39cefa66 authored by Bruce Momjian's avatar Bruce Momjian

Updates for 6.1.1.

parent 69e5d638
PostgreSQL 6.1.1 Sun Jul 13 15:11:47 EDT 1997
-------------------------------------------------------------
This release does not require a dump/restore. Rerun configure. Compile
the new release. Recompile all your custom applications so they use the
libpq library in this new release. Stop the postmaster process, install
the new release, and restart the postmaster.
Changes in this release
-----------------------
fix for SET with options (Thomas)
fix month boundary arithmetic(Thomas)
fix timezone daylight handling for some ports(Thomas)
allow pg_dump/pg_dumpall to preserve ownership of all tables/objects(Bruce)
new psql \connect option allows changing usernames without chaning databases
fix for datetime arithmetic over month boundaries(Thomas)
fix for initdb --debug option(Tatsuo)
lextest cleanup(Bruce)
hash fixes(Vadim)
psql's \d now case-insensitive(Bruce)
psql's backslash commands can now have trailing semicolon(Bruce)
fix memory leak in psql when using \g(Bruce)
major fix for endian handling of communication to server(Thomas, Tatsuo)
improvements in datetime and timespan routines(Thomas)
timestamp overhauled to use standard functions(Thomas)
Fix for Solaris assembler and include files(Yoshihiko Ichikawa)
allow underscores in usernames(Bruce)
pg_dumpall now returns proper status, portability fix(Bruce)
PostgreSQL 6.1 Sun Jun 8 14:41:13 EDT 1997 PostgreSQL 6.1 Sun Jun 8 14:41:13 EDT 1997
------------------------------------------------------------- -------------------------------------------------------------
......
...@@ -2,7 +2,7 @@ POSTGRESQL INSTALLATION INSTRUCTIONS ...@@ -2,7 +2,7 @@ POSTGRESQL INSTALLATION INSTRUCTIONS
Copyright (c) 1997 Regents of the University of California Copyright (c) 1997 Regents of the University of California
This is file /usr/src/pgsql/INSTALL. It contains notes on how to install This is file /usr/src/pgsql/INSTALL. It contains notes on how to install
PostgreSQL v6.1. Up to date information on PostgreSQL may be found at PostgreSQL v6.1.1. Up to date information on PostgreSQL may be found at
http://www.postgresql.org. http://www.postgresql.org.
PostgreSQL is an RDBMS database server. It is not completely ANSI SQL PostgreSQL is an RDBMS database server. It is not completely ANSI SQL
...@@ -40,10 +40,10 @@ REQUIREMENTS TO RUN POSTGRESQL ...@@ -40,10 +40,10 @@ REQUIREMENTS TO RUN POSTGRESQL
PostgreSQL has been tested on the following platforms: PostgreSQL has been tested on the following platforms:
aix IBM on AIX 3.2.5 aix IBM on AIX 3.2.5 or 4.x
alpha DEC Alpha AXP on OSF/1 2.0 alpha DEC Alpha AXP on OSF/1 2.0
BSD44_derived OSs derived from 4.4-lite BSD (NetBSD, FreeBSD) BSD44_derived OSs derived from 4.4-lite BSD (NetBSD, FreeBSD)
bsdi BSD/OS 2.0, 2.01, 2.1 bsdi BSD/OS 2.0, 2.01, 2.1, 3.0
dgux DG/UX 5.4R3.10 dgux DG/UX 5.4R3.10
hpux HP PA-RISC on HP-UX 9.0 hpux HP PA-RISC on HP-UX 9.0
i386_solaris i386 Solaris i386_solaris i386 Solaris
...@@ -67,8 +67,17 @@ You should have at least 8 MB of memory and at least 45 MB of disk space ...@@ -67,8 +67,17 @@ You should have at least 8 MB of memory and at least 45 MB of disk space
to hold the source, binaries, and user databases. After installation to hold the source, binaries, and user databases. After installation
you may reduce this to about 3 Mbytes plus space for user databases. you may reduce this to about 3 Mbytes plus space for user databases.
To upgrade from PostgreSQL v6.1 to v6.1.1 do the following:
To upgrade to PostgreSQL v6.1 do the following: -----------------------------------------------------------
1) Run configure on the new release
2) Compile the new release
3) Recompile your custom applications to use the new libpq library
4) Stop the postmaster
5) Install the new release
6) Restart the postmaster
To those doing a fresh install or upgrading to PostgreSQL v6.1.1
from 6.0 or 1.* release, do the following:
---------------------------------------------- ----------------------------------------------
1) Read any last minute information and platform specific porting 1) Read any last minute information and platform specific porting
...@@ -109,7 +118,7 @@ To upgrade to PostgreSQL v6.1 do the following: ...@@ -109,7 +118,7 @@ To upgrade to PostgreSQL v6.1 do the following:
To check for disk space, use command "df -k". To check for disk space, use command "df -k".
4) Ftp file ftp://ftp.postgresql.org/pub/postgresql-v6.1.tar.gz from the 4) Ftp file ftp://ftp.postgresql.org/pub/postgresql-v6.1.1.tar.gz from the
internet. Store it in your home directory. internet. Store it in your home directory.
5) Some platforms use flex. If your system uses flex then make sure 5) Some platforms use flex. If your system uses flex then make sure
...@@ -151,7 +160,7 @@ To upgrade to PostgreSQL v6.1 do the following: ...@@ -151,7 +160,7 @@ To upgrade to PostgreSQL v6.1 do the following:
postgres super user. Type (with the gunzip line and the following postgres super user. Type (with the gunzip line and the following
line typed as one line): line typed as one line):
cd cd
gunzip -c postgresql-v6.1.tar.gz | gunzip -c postgresql-v6.1.1.tar.gz |
tar xvf - src/bin/pg_dump/pg_dumpall tar xvf - src/bin/pg_dump/pg_dumpall
chmod a+x src/bin/pg_dump/pg_dumpall chmod a+x src/bin/pg_dump/pg_dumpall
src/bin/pg_dump/pg_dumpall > db.out src/bin/pg_dump/pg_dumpall > db.out
...@@ -216,7 +225,7 @@ To upgrade to PostgreSQL v6.1 do the following: ...@@ -216,7 +225,7 @@ To upgrade to PostgreSQL v6.1 do the following:
10) Unzip and untar the new source file. Type 10) Unzip and untar the new source file. Type
cd /usr/src/pgsql cd /usr/src/pgsql
gunzip -c ~/postgresql-v6.1.tar.gz | tar xvf - gunzip -c ~/postgresql-v6.1.1.tar.gz | tar xvf -
11) Configure the source code for your system. It is this step at which 11) Configure the source code for your system. It is this step at which
you can specify your actual source path and installation paths for you can specify your actual source path and installation paths for
...@@ -408,10 +417,10 @@ To upgrade to PostgreSQL v6.1 do the following: ...@@ -408,10 +417,10 @@ To upgrade to PostgreSQL v6.1 do the following:
Here is an example from a i686/Linux-ELF platform (this is the platform Here is an example from a i686/Linux-ELF platform (this is the platform
on which most of the regression tests were generated). No tests failed on which most of the regression tests were generated). No tests failed
since this is the v6.1 regression reference platform. since this is the v6.1.1 regression reference platform.
Here is an example from the SPARC/Linux-ELF platform. Using the Here is an example from the SPARC/Linux-ELF platform. Using the
970525 beta version of PostgreSQL v6.1 the following tests "failed". 970525 beta version of PostgreSQL v6.1.1 the following tests "failed".
float8 and geometry "failed" due to minor precision differences in float8 and geometry "failed" due to minor precision differences in
floating point numbers. select_views produces massively different output, floating point numbers. select_views produces massively different output,
but the differences are due to minor floating point differences. but the differences are due to minor floating point differences.
...@@ -542,7 +551,7 @@ To upgrade to PostgreSQL v6.1 do the following: ...@@ -542,7 +551,7 @@ To upgrade to PostgreSQL v6.1 do the following:
rm -rf /usr/local/pgsql_6_0 rm -rf /usr/local/pgsql_6_0
# Also delete old database directory tree if it is not in # Also delete old database directory tree if it is not in
# /usr/local/pgsql_6_0/data # /usr/local/pgsql_6_0/data
rm ~/postgresql-v6.1.tar.gz rm ~/postgresql-v6.1.1.tar.gz
26) You will probably want to print out the documentation. Here is how 26) You will probably want to print out the documentation. Here is how
you might do it if you have Ghostscript on your system and are you might do it if you have Ghostscript on your system and are
...@@ -569,7 +578,7 @@ To upgrade to PostgreSQL v6.1 do the following: ...@@ -569,7 +578,7 @@ To upgrade to PostgreSQL v6.1 do the following:
supported platforms. We therefore ask you to let us know if you did supported platforms. We therefore ask you to let us know if you did
or did not get PostgreSQL to work on you system. Please send a or did not get PostgreSQL to work on you system. Please send a
mail message to pgsql-ports@postgresql.org telling us the following: mail message to pgsql-ports@postgresql.org telling us the following:
- The version of PostgreSQL (v6.1, v6.2 beta 970703, etc.). - The version of PostgreSQL (v6.1, 6.1.1, beta 970703, etc.).
- Your operating system (i.e. RedHat v4.0 Linux v2.0.26). - Your operating system (i.e. RedHat v4.0 Linux v2.0.26).
- Your hardware (SPARC, i486, etc.). - Your hardware (SPARC, i486, etc.).
- Did you compile, install and run the regression tests cleanly? - Did you compile, install and run the regression tests cleanly?
......
<HTML>
<HEAD> Frequently Asked Questions (FAQ) for PostgreSQL
<TITLE>PostgreSQL FAQ</title>
</HEAD> Last updated: Sun Jul 13 15:26:53 EDT 1997
<BODY BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#FF0000" VLINK="#A00000" ALINK="#0000FF"> Version: 6.1.1
<H1>
Frequently Asked Questions (FAQ) for PostgreSQL Current maintainer: Bruce Momjian (maillist@candle.pha.pa.us)
</H1>
<P> The most recent version of this document can be viewed at the
Last updated: Wed Jun 11 10:44:40 EDT 1997 postgreSQL Web site, http://postgreSQL.org.
<BR>
Version: 6.1 Linux-specific questions are answered in
<P> http://postgreSQL.org/docs/FAQ-Linux.phtml.
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.phtml.
The most recent version of this document can be viewed at
the postgreSQL Web site, <a Changes in this version (* = modified, + = new):
href="http://postgreSQL.org">http://postgreSQL.org</a>. * 3.42) What is Genetic Query Optimization?
<P> * 3.43) I am running Solaris and my dates display wrong. Why?
Linux-specific questions are answered in
<a href="http://postgreSQL.org/docs/FAQ-Linux.phtml">http://postgreSQL.org/docs/FAQ-Linux.phtml</a>. _________________________________________________________________
<P>
Irix-specific questions are answered in Questions answered:
<a href="http://postgreSQL.org/docs/FAQ-Irix.phtml">http://postgreSQL.org/docs/FAQ-Irix.phtml</a>.
<P> 1) General questions
Changes in this version (* = modified, + = new):
<UL> 1.1) What is PostgreSQL?
<LI>3.42) What is Genetic Query Optimization?<BR> 1.2) What does PostgreSQL run on?
<LI>3.43) I am running Solaris and my dates display wrong. Why?<BR> 1.3) Where can I get PostgreSQL?
</UL> 1.4) What's the copyright on PostgreSQL?
<HR> 1.5) Support for PostgreSQL
<P> 1.6) Latest release of PostgreSQL
<H2>Questions answered:</H2> 1.7) Is there a commercial version of PostgreSQL?
<H3> 1) General questions</H3> 1.9) What version of SQL does PostgreSQL use?
<a href="#1.1">1.1</a>) What is PostgreSQL?<BR> 1.10) Does PostgreSQL work with databases from earlier versions of
<a href="#1.2">1.2</a>) What does PostgreSQL run on?<BR> postgres?
<a href="#1.3">1.3</a>) Where can I get PostgreSQL?<BR> 1.11) How many people use PostgreSQL?
<a href="#1.4">1.4</a>) What's the copyright on PostgreSQL?<BR>
<a href="#1.5">1.5</a>) Support for PostgreSQL<BR> 2) Installation questions
<a href="#1.6">1.6</a>) Latest release of PostgreSQL<BR>
<a href="#1.7">1.7</a>) Is there a commercial version of PostgreSQL?<BR> 2.1) initdb doesn't run
<a href="#1.9">1.9</a>) What version of SQL does PostgreSQL use?<BR> 2.2) when I start up the postmaster, I get "FindBackend: could not
<a href="#1.10">1.10</a>) Does PostgreSQL work with databases from find a backend to execute..." "postmaster: could not find backend to
earlier versions of postgres?<BR> execute..."
<a href="#1.11">1.11</a>) How many people use PostgreSQL?<BR> 2.3) The system seems to be confused about commas, decimal points, and
<H3> 2) Installation questions</H3> date formats.
<a href="#2.1">2.1</a>) initdb doesn't run<BR> 2.4) How do I install PostgreSQL somewhere other than
<a href="#2.2">2.2</a>) when I start up the postmaster, I get /usr/local/pgsql?
"FindBackend: could not find a backend to execute..." 2.5) When I run postmaster, I get a Bad System Call core dumped
"postmaster: could not find backend to execute..."<BR> message.
<a href="#2.3">2.3</a>) The system seems to be confused about commas, 2.6) When I try to start the postmaster, I get IpcMemoryCreate errors.
decimal points, and date formats.<BR> 2.7) I have changed a source file, but a recompile does not see the
<a href="#2.4">2.4</a>) How do I install PostgreSQL somewhere other than change?
/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) How do I specify a KEY or other constraints on a column?
IpcMemoryCreate errors.<BR> 3.2) Does PostgreSQL support nested subqueries?
<a href="#2.7">2.7</a>) I have changed a source file, but a 3.3) How do I define a unique indices?
recompile does not see the change?<BR> 3.4) I've having a lot of problems using rules.
<H3> 3) Operational questions</H3> 3.5) I can't seem to write into the middle of large objects reliably.
<a href="#3.1">3.1</a>) How do I specify a KEY or other constraints on a 3.6) Does PostgreSQL have a graphical user interface? A report
column?<BR> generator? A embedded query language interface?
<a href="#3.2">3.2</a>) Does PostgreSQL support nested subqueries?<BR> 3.7) How can I write client applications to PostgreSQL?
<a href="#3.3">3.3</a>) How do I define a unique indices?<BR> 3.8) How do I prevent other hosts from accessing my PostgreSQL
<a href="#3.4">3.4</a>) I've having a lot of problems using rules.<BR> 3.9) How do I set up a pg_group?
<a href="#3.5">3.5</a>) I can't seem to write into the middle of large 3.10) What is the exact difference between binary cursors and normal
objects reliably.<BR> cursors?
<a href="#3.6">3.6</a>) Does PostgreSQL have a graphical user interface? 3.11) Why doesn't the != operator work?
A report generator? A embedded query language interface?<BR> 3.12) What is a R-tree index and what is it used for?
<a href="#3.7">3.7</a>) How can I write client applications to 3.13) What is the maximum size for a tuple?
PostgreSQL?<BR> 3.14) I defined indices but my queries don't seem to make use of them.
<a href="#3.8">3.8</a>) How do I prevent other hosts from accessing my Why?
PostgreSQL<BR> 3.15) Are there ODBC drivers for PostgreSQL?
<a href="#3.9">3.9</a>) How do I set up a pg_group?<BR> 3.16) How do I use postgres for multi-dimensional indexing (> 2
<a href="#3.10">3.10</a>) What is the exact difference between dimensions)?
binary cursors and normal cursors?<BR> 3.17) How do I do regular expression searches? case-insensitive regexp
<a href="#3.11">3.11</a>) Why doesn't the != operator work?<BR> searching?
<a href="#3.12">3.12</a>) What is a R-tree index and what is it 3.18) I can't access the database as the 'root' user.
used for?<BR> 3.19) I experienced a server crash during a vacuum. How do I remove
<a href="#3.13">3.13</a>) What is the maximum size for a the lock file?
tuple?<BR> 3.20) What is the difference between the various character types?
<a href="#3.14">3.14</a>) I defined indices but my queries don't 3.21) In a query, how do I detect if a field is NULL?
seem to make use of them. Why?<BR> 3.22) How do I see how the query optimizer is evaluating my query?
<a href="#3.15">3.15</a>) Are there ODBC drivers for 3.23) How do I create a serial field?
PostgreSQL?<BR> 3.24) How do I create a multi-column index?
<a href="#3.16">3.16</a>) How do I use postgres for 3.25) What are the temp_XXX files in my database directory?
multi-dimensional indexing (&gt; 2 dimensions)?<BR> 3.26) Why are my table files not getting any smaller after a delete?
<a href="#3.17">3.17</a>) How do I do regular expression searches? 3.27) Why can't I connect to my database from another machine?
case-insensitive regexp searching?<BR> 3.28) I get the error 'default index class unsupported' when creating
<a href="#3.18">3.18</a>) I can't access the database as the an index. How do I do it?
'root' user.<BR> 3.29) Why does creating an index crash the backend server?
<a href="#3.19">3.19</a>) I experienced a server crash during a 3.30) How do I find out what indexes or operations are defined in the
vacuum. How do I remove the lock file?<BR> database?
<a href="#3.20">3.20</a>) What is the difference between the 3.31) Why do statements require an extra character at the end? Why
various character types?<BR> does 'createuser' return 'unexpected last match in input()'? Why does
<a href="#3.21">3.21</a>) In a query, how do I detect if a field pg_dump fail?
is NULL?<BR> 3.32) All my servers crash under concurrent table access. Why?
<a href="#3.22">3.22</a>) How do I see how the query optimizer is 3.33) What tools are available for hooking postgres to Web pages?
evaluating my query?<BR> 3.34) What is the time-warp feature and how does it relate to vacuum?
<a href="#3.23">3.23</a>) How do I create a serial field?<BR> 3.35) How do I tune the database engine for better performance?
<a href="#3.24">3.24</a>) How do I create a multi-column 3.36) What debugging features are available in PostgreSQL?
index?<BR> 3.37) What is an oid? What is a tid?
<a href="#3.25">3.25</a>) What are the temp_XXX files in my 3.38) What is the meaning of some of the terms used in Postgres?
database directory?<BR> 3.39) What is Genetic Query Optimization?
<a href="#3.26">3.26</a>) Why are my table files not getting any 3.40) I am running Solaris and my dates display wrong. Why? 3.41) How
smaller after a delete?<BR> do I enable more than 32 concurrent backends?
<a href="#3.27">3.27</a>) Why can't I connect to my database from
another machine?<BR> 4) Questions about extending PostgreSQL
<a href="#3.28">3.28</a>) I get the error 'default index class
unsupported' when creating an index. How do I do it?<BR> 4.1) I wrote a user-defined function and when I run it in psql, it
<a href="#3.29">3.29</a>) Why does creating an index crash the dumps core.
backend server?<BR> 4.2) I get messages of the type NOTICE:PortalHeapMemoryFree:
<a href="#3.30">3.30</a>) How do I find out what indexes or 0x402251d0
operations are defined in the database?<BR> 4.3) I've written some nifty new types and functions for PostgreSQL.
<a href="#3.31">3.31</a>) Why do statements require an extra character at 4.4) How do I write a C function to return a tuple?
the end? Why does 'createuser' return 'unexpected last match in
input()'? Why does pg_dump fail?<BR> 5) Bugs
<a href="#3.32">3.32</a>) All my servers crash under concurrent
table access. Why?<BR> 5.1) How do I make a bug report?
<a href="#3.33">3.33</a>) What tools are available for hooking _________________________________________________________________
postgres to Web pages?<BR>
<a href="#3.34">3.34</a>) What is the time-warp feature and how Section 1: General Questions
does it relate to vacuum?<BR>
<a href="#3.35">3.35</a>) How do I tune the database engine for 1.1) What is PostgreSQL?
better performance?<BR>
<a href="#3.36">3.36</a>) What debugging features are available in PostgreSQL is an enhancement of the POSTGRES database management
PostgreSQL?<BR> system, a next-generation DBMS research prototype. While PostgreSQL
<a href="#3.37">3.37</a>) What is an oid? What is a tid?<BR> retains the powerful data model and rich data types of POSTGRES, it
<a href="#3.38">3.38</a>) What is the meaning of some of the terms replaces the PostQuel query language with an extended subset of SQL.
used in Postgres?<BR> PostgreSQL is free and the complete source is available.
<a href="#3.39">3.39</a>) What is Genetic Query Optimization?<BR>
<a href="#3.40">3.40</a>) I am running Solaris and my dates PostgreSQL development is being performed by a team of Internet
display wrong. Why? developers who all subscribe to the PostgreSQL development mailing
<a href="#3.41">3.41</a>) How do I enable more than 32 concurrent list. The current coordinator is Marc G. Fournier
backends? (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
functionality was added in 1995, its name was changed to Postgres95.
<HR> <H2> Section 1: General Questions</H2> <H3><a The name was changed at the end of 1996 to PostgreSQL.
name="1.1">1.1</a>) What is PostgreSQL?</H3>
1.2) What does PostgreSQL run on?
<P>
PostgreSQL is an enhancement of the POSTGRES database management system, The authors have compiled and tested PostgreSQL on the following
a next-generation DBMS research prototype. While PostgreSQL retains the platforms(some of these compiles require gcc 2.7.0):
powerful data model and rich data types of POSTGRES, it replaces the * aix - IBM on AIX 3.2.5 or 4.x
PostQuel query language with an extended subset of SQL. PostgreSQL is * alpha - DEC Alpha AXP on OSF/1 2.0
free and the complete source is available. * BSD44_derived - OSs derived from 4.4-lite BSD (NetBSD, FreeBSD)
<P> * bsdi - BSD/OS 2.0, 2.01, 2.1, 3.0
PostgreSQL development is being performed by a team of Internet * dgux - DG/UX 5.4R3.10
developers who all subscribe to the PostgreSQL development mailing list. * hpux - HP PA-RISC on HP-UX 9.0
The current coordinator is Marc G. Fournier (<a * i386_solaris - i386 Solaris
href="mailto:scrappy@postgreSQL.org">scrappy@postgreSQL.org</a>). (See * irix5 - SGI MIPS on IRIX 5.3
below on how to join). This team is now responsible for all current and * linux - Intel x86 on Linux 1.2 and Linux ELF (For non-ELF Linux,
future development of PostgreSQL. see LINUX_ELF below).
<P> * sparc_solaris - SUN SPARC on Solaris 2.4
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
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
<LI> alpha - DEC Alpha AXP on OSF/1 2.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.4R3.10
<LI> hpux - HP PA-RISC on HP-UX 9.0 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 1.2 and Linux ELF
(For non-ELF Linux, see LINUX_ELF below). Permission to use, copy, modify, and distribute this software and its
<LI> sparc_solaris - SUN SPARC on Solaris 2.4 documentation for any purpose, without fee, and without a written
<LI> sunos4 - SUN SPARC on SunOS 4.1.3 agreement is hereby granted, provided that the above copyright notice
<LI> svr4 - Intel x86 on Intel SVR4 and this paragraph and the following two paragraphs appear in all
<LI> ultrix4 - DEC MIPS on Ultrix 4.4 copies.
</UL>
The following platforms have known problems/bugs: IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY
<UL> FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES,
<LI> nextstep - Motorola MC68K or Intel x86 on NeXTSTEP 3.2 INCLUDING LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND
</UL> ITS DOCUMENTATION, EVEN IF THE UNIVERSITY OF CALIFORNIA HAS BEEN
<P> ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
<H3><a name="1.3">1.3</a>) Where can I get PostgreSQL?</H3>
<P> The primary anonymous ftp site for PostgreSQL is: THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES,
<UL> INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
<LI> <a MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE
href="ftp://ftp.postgreSQL.org/pub">ftp://ftp.postgreSQL.org/pub</a> PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE UNIVERSITY OF
</UL> CALIFORNIA HAS NO OBLIGATIONS TO PROVIDE MAINTENANCE, SUPPORT,
<P> A mirror site exists at: UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
<UL>
<LI> <a 1.5) Support for PostgreSQL
href="ftp://postgres95.vnet.net/pub/postgres95">ftp://postgres95.vnet.net/pub/postgres95</a>
<LI> <a There is no official support for PostgreSQL from the original
href="ftp://ftp.luga.or.at/pub/postgres95">ftp://ftp.luga.or.at/pub/postgres95</a> maintainers or from University of California, Berkeley. It is
<LI> <a maintained through volunteer effort only.
href="ftp://cal011111.student.utwente.nl/pub/postgres95">ftp://cal011111.student.utwente.nl/pub/postgres95</a>
<LI> <a The main mailing list is: questions@postgreSQL.org. It is available
href="ftp://ftp.uni-trier.de/pub/database/rdbms/postgres/postgres95">ftp://ftp.uni-trier.de/pub/database/rdbms/postgres/postgres95</a> for discussion o f matters pertaining to PostgreSQL, including but not
<LI> <a limited to bug reports and fixes. For info on how to subscribe, send a
href="ftp://rocker.sch.bme.hu">ftp://rocker.sch.bme.hu</a> mail with the lines in the body (not the subject line)
</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</a>. email to: questions-digest-request@postgreSQL.org with a BODY of:
<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.1.1, which will be
<P> released in July, 1997. For information about what is new in 6.1.1,
<H3><a name="1.6">1.6</a>) Latest release of PostgreSQL</H3> see our TODO list on our WWW page.
<P>
The latest release of PostgreSQL is version 6.0, which was released on We expect a 7.0 release in several months that will remove time-travel
January 31, 1997. 6.1 is scheduled for release soon. For information and reduce by 50% the size of on-disk system columns maintained for
about what is new in 6.1, see our TODO list on our WWW page. each row in a table. This release will also require a dump and
<P> restore.
We expect a 7.0 release in several months that will remove time-travel
and reduce by 50% the size of on-disk system columns maintained for each 1.7) Is there a commercial version of PostgreSQL?
row in a table. This release will also require a dump and restore.
<P> Illustra Information Technology (a wholly owned subsidiary of Informix
<H3><a name="1.7">1.7</a>) Is there a commercial version of PostgreSQL?</H3> Software, Inc.) sells an object-relational DBMS called Illustra that
<P> was originally based on postgres. Illustra has cosmetic similarities
Illustra Information Technology (a wholly owned subsidiary of Informix to PostgreSQL but has more features, is more robust, performs better,
Software, Inc.) sells an object-relational DBMS called Illustra that was and offers real documentation and support. On the flip side, it costs
originally based on postgres. Illustra has cosmetic similarities to money. For more information, contact sales@illustra.com
PostgreSQL but has more features, is more robust, performs better, and
offers real documentation and support. On the flip side, it costs 1.8) What documentation is available for PostgreSQL?
money. For more information, contact <a
href="mailto:sales@illustra.com">sales@illustra.com</a> A user manual, manual pages, and some small test examples are included
<P> in the distribution. The sql and built-in manual pages are
<H3><a name="1.8">1.8</a>) What documentation is available for PostgreSQL?</H3> particularly important.
<P>
A user manual, manual pages, and some small test examples are included The www page contains pointers to an implementation guide and five
in the distribution. The sql and built-in manual pages are particularly papers written about postgres design concepts and features.
important.
<P> 1.9) What version of SQL does PostgreSQL use?
The www page contains pointers to an implementation guide and five
papers written about postgres design concepts and features. PostgreSQL supports a subset of SQL-92. It has most of the important
<P> constructs but lacks some of the functionality. The most visible
<H3><a name="1.9">1.9</a>) What version of SQL does PostgreSQL use?</H3> differences are:
<P> * no support for nested subqueries
PostgreSQL supports a subset of SQL-92. It has most of the important * no HAVING clause under a GROUP BY
constructs but lacks some of the functionality. The most visible
differences are: On the other hand, you get to create user-defined types, functions,
<UL> inheritance etc. If you're willing to help with PostgreSQL coding,
<LI> no support for nested subqueries eventually we can also add the missing features listed above.
<LI> no HAVING clause under a GROUP BY
</UL> 1.10) Does PostgreSQL work with databases from earlier versions of postgres?
<P>
On the other hand, you get to create user-defined types, functions, PostgreSQL v1.09 is compatible with databases created with v1.01.
inheritance etc. If you're willing to help with PostgreSQL coding, Those upgrading from 1.0 should read the directions in the
eventually we can also add the missing features listed above. MIGRATION_1.0_TO_1.02 directory.
<P>
<H3><a name="1.10">1.10</a>) Does PostgreSQL work with databases from Upgrading to 6.0 requires a dump and restore from previous releases.
earlier versions of postgres?</H3>
<P> Upgrading to 6.1 requires a dump and restore from previous releases.
PostgreSQL v1.09 is compatible with databases created with v1.01. Those
upgrading from 1.0 should read the directions in the Upgrading from 6.1 to 6.1.1 requires a compile of the new release,
MIGRATION_1.0_TO_1.02 directory. recompile of all your custom applications to use the new libpq, and
<P> then an install while the postmaster is temporarily stopped.
Upgrading to 6.0 requires a dump and restore from previous releases.
<P> Those ugrading from versions earlier than 1.09 must upgrade to 1.09
Upgrading to 6.1 requires a dump and restore from previous releases. first without a dump/reload, then dump the data from 1.09, and then
<P> load it into 6.1.1.
Those ugrading from versions earlier than 1.09 must upgrade to 1.09
first without a dump/reload, then dump the data from 1.09, and then load 1.11) How many people use PostgreSQL?
it into 6.0 or 6.1.
<P> Since we don't have any licensing or registration scheme, it's
<H3><a name="1.11">1.11</a>) How many people use PostgreSQL?</H3> impossible to tell. We do know hundreds copies of PostgreSQL v1.* have
<P> been downloaded, and that there many hundreds of subscribers to the
Since we don't have any licensing or registration scheme, it's mailing lists.
impossible to tell. We do know hundreds copies of PostgreSQL v1.* have
been downloaded, and that there many hundreds of subscribers to the _________________________________________________________________
mailing lists.
<P> Section 2: Installation Questions
<HR>
<H2> Section 2: Installation Questions 2.1) initdb doesn't run
</H2>
<P> * check to see that you have the proper paths set
<H3><a name="2.1">2.1</a>) initdb doesn't run</H3> * check that the 'postgres' user owns all the right files
<P> * 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> check to see that you have the proper paths set reason
<LI> check that the 'postgres' user owns all the right files
<LI> ensure that there are files in $PGDATA/files, and that they 2.2) when I start up the postmaster, I get "FindBackend: could not find a
are non-empty. If they aren't, then "gmake install" failed for backend to execute..." "postmaster: could not find backend to execute..."
some reason
</UL> You probably do not have the right path set up. The 'postgres'
<P> executable needs to be in your path.
<H3><a name="2.2">2.2</a>) when I start up the postmaster, I get
"FindBackend: could not find a backend to execute..." 2.3) The system seems to be confused about commas, decimal points, and date
"postmaster: could not find backend to execute..."</H3> formats.
<P>
You probably do not have the right path set up. The 'postgres' Check your locale configuration. PostgreSQL uses the locale settings
executable needs to be in your path. of the user that ran the postmaster process. Set those accordingly for
<P> your operating environment.
<H3><a name="2.3">2.3</a>) The system seems to be confused about commas,
decimal points, and date formats.</H3> 2.4) How do I install PostgreSQL somewhere other than /usr/local/pgsql?
<P>
Check your locale configuration. PostgreSQL uses the locale settings of You need to edit Makefile.global and change POSTGRESDIR accordingly,
the user that ran the postmaster process. Set those accordingly for or create a Makefile.custom and define POSTGRESDIR there.
your operating environment.
<P> 2.5) When I run postmaster, I get a Bad System Call core dumped message.
<H3><a name="2.4">2.4</a>) How do I install PostgreSQL somewhere other than
/usr/local/pgsql?</H3> It could be a variety of problems, but first check to see that you
<P> have system V extensions installed on your kernel. PostgreSQL requires
You need to edit Makefile.global and change POSTGRESDIR accordingly, or kernel support for shared memory.
create a Makefile.custom and define POSTGRESDIR there.
<P> 2.6) When I try to start the postmaster, I get IpcMemoryCreate errors.
<H3><a name="2.5">2.5</a>) When I run postmaster, I get a Bad System
Call core dumped message.</H3> You either do not have shared memory configured properly in kernel or
<P> you need to enlarge the shared memory available in the kernel. The
It could be a variety of problems, but first check to see that you have exact amount you need depends on your architecture and how many
system V extensions installed on your kernel. PostgreSQL requires kernel buffers you configure postmaster to run with. For most systems, with
support for shared memory. default buffer sizes, you need a minimum of ~760K.
<P>
<H3><a name="2.6">2.6</a>) When I try to start the postmaster, I get 2.7) I have changed a source file, but a recompile does not see the change?
IpcMemoryCreate errors.</H3>
<P> The Makefiles do not have the proper dependencies for include files.
You either do not have shared memory configured properly in kernel or You have to do a 'make clean' and then another 'make'.
you need to enlarge the shared memory available in the kernel. The
exact amount you need depends on your architecture and how many buffers _________________________________________________________________
you configure postmaster to run with. For most systems, with default
buffer sizes, you need a minimum of ~760K. Section 3: PostgreSQL Features
<P>
<H3><a name="2.7">2.7</a>) I have changed a source file, but a 3.1) How do I specify a KEY or other constraints on a column?
recompile does not see the change?</H3>
<P> Column constraints are not supported in PostgreSQL. As a consequence,
The Makefiles do not have the proper dependencies for include files. You the system does not check for duplicates.
have to do a 'make clean' and then another 'make'.
<P> Under 6.0, create a unique index on the column. Attempts to create
<HR> duplicate of that column will report an error.
<H2> Section 3: PostgreSQL Features
</H2> 3.2) Does PostgreSQL support nested subqueries?
<P> Subqueries are not implemented, but they can be simulated using sql
<H3><a name="3.1">3.1</a>) How do I specify a KEY or other constraints on a functions.
column?</H3>
<P> 3.3) How do I define a unique indices?
Column constraints are not supported in PostgreSQL. As a consequence,
the system does not check for duplicates. PostgreSQL 6.0 supports unique indices.
<P>
Under 6.0, create a unique index on the column. Attempts to create 3.4) I've having a lot of problems using rules.
duplicate of that column will report an error.
<P> Currently, the rule system in PostgreSQL is mostly broken. It works
<H3><a name="3.2">3.2</a>) Does PostgreSQL support nested subqueries?</H3> enough to support the view mechanism, but that's about it. Use
<P> PostgreSQL rules at your own peril.
Subqueries are not implemented, but they can be simulated using sql
functions. 3.5) I can't seem to write into the middle of large objects reliably.
<P>
<H3><a name="3.3">3.3</a>) How do I define a unique indices?</H3> The Inversion large object system in PostgreSQL is also mostly broken.
<P> It works well enough for storing large wads of data and reading them
PostgreSQL 6.0 supports unique indices. back out, but the implementation has some underlying problems. Use
<P> PostgreSQL large objects at your own peril.
<H3><a name="3.4">3.4</a>) I've having a lot of problems using rules.</H3>
<P> 3.6) Does PostgreSQL have a graphical user interface? A report generator? A
Currently, the rule system in PostgreSQL is mostly broken. It works embedded query language interface?
enough to support the view mechanism, but that's about it. Use
PostgreSQL rules at your own peril. No. No. No. Not in the official distribution at least. Some users have
<P> reported some success at using 'pgbrowse' and 'onyx' as frontends to
<H3><a name="3.5">3.5</a>) I can't seem to write into the middle of large PostgreSQL. Several contributions are working on tk based frontend
objects reliably.</H3> tools. Ask on the mailing list.
<P>
The Inversion large object system in PostgreSQL is also mostly broken. 3.7) How can I write client applications to PostgreSQL?
It works well enough for storing large wads of data and reading them
back out, but the implementation has some underlying problems. Use PostgreSQL supports a C-callable library interface called libpq as
PostgreSQL large objects at your own peril. well as a Tcl-based library interface called libtcl.
<P>
<H3><a name="3.6">3.6</a>) Does PostgreSQL have a graphical user interface? Others have contributed a perl interface and a WWW gateway to
A report generator? A embedded query language interface?</H3> PostgreSQL. See the PostgreSQL home pages for more details.
<P>
No. No. No. Not in the official distribution at least. Some users have 3.8) How do I prevent other hosts from accessing my PostgreSQL backend?
reported some success at using 'pgbrowse' and 'onyx' as frontends to
PostgreSQL. Several contributions are working on tk based frontend Use host-based authentication by modifying the file $PGDATA/pg_hba
tools. Ask on the mailing list. accordingly.
<P>
<H3><a name="3.7">3.7</a>) How can I write client applications to PostgreSQL?</H3> 3.9) How do I set up a pg_group?
<P>
PostgreSQL supports a C-callable library interface called libpq as well Currently, there is no easy interface to set up user groups. You have
as a Tcl-based library interface called libtcl. to explicitly insert/update the pg_group table. For example:
<P>
Others have contributed a perl interface and a WWW gateway to
PostgreSQL. See the PostgreSQL home pages for more details. jolly=> insert into pg_group (groname, grosysid, grolist)
<P> jolly=> values ('posthackers', '1234', '{5443, 8261}');
<H3><a name="3.8">3.8</a>) How do I prevent other hosts from accessing my
PostgreSQL backend?</H3>
<P>
Use host-based authentication by modifying the file $PGDATA/pg_hba
accordingly.
<P>
<H3><a name="3.9">3.9</a>) How do I set up a pg_group?</H3>
<P>
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>
<P>
The fields in pg_group are: The fields in pg_group are:
<UL> * groname: the group name. This a char16 and should be purely
<LI> groname: the group name. This a char16 and should alphanumeric. Do not include underscores or other punctuation.
be purely alphanumeric. Do not include underscores * grosysid: the group id. This is an int4. This should be unique for
or other punctuation. each group.
<LI> grosysid: the group id. This is an int4. * grolist: the list of pg_user id's that belong in the group. This
This should be unique for each group. is an int4[].
<LI> grolist: the list of pg_user id's that belong in the group.
This is an int4[]. 3.10) What is the exact difference between binary cursors and normal cursors?
</UL>
<P> Normal cursors return data back in ASCII format. Since data is stored
<H3><a name="3.10">3.10</a>) What is the exact difference between binary natively in binary format, the system must do a conversion to produce
cursors and normal cursors?</H3> the ASCII format. In addition, ASCII formats are often large in size
<P> than binary format. Once the attributes come back in ASCII, often the
Normal cursors return data back in ASCII format. Since data is stored client application then has to convert it to a binary format to
natively in binary format, the system must do a conversion to produce manipulate it anyway.
the ASCII format. In addition, ASCII formats are often large in size
than binary format. Once the attributes come back in ASCII, often the Binary cursors give you back the data in the native binary
client application then has to convert it to a binary format to representation. Thus, binary cursors will tend to be a little faster
manipulate it anyway. since there's less overhead of conversion.
<P>
Binary cursors give you back the data in the native binary However, ASCII is architectural neutral whereas binary representation
representation. Thus, binary cursors will tend to be a little faster can differ between different machine architecture. Thus, if your
since there's less overhead of conversion. client machine uses a different representation than you server
<P> machine, getting back attributes in binary format is probably not what
However, ASCII is architectural neutral whereas binary representation you want. Also, if your main purpose is displaying the data in ASCII,
can differ between different machine architecture. Thus, if your client then getting it back in ASCII will save you some effort on the client
machine uses a different representation than you server machine, getting side.
back attributes in binary format is probably not what you want. Also, if
your main purpose is displaying the data in ASCII, then getting it back 3.11) Why doesn't the != operator work?
in ASCII will save you some effort on the client side.
<P> SQL specifies <> as the inequality operator, and that is what we have
<H3><a name="3.11">3.11</a>) Why doesn't the != operator work?</H3> defined for the built-in types.
<P>
SQL specifies &lt;&gt; as the inequality operator, and that is what we In 6.0, != is equivalent to <>.
have defined for the built-in types.
<P> 3.12) What is a R-tree index and what is it used for?
In 6.0, != is equivalent to &lt;&gt;.
<P> An r-tree index is used for indexing spatial data. A hash index can't
<H3><a name="3.12">3.12</a>) What is a R-tree index and what is it used for?</H3> handle range searches. A B-tree index only handles range searches in a
<P> single dimension. R-tree's can handle multi-dimensional data. For
An r-tree index is used for indexing spatial data. A hash index can't example, if a R-tree index can be built on an attribute of type
handle range searches. A B-tree index only handles range searches in a 'point', the system can more efficient answer queries like select all
single dimension. R-tree's can handle multi-dimensional data. For points within a bounding rectangle.
example, if a R-tree index can be built on an attribute of type 'point',
the system can more efficient answer queries like select all points The canonical paper that describes the original R-Tree design is:
within a bounding rectangle.
<P> Guttman, A. "R-Trees: A Dynamic Index Structure for Spatial
The canonical paper that describes the original R-Tree design is: Searching." Proc of the 1984 ACM SIGMOD Int'l Conf on Mgmt of Data,
<P> 45-57.
Guttman, A. "R-Trees: A Dynamic Index Structure for Spatial Searching."
Proc of the 1984 ACM SIGMOD Int'l Conf on Mgmt of Data, 45-57. You can also find this paper in Stonebraker's "Readings in Database
<P> Systems"
You can also find this paper in Stonebraker's "Readings in Database
Systems" 3.13) What is the maximum size for a tuple?
<P>
<H3><a name="3.13">3.13</a>) What is the maximum size for a tuple?</H3> Tuples are limited to 8K bytes. Taking into account system attributes
<P> and other overhead, one should stay well shy of 8,000 bytes to be on
Tuples are limited to 8K bytes. Taking into account system attributes the safe side. To use attributes larger than 8K, try using the large
and other overhead, one should stay well shy of 8,000 bytes to be on the objects interface.
safe side. To use attributes larger than 8K, try using the large
objects interface. Tuples do not cross 8k boundaries so a 5k tuple will require 8k of
<P> storage.
Tuples do not cross 8k boundaries so a 5k tuple will require 8k of
storage. 3.14) I defined indices but my queries don't seem to make use of them. Why?
<P>
<H3><a name="3.14">3.14</a>) I defined indices but my queries don't seem PostgreSQL does not automatically maintain statistics. One has to make
to make use of them. Why?</H3> an explicit 'vacuum' call to update the statistics. After statistics
<P> are updated, the optimizer has a better shot at using indices. Note
PostgreSQL does not automatically maintain statistics. One has to make that the optimizer is limited and does not use indices in some
an explicit 'vacuum' call to update the statistics. After statistics circumstances (such as OR clauses).
are updated, the optimizer has a better shot at using indices. Note
that the optimizer is limited and does not use indices in some If the system still does not see the index, it is probably because you
circumstances (such as OR clauses). have created an index on a field with the improper *_ops type. For
<P> example, you have created a CHAR(4) field, but have specified a
If the system still does not see the index, it is probably because you char_ops index type_class.
have created an index on a field with the improper *_ops type. For
example, you have created a CHAR(4) field, but have specified a char_ops See the create_index manual page for information on what type classes
index type_class. are available. It must match the field type.
<P>
See the create_index manual page for information on what type classes Postgres does not warn the user when the improper index is created.
are available. It must match the field type.
<P> Indexes not used for ORDER BY operations.
Postgres does not warn the user when the improper index is created.
<P> 3.15) Are there ODBC drivers for PostgreSQL?
Indexes not used for ORDER BY operations.
<P> There are two ODBC drivers available, PostODBC and OpenLink ODBC.
<H3><a name="3.15">3.15</a>) Are there ODBC drivers for PostgreSQL?</H3>
<P> For all people being interested in PostODBC, there are now two mailing
There are two ODBC drivers available, PostODBC and OpenLink ODBC. lists devoted to the discussion of PostODBC. The mailing lists are:
<P> * postodbc-users@listserv.direct. net
For all people being interested in PostODBC, there are now two mailing * postodbc-developers@listse rv.direct.net
lists devoted to the discussion of PostODBC. The mailing lists are:
<UL> these lists are ordinary majordomo mailing lists. You can subscribe by
<LI> <a sending a mail to:
href="mailto:postodbc-users@listserv.direct.net">postodbc-users@listserv.direct. * majordomo@listserv.direct.net
net</a>
<LI> <a OpenLink ODBC is currently in beta under Linux. You can get it from
href="mailto:postodbc-developers@listserv.direct.net">postodbc-developers@listse http://www.openlinksw.com/postgres.html. It works with our standard
rv.direct.net</a> ODBC client software so you'll have Postgres ODBC available on every
</UL> client platform we support (Win, Mac, Unix, VMS).
<P>
these lists are ordinary majordomo mailing lists. You can subscribe by We will probably be selling this product to people who need
sending a mail to: commercial-quality support, but a freeware version will always be
<UL> available. Questions to postgres95@openlink.co.uk.
<LI> <a
href="mailto:majordomo@listserv.direct.net">majordomo@listserv.direct.net</a> 3.16) How do I use postgres for multi-dimensional indexing (> 2 dimensions)?
</UL>
<P> Builtin R-Trees can handle polygons and boxes. In theory, R-trees can
OpenLink ODBC is currently in beta under Linux. You can get it from <a be extended to handle higher number of dimensions. In practice,
href="http://www.openlinksw.com/postgres.html"> extending R-trees require a bit of work and we don't currently have
http://www.openlinksw.com/postgres.html</a>. It works with our standard any documentation on how to do it.
ODBC client software so you'll have Postgres ODBC available on every
client platform we support (Win, Mac, Unix, VMS). 3.17) How do I do regular expression searches? case-insensitive regexp
<P> searching?
We will probably be selling this product to people who need
commercial-quality support, but a freeware version will always be PostgreSQL supports the SQL LIKE syntax as well as more general
available. Questions to <a regular expression searching with the ~ operator. The !~ is the
href="mailto:postgres95@openlink.co.uk">postgres95@openlink.co.uk</a>. negated regexp operator. ~* and !~* are the case-insensitive regular
<P> expression operators.
<H3><a name="3.16">3.16</a>) How do I use postgres for multi-dimensional
indexing (&gt; 2 dimensions)?</H3> 3.18) I can't access the database as the 'root' user.
<P>
Builtin R-Trees can handle polygons and boxes. In theory, R-trees can You should not create database users with user id 0(root). They will
be extended to handle higher number of dimensions. In practice, be unable to access the database. This is a security precaution
extending R-trees require a bit of work and we don't currently have any because of the ability of any user to dynamically link object modules
documentation on how to do it. into the database engine.
<P>
<H3><a name="3.17">3.17</a>) How do I do regular expression searches? 3.19) I experienced a server crash during a vacuum. How do I remove the lock
case-insensitive regexp searching?</H3> file?
<P>
PostgreSQL supports the SQL LIKE syntax as well as more general regular If the server crashes during a vacuum command, chances are it will
expression searching with the ~ operator. The !~ is the negated regexp leave a lock file hanging around. Attempts to re-run the vacuum
operator. ~* and !~* are the case-insensitive regular expression command result in
operators.
<P>
<H3><a name="3.18">3.18</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="3.19">3.19</a>) I experienced a server crash during a
vacuum. How do I remove the lock file?</H3>
<P>
If the server crashes during a vacuum command, chances are it will leave
a lock file hanging around. Attempts to re-run the vacuum command
result in
<PRE>
<SAMP>
WARN:can't create lock file -- another vacuum cleaner running? WARN:can't create lock file -- another vacuum cleaner running?
</SAMP>
</PRE> If you are sure that no vacuum is actually running, you can remove the
<P> file called "pg_vlock" in your database directory (which is
If you are sure that no vacuum is actually running, you can remove the $PGDATA/base/<dbName>)
file called "pg_vlock" in your database directory (which is
$PGDATA/base/&lt;dbName&gt;) 3.20) What is the difference between the various character types?
<P>
<H3><a name="3.20">3.20</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 }
...@@ -676,368 +591,322 @@ CHAR(#) bpchar blank padded to the specified fixed length ...@@ -676,368 +591,322 @@ 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> Remember, you need to use the internal name when creating indexes on
Remember, you need to use the internal name when creating indexes on these fields or when doing other internal operations.
these fields or when doing other 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 is the length, followed by the data). CHAR(#) and VARCHAR(#)
is the length, followed by the data). CHAR(#) and VARCHAR(#) allocate allocate the maximum number of bytes no matter how much data is stored
the maximum number of bytes no matter how much data is stored in the in the field. TEXT and BYTEA are the only character types that have
field. TEXT and BYTEA are the only character types that have variable variable length on the disk.
length on the disk.
<P> 3.21) In a query, how do I detect if a field is NULL?
<H3><a name="3.21">3.21</a>) In a query, how do I detect if a field is NULL?</H3>
<P> PostgreSQL has two builtin keywords, "isnull" and "notnull" (note no
PostgreSQL has two builtin keywords, "isnull" and "notnull" (note no spaces). Version 1.05 and later and 6.* understand IS NULL and IS NOT
spaces). Version 1.05 and later and 6.* understand IS NULL and IS NOT NULL.
NULL.
<P> 3.22) How do I see how the query optimizer is evaluating my query?
<H3><a name="3.22">3.22</a>) How do I see how the query optimizer is
evaluating my query?</H3> Place the word 'EXPLAIN' at the beginning of the query, for example:
<P>
Place the word 'EXPLAIN' at the beginning of the query, for example:
<PRE>
<CODE>
EXPLAIN SELECT * FROM table1 WHERE age = 23; EXPLAIN SELECT * FROM table1 WHERE age = 23;
</CODE>
</PRE> 3.23) How do I create a serial field?
<P>
<H3><a name="3.23">3.23</a>) How do I create a serial field?</H3> Postgres does not allow the user to specifiy a user column as type
<P> SERIAL. Instead, you can use each row's oid field as a unique value.
Postgres does not allow the user to specifiy a user column as type However, if you need to dump and reload the database, you need to be
SERIAL. Instead, you can use each row's oid field as a unique value. using postgres version 1.07 or later or 6.* with pgdump's -o option or
However, if you need to dump and reload the database, you need to be COPY's WITH OIDS option to preserver the oids.
using postgres version 1.07 or later or 6.* with pgdump's -o option or
COPY's WITH OIDS option to preserver the oids. Another valid way of doing this is to create a function:
<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. Sequences were implemented in 6.1
<P>
Sequences are implemented in 6.1 3.24) How do I create a multi-column index?
<P>
<H3><a name="3.24">3.24</a>) How do I create a multi-column index?</H3> In 6.0, you can not directly create a multi-column index using create
<P> index. You need to define a function which acts on the multiple
columns, then use create index with that function.
In 6.0, you can not directly create a multi-column index using create
index. You need to define a function which acts on the multiple columns, In 6.1, this feature is available.
then use create index with that function.
<P> 3.25) What are the temp_XXX files in my database directory?
In 6.1, this feature is available.
<P> They are temp_ files generated by the query executor. For example, if
<H3><a name="3.25">3.25</a>) What are the temp_XXX files in my database a sort needs to be done to satisfy an ORDER BY, some temp files are
directory?</H3> generated as a result of the sort.
<P>
They are temp_ files generated by the query executor. For example, if a If you have no transactions or sorts running at the time, it is safe
sort needs to be done to satisfy an ORDER BY, some temp files are to delete the temp_ files.
generated as a result of the sort.
<P> 3.26) Why are my table files not getting any smaller after a delete?
If you have no transactions or sorts running at the time, it is safe to
delete the temp_ files. If you run vacuum in pre-6.0, unused rows will be marked for reuse,
<P> but the file blocks are not released.
<H3><a name="3.26">3.26</a>) Why are my table files not getting any
smaller after a delete?</H3> In 6.0, vacuum properly shrinks tables.
<P>
If you run vacuum in pre-6.0, unused rows will be marked for reuse, but 3.27) Why can't I connect to my database from another machine?
the file blocks are not released.
<P> The default configuration allows only connections from tcp/ip host
In 6.0, vacuum properly shrinks tables. localhost. You need to add a host entry to the file pgsql/data/pg_hba.
<P>
<H3><a name="3.27">3.27</a>) Why can't I connect to my database from 3.28) I get the error 'default index class unsupported' when creating an
another machine?</H3> index. How do I do it?
<P>
The default configuration allows only connections from tcp/ip host You probably used:
localhost. You need to add a host entry to the file pgsql/data/pg_hba.
<P>
<H3><a name="3.28">3.28</a>) I get the error 'default index class
unsupported' when creating an index. How do I do it?</H3>
<P>
You probably used:
<PRE>
<CODE>
create index idx1 on person using btree (name); create index idx1 on person using btree (name);
</CODE>
</PRE> PostgreSQL indexes are extensible, and therefore in pre-6.0, you must
<P> specify a class_type when creating an index. Read the manual page for
PostgreSQL indexes are extensible, and therefore in pre-6.0, you must create index (called create_index).
specify a class_type when creating an index. Read the manual page for
create index (called create_index). Version 6.0, if you do not specify a class_type, it defaults to the
<P> proper type for the column.
Version 6.0, if you do not specify a class_type, it defaults to the
proper type for the column. 3.29) Why does creating an index crash the backend server?
<P>
<H3><a name="3.29">3.29</a>) Why does creating an index crash the You have probably defined an incorrect *_ops type class for the field
backend server?</H3> you are indexing.
<P>
You have probably defined an incorrect *_ops type class for the field 3.30) How do I find out what indexes or operations are defined in the
you are indexing. database?
<P>
<H3><a name="3.30">3.30</a>) How do I find out what indexes or Run the file pgsql/src/tutorial/syscat.source. It illustrates many of
operations are defined in the database?</H3> the 'select's needed to get information out of the database system
<P> tables.
Run the file pgsql/src/tutorial/syscat.source. It illustrates many of
the 'select's needed to get information out of the database system 3.31) Why do statements require an extra character at the end? Why does
tables. 'createuser' return 'unexpected last match in input()'? Why does pg_dump
<P> fail?
<H3><a name="3.31">3.31</a>) Why do statements require an extra character at
the end? Why does 'createuser' return 'unexpected last match in input()'? You have compile postgres with flex version 2.5.3. There is bug in
Why does pg_dump fail?</H3> this version of flex. Use flex version 2.5.2 or flex 2.5.4 instead.
<P> There is a doc/README.flex file which will properly patch the flex
You have compile postgres with flex version 2.5.3. There is bug in this 2.5.3 source code.
version of flex. Use flex version 2.5.2 or flex 2.5.4 instead. There
is a doc/README.flex file which will properly patch the flex 2.5.3 3.32) All my servers crash under concurrent table access. Why?
source code.
<P> This problem can be caused by a kernel that is not configured to
<H3><a name="3.32">3.32</a>) All my servers crash under concurrent table support semaphores.
access. Why?</H3>
<P> 3.33) What tools are available for hooking postgres to Web pages?
This problem can be caused by a kernel that is not configured to support
semaphores. For web integration, PHP/FI is an excellent interface. The URL for
<P> that is http://www.vex.net/php/
<H3><a name="3.33">3.33</a>) What tools are available for hooking
postgres to Web pages?</H3> PHP is great for simple stuff, but for more complex stuff, some still
<P> use the perl interface and CGI.pm.
For web integration, PHP/FI is an excellent interface. The URL for that
is <a href="http://www.vex.net/php/">http://www.vex.net/php/</a> An example of using WWW with C to talk to Postgres is can be tried at:
<P> * http://postgreSQL.org/~mlc
PHP is great for simple stuff, but for more complex stuff, some still
use the perl interface and CGI.pm. An WWW gatway based on WDB using perl can be downloaded from:
<P> * http://www.eol.ists.ca/~dunlop/wdb -p95
An example of using WWW with C to talk to Postgres is can be tried at:
<UL> 3.34) What is the time-warp feature and how does it relate to vacuum?
<LI>
<a href="http://postgreSQL.org/%7Emlc">http://postgreSQL.org/~mlc</a> PostgreSQL handles data changes differently than most database
</UL> systems. When a row is changed in a table, the original row is marked
<P> with the time it was changed, and a new row is created with the
An WWW gatway based on WDB using perl can be downloaded from: current data. By default, only current rows are used in a table. If
<UL> you specify a date/time after the table name in a FROM clause, you can
<LI> access the data that was current at that time, i.e.
<a
href="http://www.eol.ists.ca/~dunlop/wdb-p95">http://www.eol.ists.ca/~dunlop/wdb
-p95</a>
</UL>
<H3><a name="3.34">3.34</a>) What is the time-warp feature and how does
it relate to vacuum?</H3>
<P>
PostgreSQL handles data changes differently than most database systems.
When a row is changed in a table, the original row is marked with the
time it was changed, and a new row is created with the current data. By
default, only current rows are used in a table. If you specify a
date/time after the table name in a FROM clause, you can access the data
that was current at that time, i.e.
<PRE>
<CODE>
SELECT * SELECT *
FROM employees ['July 24, 1996 09:00:00'] FROM employees ['July 24, 1996 09:00:00']
</CODE>
</PRE> displays employee rows in the table at the specified time. You can
<P> specify intervals like [date,date], [date,], [,date], or [,]. This
displays employee rows in the table at the specified time. You can last option accesses all rows that ever existed.
specify intervals like [date,date], [date,], [,date], or [,]. This last
option accesses all rows that ever existed. INSERTed rows get a timestamp too, so rows that were not in the table
<P> at the desired time will not appear.
INSERTed rows get a timestamp too, so rows that were not in the table at
the desired time will not appear. Vacuum removes rows that are no longer current. This time-warp feature
<P> is used by the engine for rollback and crash recovery. Expiration
Vacuum removes rows that are no longer current. This time-warp feature times can be set with purge.
is used by the engine for rollback and crash recovery. Expiration times
can be set with purge. In 6.0, once a table is vacuumed, the creation time of a row may be
<P> incorrect, causing time-traval to fail.
In 6.0, once a table is vacuumed, the creation time of a row may be
incorrect, causing time-traval to fail. The time-travel feature will be removed in 7.0.
<P>
The time-travel feature will be removed in 7.0. 3.35) How do I tune the database engine for better performance?
<P>
<H3><a name="3.35">3.35</a>) How do I tune the database engine for There are two things that can be done. You can use Openlink's option
better performance?</H3> to disable fsync() by starting the postmaster with a '-o -F' option.
<P> This will prevent fsync()'s from flushing to disk after every
There are two things that can be done. You can use Openlink's option to transaction.
disable fsync() by starting the postmaster with a '-o -F' option. This
will prevent fsync()'s from flushing to disk after every transaction. You can also use the postmaster -B option to increase the number of
<P> shared memory buffers shared among the backend processes. If you make
You can also use the postmaster -B option to increase the number of this parameter too high, the process will not start or crash
shared memory buffers shared among the backend processes. If you make unexpectedly. Each buffer is 8K and the defualt is 64 buffers.
this parameter too high, the process will not start or crash
unexpectedly. Each buffer is 8K and the defualt is 64 buffers. 3.36) What debugging features are available in PostgreSQL?
<P>
<H3><a name="3.36">3.36</a>) What debugging features are available in PostgreSQL has several features that report status information that
PostgreSQL?</H3> can be valuable for debugging purposes.
<P>
PostgreSQL has several features that report status information that can First, by compiling with DEBUG defined, many assert()'s monitor the
be valuable for debugging purposes. progress of the backend and halt the program when something unexpected
<P> occurs.
First, by compiling with DEBUG defined, many assert()'s monitor the
progress of the backend and halt the program when something unexpected Both postmaster and postgres have several debug options available.
occurs. First, whenever you start the postmaster, make sure you send the
<P> standard output and error to a log file, like:
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. The query plans in a verbose debug
more detailed information to be reported. The -d option takes a number file can be formatted using the 'indent' program. (You may need to
1-3 that specifies the debug level. The query plans in a verbose debug remove the '====' lines in 1.* releases.) Be warned that a debug level
file can be formatted using the 'indent' program. (You may need to greater than one generates large log files in 1.* releases.
remove the '====' lines in 1.* releases.) Be warned that a debug level
greater than one generates large log files in 1.* releases. 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
purposes. Note that a newline terminates the query, not a semicolon. If perhaps use a debugger to see what is happening. Because the backend
you have compiled with debugging symbols, you can perhaps use a debugger was not started from the postmaster, it is not running in an identical
to see what is happening. Because the backend was not started from the environment and locking/backend interaction problems may not be
postmaster, it is not running in an identical environment and duplicated. Some operating system can attach to a running backend
locking/backend interaction problems may not be duplicated. Some directly to diagnose 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. The EXPLAIN command (see this FAQ) allows you to see how PostgreSQL is
<P> iterpreting your query.
The EXPLAIN command (see this FAQ) allows you to see how PostgreSQL is
iterpreting your query. 3.37) What is an oid? What is a tid?
<P>
<H3><a name="3.37">3.37</a>) What is an oid? What is a tid?</H3> Oids are Postgres's answer to unique row ids or serial columns. Every
<P> row that is created in Postgres gets a unique oid. All oids generated
Oids are Postgres's answer to unique row ids or serial columns. Every by initdb are less than 16384 (from backend/access/transam.h). All
row that is created in Postgres gets a unique oid. All oids generated post-initdb (user-created) oids are equal or greater that this. All
by initdb are less than 16384 (from backend/access/transam.h). All these oids are unique not only within a table, or database, but unique
post-initdb (user-created) oids are equal or greater that this. All within the entire postgres installation.
these oids are unique not only within a table, or database, but unique
within the entire postgres installation. Postgres uses oids in its internal system tables to link rows in
<P> separate tables. These oids can be used to identify specific user rows
Postgres uses oids in its internal system tables to link rows in and used in joins. It is recommended you use column type oid to store
separate tables. These oids can be used to identify specific user rows oid values. See the sql(l) manual page to see the other internal
and used in joins. It is recommended you use column type oid to store columns.
oid values. See the sql(l) manual page to see the other internal
columns. Tids are used to indentify specific physical rows with block and
<P> offset values. Tids change after rows are modified or reloaded. They
Tids are used to indentify specific physical rows with block and offset are used by index entries to point to physical rows. They can not be
values. Tids change after rows are modified or reloaded. They are used accessed through sql.
by index entries to point to physical rows. They can not be accessed
through sql. 3.38) What is the meaning of some of the terms used in Postgres?
<P>
<H3><a name="3.38">3.38</a>) What is the meaning of some of the terms Some of the source code and older documentation use terms that have
used in Postgres?</H3> more common usage. Here are some:
<P> * row, record, tuple
Some of the source code and older documentation use terms that have more * attribute, field, column
common usage. Here are some: * table, class
<UL> * retrieve, select
<LI> row, record, tuple * replace, update
<LI> attribute, field, column * append, insert
<LI> table, class * oid, serial value
<LI> retrieve, select * portal, cursor
<LI> replace, update * range variable, table name, table alias
<LI> append, insert
<LI> oid, serial value Please let me know if you think of any more.
<LI> portal, cursor
<LI> range variable, table name, table alias 3.39) What is Genetic Query Optimization?
</UL>
<P> The GEQO module in PostgreSQL is intended to solve the query
Please let me know if you think of any more. optimization problem of joining many tables by means of a Genetic
<P> Algorithm (GA). It allows the handling of large join queries through
<H3><a name="3.39">3.39</a>) What is Genetic Query Optimization?</H3> non-exhaustive search.
<P>
The GEQO module in PostgreSQL is intended to solve the query For further information see README.GEQO <utesch@aut.tu-freiberg.de>.
optimization problem of joining many tables by means of a Genetic
Algorithm (GA). It allows the handling of large join queries through 3.40) I am running Solaris and my dates display wrong. Why?
non-exhaustive search.
<P> There was a bug in 6.0 that caused this problem under Solaris with -O2
For further information see README.GEQO &lt;utesch@aut.tu-freiberg.de&gt;. optimization. Upgrade to 6.1.1.
<P>
<H3><a name="3.40">3.40</a>) I am running Solaris and my dates 3.41) How do I enable more than 32 concurrent backends?
display wrong. Why?</H3>
<P> Edit include/storage/sinvaladt.h, and change the value of
There was a bug in 6.0 that caused this problem under Solaris with -O2 MaxBackendId. In the future, we plan to make this a configurable
optimization. prameter.
Upgrade to 6.1.
<P> _________________________________________________________________
<H3><a name="3.41">3.41</a>) How do I enable more than 32 concurrent
backends?</H3> Section 4: Extending PostgreSQL
<P>
Edit include/storage/sinvaladt.h, and change the value of MaxBackendId. 4.1) I wrote a user-defined function and when I run it in psql, it dumps
In the future, we plan to make this a configurable prameter. core.
<P>
<HR> The problem could be a number of things. Try testing your user-defined
<H2> Section 4: Extending PostgreSQL function in a stand alone test program first. Also, make sure you are
</H2> not sending elog NOTICES when the front-end is expecting data, such as
<P> during a type_in() or type_out() functions
<H3><a name="4.1">4.1</a>) I wrote a user-defined function and when I run it
in psql, it dumps core.</H3> 4.2) I get messages of the type NOTICE:PortalHeapMemoryFree: 0x402251d0 not
<P> in alloc set!
The problem could be a number of things. Try testing your user-defined
function in a stand alone test program first. Also, make sure you are You are pfree'ing something that was not palloc'ed. When writing
not sending elog NOTICES when the front-end is expecting data, such as user-defined functions, do not include the file "libpq-fe.h". Doing so
during a type_in() or type_out() functions will cause your palloc to be a malloc instead of a free. Then, when
<P> the backend pfrees the storage, you get the notice message.
<H3><a name="4.2">4.2</a>) I get messages of the type
NOTICE:PortalHeapMemoryFree: 0x402251d0 not in alloc set!</H3> 4.3) I've written some nifty new types and functions for PostgreSQL.
<P>
You are pfree'ing something that was not palloc'ed. When writing Please share them with other PostgreSQL users. Send your extensions to
user-defined functions, do not include the file "libpq-fe.h". Doing so mailing list, and they will eventually end up in the contrib/
will cause your palloc to be a malloc instead of a free. Then, when the subdirectory.
backend pfrees the storage, you get the notice message.
<P> 4.4) How do I write a C function to return a tuple?
<H3><a name="4.3">4.3</a>) I've written some nifty new types and functions for
PostgreSQL.</H3> This requires extreme wizardry, so extreme that the authors have not
<P> ever tried it, though in principle it can be done. The short answer is
Please share them with other PostgreSQL users. Send your extensions to ... you can't. This capability is forthcoming in the future.
mailing list, and they will eventually end up in the contrib/
subdirectory. _________________________________________________________________
<P>
<H3><a name="4.4">4.4</a>) How do I write a C function to return a tuple?</H3> Section 5: Bugs
<P>
This requires extreme wizardry, so extreme that the authors have not 5.1) How do I make a bug report?
ever tried it, though in principle it can be done. The short answer is
... you can't. This capability is forthcoming in the future. Check the current FAQ at http://postgreSQL.org
<P>
<HR> Also check out our ftp site ftp://ftp.postgreSQL.org/pub to see if
<H2> Section 5: Bugs there is a more recent PostgreSQL version.
</H2>
<P> You can also fill out the "bug-template" file and send it to:
<H3><a name="5.1">5.1</a>) How do I make a bug report?</H3> * bugs@postgreSQL.org
<P>
Check the current FAQ at <a This is the address of the developers mailing list.
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>
==================================================== ====================================================
TODO list (FAQ) for PostgreSQL TODO list (FAQ) for PostgreSQL
==================================================== ====================================================
last updated: Tue Jun 3 16:30:57 EDT 1997 last updated: Sun Jul 13 15:18:19 EDT 1997
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.
THE CHANGES FOR 6.1 APPEAR AT THE END OF THIS DOCUMENT THE CHANGES FOR 6.1 and 6.1.1 APPEAR AT THE END OF THIS DOCUMENT
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>
...@@ -18,6 +18,7 @@ Developers who have claimed items are: ...@@ -18,6 +18,7 @@ Developers who have claimed items are:
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>
Igor is Igor <igor@sba.miami.edu> Igor is Igor <igor@sba.miami.edu>
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>
...@@ -28,6 +29,7 @@ Developers who have claimed items are: ...@@ -28,6 +29,7 @@ Developers who have claimed items are:
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>
Thomas is Thomas Lockhart <tgl@mythos.jpl.nasa.gov> Thomas is Thomas Lockhart <tgl@mythos.jpl.nasa.gov>
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>
...@@ -42,8 +44,6 @@ Fix all NULL features ...@@ -42,8 +44,6 @@ Fix all NULL features
allow psql to print nulls meaningfully allow psql to print nulls meaningfully
Fix compile and security of Kerberos/GSSAPI code (Daniel Kalchev?) Fix compile and security of Kerberos/GSSAPI code (Daniel Kalchev?)
Dropping a table twice causes corruption, drop/create not rollback-able Dropping a table twice causes corruption, drop/create not rollback-able
SELECT on two tables where zero or one table in WHERE and target
clause returns no rows
COUNT on VIEW always returns zero (maybe because there is no oid for views?) COUNT on VIEW always returns zero (maybe because there is no oid for views?)
CREATE VIEW requires super-user priviledge CREATE VIEW requires super-user priviledge
SELECT a[1] FROM test fails, it needs test.a[1] SELECT a[1] FROM test fails, it needs test.a[1]
...@@ -53,6 +53,9 @@ can lo_export()/lo_import() read/write anywhere, causing a security problem? ...@@ -53,6 +53,9 @@ can lo_export()/lo_import() read/write anywhere, causing a security problem?
Fix UPDATE key_table SET keyval=max(reftab.NUM)+1 WHERE tblname='reftab' Fix UPDATE key_table SET keyval=max(reftab.NUM)+1 WHERE tblname='reftab'
SELECT COUNT(*) FROM TAB1, TAB2 fails SELECT COUNT(*) FROM TAB1, TAB2 fails
Tables that start with xinv confused to be large objects Tables that start with xinv confused to be large objects
Two and three dimmensional arrays display improperly, missing {}
Add GROUP BY and HAVING to INSERT INTO table SELECT * FROM table2
Make timestamp type recognize DateStyle(Tom)
ENHANCEMENTS ENHANCEMENTS
------------ ------------
...@@ -115,7 +118,6 @@ Remove stale files upon startup(Vivek) ...@@ -115,7 +118,6 @@ Remove stale files upon startup(Vivek)
Add command to show privileges Add command to show privileges
Allow INSERT INTO ... SELECT to convert column types Allow INSERT INTO ... SELECT to convert column types
Add syslog functionality Add syslog functionality
Improve optimizer plan choice(Darren)
Add STDDEV/VARIANCE() function for standard deviation computation/variance Add STDDEV/VARIANCE() function for standard deviation computation/variance
Add table/column/function discription table indexed by oid Add table/column/function discription table indexed by oid
add pg_type attribute to identify types that need length (bpchar, varchar) add pg_type attribute to identify types that need length (bpchar, varchar)
...@@ -124,6 +126,8 @@ make pg_dumpall preserve table ownership, not just database ownership ...@@ -124,6 +126,8 @@ make pg_dumpall preserve table ownership, not just database ownership
make large objects have their own reltype make large objects have their own reltype
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 direction
change the library/backend interface to use network byte order
PERFORMANCE PERFORMANCE
----------- -----------
...@@ -150,11 +154,38 @@ Update usermanual source(many) ...@@ -150,11 +154,38 @@ Update usermanual source(many)
remove time-travel in documentation(Bruce) remove time-travel in documentation(Bruce)
added features used in grammer but not in docs, like :: and CAST added features used in grammer but not in docs, like :: and CAST
add DECLARE manual page add DECLARE manual page
update libpq++ manual page
PORTABILITY PORTABILITY
----------- -----------
---------------------------------------------------------------------------
CHANGES IN THE 6.1.1 RELEASE
Changes in this release
-----------------------
fix for SET with options (Thomas)
fix month boundary arithmetic(Thomas)
fix timezone daylight handling for some ports(Thomas)
allow pg_dump/pg_dumpall to preserve ownership of all tables/objects(Bruce)
new psql \connect option allows changing usernames without chaning databases
fix for datetime arithmetic over month boundaries(Thomas)
fix for initdb --debug option(Tatsuo)
lextest cleanup(Bruce)
hash fixes(Vadim)
psql's \d now case-insensitive(Bruce)
psql's backslash commands can now have trailing semicolon(Bruce)
fix memory leak in psql when using \g(Bruce)
major fix for endian handling of communication to server(Thomas, Tatsuo)
improvements in datetime and timespan routines(Thomas)
timestamp overhauled to use standard functions(Thomas)
Fix for Solaris assembler and include files(Yoshihiko Ichikawa)
allow underscores in usernames(Bruce)
pg_dumpall now returns proper status, portability fix(Bruce)
--------------------------------------------------------------------------- ---------------------------------------------------------------------------
CHANGES IN THE 6.1 RELEASE CHANGES IN THE 6.1 RELEASE
...@@ -188,6 +219,8 @@ fix btree duplicates handling (Vadim) ...@@ -188,6 +219,8 @@ fix btree duplicates handling (Vadim)
fix deleted tuples re-incarnation caused by vacuum (Vadim) fix deleted tuples re-incarnation caused by vacuum (Vadim)
fix SELECT varchar()/char() INTO TABLE made zero-length fields(Bruce) fix SELECT varchar()/char() INTO TABLE made zero-length fields(Bruce)
many psql, pg_dump, and libpq memory leaks fixed using Purify (Igor) many psql, pg_dump, and libpq memory leaks fixed using Purify (Igor)
SELECT on two tables where zero or one table in WHERE and target
clause returns no rows(Vadim)
Enhancements Enhancements
------------ ------------
...@@ -235,6 +268,7 @@ new destroydb -i option (Igor) ...@@ -235,6 +268,7 @@ new destroydb -i option (Igor)
new \dt and \di psql commands (Darren) new \dt and \di psql commands (Darren)
SELECT "\n" now escapes newline (A. Duursma) SELECT "\n" now escapes newline (A. Duursma)
new geometry conversion functions from old format (Thomas) new geometry conversion functions from old format (Thomas)
Improve optimizer plan choice(Vadim)
Source tree changes Source tree changes
------------------- -------------------
......
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