OSDN Git Service

Remove FAQ and FAQ_DEV ASCII and HTML files from CVS; now on the wiki.
authorBruce Momjian <bruce@momjian.us>
Tue, 7 Apr 2009 21:20:49 +0000 (21:20 +0000)
committerBruce Momjian <bruce@momjian.us>
Tue, 7 Apr 2009 21:20:49 +0000 (21:20 +0000)
Per-language files kept for transator usage.

doc/FAQ [deleted file]
doc/FAQ_DEV [deleted file]
doc/src/FAQ/FAQ.html [deleted file]
doc/src/FAQ/FAQ_DEV.html [deleted file]

diff --git a/doc/FAQ b/doc/FAQ
deleted file mode 100644 (file)
index cd57893..0000000
--- a/doc/FAQ
+++ /dev/null
@@ -1,873 +0,0 @@
-
-                Frequently Asked Questions (FAQ) for PostgreSQL
-                                       
-   Last updated: Tue Sep 23 16:19:49 EDT 2008
-   
-   Current maintainer: Bruce Momjian (bruce@momjian.us)
-   
-   The most recent version of this document can be viewed at
-   http://www.postgresql.org/files/documentation/faqs/FAQ.html.
-   
-   Platform-specific questions are answered at
-   http://www.postgresql.org/docs/faq/.
-     _________________________________________________________________
-   
-                             General Questions
-                                      
-   1.1) What is PostgreSQL? How is it pronounced? What is Postgres?
-   1.2) Who controls PostgreSQL?
-   1.3) What is the copyright of PostgreSQL?
-   1.4) What platforms does PostgreSQL support?
-   1.5) Where can I get PostgreSQL?
-   1.6) What is the most recent release?
-   1.7) Where can I get support?
-   1.8) How do I submit a bug report?
-   1.9) How do I find out about known bugs or missing features?
-   1.10) What documentation is available?
-   1.11) How can I learn SQL?
-   1.12) How do I submit a patch or join the development team?
-   1.13) How does PostgreSQL compare to other DBMSs? Can PostgreSQL be
-   embedded?
-   1.14) Will PostgreSQL handle recent daylight saving time changes in
-   various countries?
-   1.15) How do I unsubscribe from the PostgreSQL email lists? How do I
-   avoid receiving duplicate emails?
-   
-                           User Client Questions
-                                      
-   2.1) What interfaces are available for PostgreSQL?
-   2.2) What tools are available for using PostgreSQL with Web pages?
-   2.3) Does PostgreSQL have a graphical user interface?
-   
-                          Administrative Questions
-                                      
-   3.1) How do I install PostgreSQL somewhere other than
-   /usr/local/pgsql?
-   3.2) How do I control connections from other hosts?
-   3.3) How do I tune the database engine for better performance?
-   3.4) What debugging features are available?
-   3.5) Why do I get "Sorry, too many clients" when trying to connect?
-   3.6 What is the upgrade process for PostgreSQL?
-   3.7) What computer hardware should I use?
-   
-                           Operational Questions
-                                      
-   4.1) How do I SELECT only the first few rows of a query? A random row?
-   4.2) How do I find out what tables, indexes, databases, and users are
-   defined? How do I see the queries used by psql to display them?
-   4.3) How do you change a column's data type?
-   4.4) What is the maximum size for a row, a table, and a database?
-   4.5) How much database disk space is required to store data from a
-   typical text file?
-   4.6) Why are my queries slow? Why don't they use my indexes?
-   4.7) How do I see how the query optimizer is evaluating my query?
-   4.8) How do I perform regular expression searches and case-insensitive
-   regular expression searches? How do I use an index for
-   case-insensitive searches?
-   4.9) In a query, how do I detect if a field is NULL? How do I
-   concatenate possible NULLs? How can I sort on whether a field is NULL
-   or not?
-   4.10) What is the difference between the various character types?
-   4.11.1) How do I create a serial/auto-incrementing field?
-   4.11.2) How do I get the value of a SERIAL insert?
-   4.11.3) Doesn't currval() lead to a race condition with other users?
-   4.11.4) Why aren't my sequence numbers reused on transaction abort?
-   Why are there gaps in the numbering of my sequence/SERIAL column?
-   4.12) What is an OID? What is a CTID?
-   4.13) Why do I get the error "ERROR: Memory exhausted in
-   AllocSetAlloc()"?
-   4.14) How do I tell what PostgreSQL version I am running?
-   4.15) How do I create a column that will default to the current time?
-   4.16) How do I perform an outer join?
-   4.17) How do I perform queries using multiple databases?
-   4.18) How do I return multiple rows or columns from a function?
-   4.19) Why do I get "relation with OID ##### does not exist" errors
-   when accessing temporary tables in PL/PgSQL functions?
-   4.20) What replication solutions are available?
-   4.21) Why are my table and column names not recognized in my query?
-   Why is capitalization not preserved?
-     _________________________________________________________________
-   
-                             General Questions
-                                      
-  1.1) What is PostgreSQL? How is it pronounced? What is Postgres?
-  
-   PostgreSQL is pronounced Post-Gres-Q-L. (For those curious about how
-   to say "PostgreSQL", an audio file is available.)
-   
-   PostgreSQL is an object-relational database system that has the
-   features of traditional commercial database systems with enhancements
-   to be found in next-generation DBMS systems. PostgreSQL is free and
-   the complete source code is available.
-   
-   PostgreSQL development is performed by a team of mostly volunteer
-   developers spread throughout the world and communicating via the
-   Internet. It is a community project and is not controlled by any
-   company. To get involved, see the developer's FAQ at
-   http://www.postgresql.org/docs/faqs.FAQ_DEV.html
-   
-   Postgres is a widely-used nickname for PostgreSQL. It was the original
-   name of the project at Berkeley and is strongly preferred over other
-   nicknames. If you find 'PostgreSQL' hard to pronounce, call it
-   'Postgres' instead.
-   
-  1.2) Who controls PostgreSQL?
-  
-   If you are looking for a PostgreSQL gatekeeper, central committee, or
-   controlling company, give up --- there isn't one. We do have a core
-   committee and CVS committers, but these groups are more for
-   administrative purposes than control. The project is directed by the
-   community of developers and users, which anyone can join. All you need
-   to do is subscribe to the mailing lists and participate in the
-   discussions. (See the Developer's FAQ for information on how to get
-   involved in PostgreSQL development.)
-   
-  1.3) What is the copyright of PostgreSQL?
-  
-   PostgreSQL is distributed under the classic BSD license. Basically, it
-   allows users to do anything they want with the code, including
-   reselling binaries without the source code. The only restriction is
-   that you not hold us legally liable for problems with the software.
-   There is also the requirement that this copyright appear in all copies
-   of the software. Here is the actual BSD license we use:
-   
-   PostgreSQL Data Base Management System
-   
-   Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group
-   Portions Copyright (c) 1994-1996 Regents of the University of
-   California
-   
-   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.
-   
-   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.
-   
-   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.
-   
-  1.4) What platforms does PostgreSQL support?
-  
-   In general, any modern Unix-compatible platform should be able to run
-   PostgreSQL. The platforms that had received explicit testing at the
-   time of release are listed in the installation instructions.
-   
-   PostgreSQL also runs natively on Microsoft Windows NT-based operating
-   systems like Win2000 SP4, WinXP, and Win2003. A prepackaged installer
-   is available at http://www.postgresql.org/download/windows.
-   MSDOS-based versions of Windows (Win95, Win98, WinMe) can run
-   PostgreSQL using Cygwin.
-   
-   There is also a Novell Netware 6 port at
-   http://developer.novell.com/wiki/index.php/Postgresql, and an OS/2
-   (eComStation) version at
-   http://hobbes.nmsu.edu/cgi-bin/h-search?sh=1&button=Search&key=postgre
-   SQL&stype=all&sort=type&dir=%2F.
-   
-  1.5) Where can I get PostgreSQL?
-  
-   Via web browser, use http://www.postgresql.org/ftp/, and via ftp, use
-   ftp://ftp.postgresql.org/pub/.
-   
-  1.6) What is the most recent release?
-  
-   The latest release of PostgreSQL is version 8.3.3.
-   
-   We plan to have a major release every year, with minor releases every
-   few months.
-   
-  1.7) Where can I get support?
-  
-   The PostgreSQL community provides assistance to many of its users via
-   email. The main web site to subscribe to the email lists is
-   http://www.postgresql.org/community/lists/. The general or bugs lists
-   are a good place to start.
-   
-   The major IRC channel is #postgresql on Freenode (irc.freenode.net).
-   To connect you can use the Unix program irc -c '#postgresql' "$USER"
-   irc.freenode.net or use any other IRC clients. A Spanish one also
-   exists on the same network, (#postgresql-es), a French one,
-   (#postgresqlfr), and a Brazilian one, (#postgresql-br). There is also
-   a PostgreSQL channel on EFNet.
-   
-   A list of commercial support companies is available at
-   http://www.postgresql.org/support/professional_support.
-   
-  1.8) How do I submit a bug report?
-  
-   Visit the PostgreSQL bug form at
-   http://www.postgresql.org/support/submitbug. Also check out our ftp
-   site ftp://ftp.postgresql.org/pub/ to see if there is a more recent
-   PostgreSQL version.
-   
-   Bugs submitted using the bug form or posted to any PostgreSQL mailing
-   list typically generates one of the following replies:
-     * It is not a bug, and why
-     * It is a known bug and is already on the TODO list
-     * The bug has been fixed in the current release
-     * The bug has been fixed but is not packaged yet in an official
-       release
-     * A request is made for more detailed information:
-          + Operating system
-          + PostgreSQL version
-          + Reproducible test case
-          + Debugging information
-          + Debugger backtrace output
-     * The bug is new. The following might happen:
-          + A patch is created and will be included in the next major or
-            minor release
-          + The bug cannot be fixed immediately and is added to the TODO
-            list
-       
-  1.9) How do I find out about known bugs or missing features?
-  
-   PostgreSQL supports an extended subset of SQL:2003. See our TODO list
-   for known bugs, missing features, and future plans.
-   
-   A feature request usually results in one of the following replies:
-     * The feature is already on the TODO list
-     * The feature is not desired because:
-          + It duplicates existing functionality that already follows the
-            SQL standard
-          + The feature would increase code complexity but add little
-            benefit
-          + The feature would be insecure or unreliable
-     * The new feature is added to the TODO list
-       
-   PostgreSQL does not use a bug tracking system because we find it more
-   efficient to respond directly to email and keep the TODO list
-   up-to-date. In practice, bugs don't last very long in the software,
-   and bugs that affect a large number of users are fixed rapidly. The
-   only place to find all changes, improvements, and fixes in a
-   PostgreSQL release is to read the CVS log messages. Even the release
-   notes do not list every change made to the software.
-   
-  1.10) What documentation is available?
-  
-   PostgreSQL includes extensive documentation, including a large manual,
-   manual pages, and some test examples. See the /doc directory. You can
-   also browse the manuals online at http://www.postgresql.org/docs.
-   
-   There are two PostgreSQL books available online at
-   http://www.postgresql.org/docs/books/awbook.html and
-   http://www.commandprompt.com/ppbook/. There are a number of PostgreSQL
-   books available for purchase. One of the most popular ones is by Korry
-   Douglas. A list of book reviews can be found at
-   http://www.postgresql.org/docs/books/. There is also a collection of
-   PostgreSQL technical articles at
-   http://wiki.postgresql.org/wiki/Community_Generated_Articles%2C_Guides
-   %2C_and_Documentation.
-   
-   The command line client program psql has some \d commands to show
-   information about types, operators, functions, aggregates, etc. - use
-   \? to display the available commands.
-   
-   Our web site contains even more documentation.
-   
-  1.11) How can I learn SQL?
-  
-   First, consider the PostgreSQL-specific books mentioned above. Many of
-   our users also like The Practical SQL Handbook, Bowman, Judith S., et
-   al., Addison-Wesley. Others like The Complete Reference SQL, Groff et
-   al., McGraw-Hill.
-   
-   There are also many nice tutorials available online:
-     * http://www.intermedia.net/support/sql/sqltut.shtm
-     * http://sqlcourse.com
-     * http://www.w3schools.com/sql/default.asp
-     * http://mysite.verizon.net/Graeme_Birchall/id1.html
-     * http://sqlzoo.net
-       
-  1.12) How do I submit a patch or join the development team?
-  
-   See the Developer's FAQ.
-   
-  1.13) How does PostgreSQL compare to other DBMSs? Can PostgreSQL be embedded?
-  
-   There are several ways of measuring software: features, performance,
-   reliability, support, and price.
-   
-   Features
-          PostgreSQL has most features present in large commercial DBMSs,
-          like transactions, subselects, triggers, views, foreign key
-          referential integrity, and sophisticated locking. We have some
-          features they do not have, like user-defined types,
-          inheritance, rules, and multi-version concurrency control to
-          reduce lock contention.
-          
-   Performance
-          PostgreSQL's performance is comparable to other commercial and
-          open source databases. It is faster for some things, slower for
-          others. Our performance is usually +/-10% compared to other
-          databases.
-          
-   Reliability
-          We realize that a DBMS must be reliable, or it is worthless. We
-          strive to release well-tested, stable code that has a minimum
-          of bugs. Each release has at least one month of beta testing,
-          and our release history shows that we can provide stable, solid
-          releases that are ready for production use. We believe we
-          compare favorably to other database software in this area.
-          
-   Support
-          Our mailing lists provide contact with a large group of
-          developers and users to help resolve any problems encountered.
-          While we cannot guarantee a fix, commercial DBMSs do not always
-          supply a fix either. Direct access to developers, the user
-          community, manuals, and the source code often make PostgreSQL
-          support superior to other DBMSs. There is commercial
-          per-incident support available for those who need it. (See FAQ
-          section 1.7.)
-          
-   Price
-          We are free for all use, both commercial and non-commercial.
-          You can add our code to your product with no limitations,
-          except those outlined in our BSD-style license stated above.
-          
-   PostgreSQL is designed as a client/server architecture, which requires
-   separate processes for each client and server, and various helper
-   processes. Many embedded architectures can support such requirements.
-   However, if your embedded architecture requires the database server to
-   run inside the application process, you cannot use Postgres and should
-   select a lighter-weight database solution.
-   
-  1.14) Will PostgreSQL handle recent daylight saving time changes in various
-  countries?
-  
-   USA daylight saving time changes are included in PostgreSQL release
-   8.0.[4+], and all later major releases, e.g. 8.1. Canada and Western
-   Australia changes are included in 8.0.[10+], 8.1.[6+], and all later
-   major releases. PostgreSQL releases prior to 8.0 use the operating
-   system's timezone database for daylight saving information.
-   
-  1.15) How do I unsubscribe from the PostgreSQL email lists? How do I avoid
-  receiving duplicate emails?
-  
-   The PostgreSQL Majordomo page allows subscribing or unsubscribing from
-   any of the PostgreSQL email lists. (You might need to have your
-   Majordomo password emailed to you to log in.)
-   
-   All PostgreSQL email lists are configured so a group reply goes to the
-   email list and the original email author. This is done so users
-   receive the quickest possible email replies. If you would prefer not
-   to receive duplicate email from the list in cases where you already
-   receive an email directly, check eliminatecc from the Majordomo Change
-   Settings page. You can also prevent yourself from receiving copies of
-   emails you post to the lists by unchecking selfcopy.
-     _________________________________________________________________
-   
-                           User Client Questions
-                                      
-  2.1) What interfaces are available for PostgreSQL?
-  
-   The PostgreSQL install includes only the C and embedded C interfaces.
-   All other interfaces are independent projects that are downloaded
-   separately; being separate allows them to have their own release
-   schedule and development teams.
-   
-   Some programming languages like PHP include an interface to
-   PostgreSQL. Interfaces for languages like Perl, TCL, Python, and many
-   others are available at http://pgfoundry.org.
-   
-  2.2) What tools are available for using PostgreSQL with Web pages?
-  
-   A nice introduction to Database-backed Web pages can be seen at:
-   http://www.webreview.com
-   
-   For Web integration, PHP (http://www.php.net) is an excellent
-   interface.
-   
-   For complex cases, many use the Perl and DBD::Pg with CGI.pm or
-   mod_perl.
-   
-  2.3) Does PostgreSQL have a graphical user interface?
-  
-   There are a large number of GUI Tools that are available for
-   PostgreSQL from both commercial and open source developers. A detailed
-   list can be found in the Community Guide to PostgreSQL GUI Tools.
-     _________________________________________________________________
-   
-                          Administrative Questions
-                                      
-  3.1) How do I install PostgreSQL somewhere other than /usr/local/pgsql?
-  
-   Specify the --prefix option when running configure.
-   
-  3.2) How do I control connections from other hosts?
-  
-   By default, PostgreSQL only allows connections from the local machine
-   using Unix domain sockets or TCP/IP connections. Other machines will
-   not be able to connect unless you modify listen_addresses in the
-   postgresql.conf file, enable host-based authentication by modifying
-   the $PGDATA/pg_hba.conf file, and restart the database server.
-   
-  3.3) How do I tune the database engine for better performance?
-  
-   There are three major areas for potential performance improvement:
-   
-   Query Changes
-          This involves modifying queries to obtain better performance:
-          
-          + Creation of indexes, including expression and partial indexes
-          + Use of COPY instead of multiple INSERTs
-          + Grouping of multiple statements into a single transaction to
-            reduce commit overhead
-          + Use of CLUSTER when retrieving many rows from an index
-          + Use of LIMIT for returning a subset of a query's output
-          + Use of Prepared queries
-          + Use of ANALYZE to maintain accurate optimizer statistics
-          + Regular use of VACUUM or pg_autovacuum
-          + Dropping of indexes during large data changes
-            
-   Server Configuration
-          A number of postgresql.conf settings affect performance. For
-          more details, see Administration Guide/Server Run-time
-          Environment/Run-time Configuration for a full listing, and for
-          commentary see
-          http://www.varlena.com/varlena/GeneralBits/Tidbits/annotated_co
-          nf_e.html and
-          http://www.varlena.com/varlena/GeneralBits/Tidbits/perf.html.
-          
-   Hardware Selection
-          The effect of hardware on performance is detailed in
-          http://www.powerpostgresql.com/PerfList/ and
-          http://momjian.us/main/writings/pgsql/hw_performance/index.html
-          .
-          
-  3.4) What debugging features are available?
-  
-   There are many log_* server configuration variables at
-   http://www.postgresql.org/docs/current/interactive/runtime-config-logg
-   ing.html that enable printing of query and process statistics which
-   can be very useful for debugging and performance measurements.
-   
-  3.5) Why do I get "Sorry, too many clients" when trying to connect?
-  
-   You have reached the default limit of 100 database sessions. You need
-   to increase the server's limit on how many concurrent backend
-   processes it can start by changing the max_connections value in
-   postgresql.conf and restarting the server.
-   
-  3.6) What is the upgrade process for PostgreSQL?
-  
-   See http://www.postgresql.org/support/versioning for a general
-   discussion about upgrading, and
-   http://www.postgresql.org/docs/current/static/install-upgrading.html
-   for specific instructions.
-   
-  3.7) What computer hardware should I use?
-  
-   Because PC hardware is mostly compatible, people tend to believe that
-   all PC hardware is of equal quality. It is not. ECC RAM, SCSI, and
-   quality motherboards are more reliable and have better performance
-   than less expensive hardware. PostgreSQL will run on almost any
-   hardware, but if reliability and performance are important it is wise
-   to research your hardware options thoroughly. A disk controller with a
-   battery-backed cache is also useful. Our email lists can be used to
-   discuss hardware options and tradeoffs.
-     _________________________________________________________________
-   
-                           Operational Questions
-                                      
-  4.1) How do I SELECT only the first few rows of a query? A random row?
-  
-   To retrieve only a few rows, if you know at the number of rows needed
-   at the time of the SELECT use LIMIT . If an index matches the ORDER BY
-   it is possible the entire query does not have to be executed. If you
-   don't know the number of rows at SELECT time, use a cursor and FETCH.
-   
-   To SELECT a random row, use:
-    SELECT col
-    FROM tab
-    ORDER BY random()
-    LIMIT 1;
-
-  4.2) How do I find out what tables, indexes, databases, and users are
-  defined? How do I see the queries used by psql to display them?
-  
-   Use the \dt command to see tables in psql. For a complete list of
-   commands inside psql you can use \?. Alternatively you can read the
-   source code for psql in file pgsql/src/bin/psql/describe.c, it
-   contains SQL commands that generate the output for psql's backslash
-   commands. You can also start psql with the -E option so it will print
-   out the queries it uses to execute the commands you give. PostgreSQL
-   also provides an SQL compliant INFORMATION SCHEMA interface you can
-   query to get information about the database.
-   
-   There are also system tables beginning with pg_ that describe these
-   too.
-   
-   Use psql -l will list all databases.
-   
-   Also try the file pgsql/src/tutorial/syscat.source. It illustrates
-   many of the SELECTs needed to get information from the database system
-   tables.
-   
-  4.3) How do you change a column's data type?
-  
-   Changing the data type of a column can be done easily in 8.0 and later
-   with ALTER TABLE ALTER COLUMN TYPE.
-   
-   In earlier releases, do this:
-    BEGIN;
-    ALTER TABLE tab ADD COLUMN new_col new_data_type;
-    UPDATE tab SET new_col = CAST(old_col AS new_data_type);
-    ALTER TABLE tab DROP COLUMN old_col;
-    COMMIT;
-
-   You might then want to do VACUUM FULL tab to reclaim the disk space
-   used by the expired rows.
-   
-  4.4) What is the maximum size for a row, a table, and a database?
-  
-   These are the limits:
-   
-   Maximum size for a database? unlimited (32 TB databases exist)
-   Maximum size for a table? 32 TB
-   Maximum size for a row? 400 GB
-   Maximum size for a field? 1 GB
-   Maximum number of rows in a table? unlimited
-   Maximum number of columns in a table? 250-1600 depending on column
-   types
-   Maximum number of indexes on a table? unlimited
-   
-   Of course, these are not actually unlimited, but limited to available
-   disk space and memory/swap space. Performance may suffer when these
-   values get unusually large.
-   
-   The maximum table size of 32 TB does not require large file support
-   from the operating system. Large tables are stored as multiple 1 GB
-   files so file system size limits are not important.
-   
-   The maximum table size, row size, and maximum number of columns can be
-   quadrupled by increasing the default block size to 32k. The maximum
-   table size can also be increased using table partitioning.
-   
-   One limitation is that indexes can not be created on columns longer
-   than about 2,000 characters. Fortunately, such indexes are rarely
-   needed. Uniqueness is best guaranteed by a function index of an MD5
-   hash of the long column, and full text indexing allows for searching
-   of words within the column.
-   
-  4.5) How much database disk space is required to store data from a typical
-  text file?
-  
-   A PostgreSQL database may require up to five times the disk space to
-   store data from a text file.
-   
-   As an example, consider a file of 100,000 lines with an integer and
-   text description on each line. Suppose the text string avergages
-   twenty bytes in length. The flat file would be 2.8 MB. The size of the
-   PostgreSQL database file containing this data can be estimated as 5.2
-   MB:
-    24 bytes: each row header (approximate)
-    24 bytes: one int field and one text field
-   + 4 bytes: pointer on page to tuple
-   ----------------------------------------
-    52 bytes per row
-
-   The data page size in PostgreSQL is 8192 bytes (8 KB), so:
-
-   8192 bytes per page
-   -------------------   =  158 rows per database page (rounded down)
-     52 bytes per row
-
-   100000 data rows
-   --------------------  =  633 database pages (rounded up)
-      158 rows per page
-
-633 database pages * 8192 bytes per page  =  5,185,536 bytes (5.2 MB)
-
-   Indexes do not require as much overhead, but do contain the data that
-   is being indexed, so they can be large also.
-   
-   NULLs are stored as bitmaps, so they use very little space.
-   
-  4.6) Why are my queries slow? Why don't they use my indexes?
-  
-   Indexes are not used by every query. Indexes are used only if the
-   table is larger than a minimum size, and the query selects only a
-   small percentage of the rows in the table. This is because the random
-   disk access caused by an index scan can be slower than a straight read
-   through the table, or sequential scan.
-   
-   To determine if an index should be used, PostgreSQL must have
-   statistics about the table. These statistics are collected using
-   VACUUM ANALYZE, or simply ANALYZE. Using statistics, the optimizer
-   knows how many rows are in the table, and can better determine if
-   indexes should be used. Statistics are also valuable in determining
-   optimal join order and join methods. Statistics collection should be
-   performed periodically as the contents of the table change.
-   
-   Indexes are normally not used for ORDER BY or to perform joins. A
-   sequential scan followed by an explicit sort is usually faster than an
-   index scan of a large table. However, LIMIT combined with ORDER BY
-   often will use an index because only a small portion of the table is
-   returned.
-   
-   If you believe the optimizer is incorrect in choosing a sequential
-   scan, use SET enable_seqscan TO 'off' and run query again to see if an
-   index scan is indeed faster.
-   
-   When using wild-card operators such as LIKE or ~, indexes can only be
-   used in certain circumstances:
-     * The beginning of the search string must be anchored to the start
-       of the string, i.e.
-          + LIKE patterns must not start with %.
-          + ~ (regular expression) patterns must start with ^.
-     * The search string can not start with a character class, e.g.
-       [a-e].
-     * Case-insensitive searches such as ILIKE and ~* do not utilize
-       indexes. Instead, use expression indexes, which are described in
-       section 4.8.
-     * The default C locale must be used during initdb because it is not
-       possible to know the next-greatest character in a non-C locale.
-       You can create a special text_pattern_ops index for such cases
-       that work only for LIKE indexing. It is also possible to use full
-       text indexing for word searches.
-       
-  4.7) How do I see how the query optimizer is evaluating my query?
-  
-   See the EXPLAIN manual page.
-   
-  4.8) How do I perform regular expression searches and case-insensitive
-  regular expression searches? How do I use an index for case-insensitive
-  searches?
-  
-   The ~ operator does regular expression matching, and ~* does
-   case-insensitive regular expression matching. The case-insensitive
-   variant of LIKE is called ILIKE.
-   
-   Case-insensitive equality comparisons are normally expressed as:
-    SELECT *
-    FROM tab
-    WHERE lower(col) = 'abc';
-
-   This will not use an standard index. However, if you create an
-   expression index, it will be used:
-    CREATE INDEX tabindex ON tab (lower(col));
-
-   If the above index is created as UNIQUE, though the column can store
-   upper and lowercase characters, it can not have identical values that
-   differ only in case. To force a particular case to be stored in the
-   column, use a CHECK constraint or a trigger.
-   
-  4.9) In a query, how do I detect if a field is NULL? How do I concatenate
-  possible NULLs? How can I sort on whether a field is NULL or not?
-  
-   You test the column with IS NULL and IS NOT NULL, like this:
-   SELECT *
-   FROM tab
-   WHERE col IS NULL;
-
-   To concatentate with possible NULLs, use COALESCE(), like this:
-   SELECT COALESCE(col1, '') || COALESCE(col2, '')
-   FROM tab
-
-   To sort by the NULL status, use the IS NULL and IS NOT NULL modifiers
-   in your ORDER BY clause. Things that are true will sort higher than
-   things that are false, so the following will put NULL entries at the
-   top of the resulting list:
-   SELECT *
-   FROM tab
-   ORDER BY (col IS NOT NULL)
-
-  4.10) What is the difference between the various character types?
-  
-        Type    Internal Name                    Notes
-     VARCHAR(n) varchar       size specifies maximum length, no padding
-     CHAR(n)    bpchar        blank padded to the specified fixed length
-     TEXT       text          no specific upper limit on length
-     BYTEA      bytea         variable-length byte array (null-byte safe)
-     "char"     char          one character
-   
-   You will see the internal name when examining system catalogs and in
-   some error messages.
-   
-   The first four types above are "varlena" types (i.e., the first four
-   bytes on disk are the length, followed by the data). Thus the actual
-   space used is slightly greater than the declared size. However, long
-   values are also subject to compression, so the space on disk might
-   also be less than expected.
-   VARCHAR(n) is best when storing variable-length strings and it limits
-   how long a string can be. TEXT is for strings of unlimited length,
-   with a maximum of one gigabyte.
-   
-   CHAR(n) is for storing strings that are all the same length. CHAR(n)
-   pads with blanks to the specified length, while VARCHAR(n) only stores
-   the characters supplied. BYTEA is for storing binary data,
-   particularly values that include NULL bytes. All the types described
-   here have similar performance characteristics.
-   
-  4.11.1) How do I create a serial/auto-incrementing field?
-  
-   PostgreSQL supports a SERIAL data type. It auto-creates a sequence.
-   For example, this:
-    CREATE TABLE person (
-        id   SERIAL,
-        name TEXT
-    );
-
-   is automatically translated into this:
-    CREATE SEQUENCE person_id_seq;
-    CREATE TABLE person (
-        id   INT4 NOT NULL DEFAULT nextval('person_id_seq'),
-        name TEXT
-    );
-
-   Automatically created sequence are named <table>_<serialcolumn>_seq,
-   where table and serialcolumn are the names of the table and SERIAL
-   column, respectively. See the create_sequence manual page for more
-   information about sequences.
-   
-  4.11.2) How do I get the value of a SERIAL insert?
-  
-   The simplest way is to retrieve the assigned SERIAL value with
-   RETURNING. Using the example table in 4.11.1, it would look like this:
-    INSERT INTO person (name) VALUES ('Blaise Pascal') RETURNING id;
-
-   You can also call nextval() and use that value in the INSERT, or call
-   currval() after the INSERT.
-   
-  4.11.3) Doesn't currval() lead to a race condition with other users?
-  
-   No. currval() returns the current value assigned by your session, not
-   by all sessions.
-   
-  4.11.4) Why aren't my sequence numbers reused on transaction abort? Why are
-  there gaps in the numbering of my sequence/SERIAL column?
-  
-   To improve concurrency, sequence values are given out to running
-   transactions as needed and are not locked until the transaction
-   completes. This causes gaps in numbering from aborted transactions.
-   
-  4.12) What is an OID? What is a CTID?
-  
-   If a table is created WITH OIDS, each row gets a unique a OID. OIDs
-   are automatically assigned unique 4-byte integers that are unique
-   across the entire installation. However, they overflow at 4 billion,
-   and then the OIDs start being duplicated. PostgreSQL uses OIDs to link
-   its internal system tables together.
-   
-   To uniquely number rows in user tables, it is best to use SERIAL
-   rather than OIDs because SERIAL sequences are unique only within a
-   single table. and are therefore less likely to overflow. SERIAL8 is
-   available for storing eight-byte sequence values.
-   
-   CTIDs are used to identify specific physical rows with block and
-   offset values. CTIDs change after rows are modified or reloaded. They
-   are used by index entries to point to physical rows.
-   
-  4.13) Why do I get the error "ERROR: Memory exhausted in AllocSetAlloc()"?
-  
-   You probably have run out of virtual memory on your system, or your
-   kernel has a low limit for certain resources. Try this before starting
-   the server:
-    ulimit -d 262144
-    limit datasize 256m
-
-   Depending on your shell, only one of these may succeed, but it will
-   set your process data segment limit much higher and perhaps allow the
-   query to complete. This command applies to the current process, and
-   all subprocesses created after the command is run. If you are having a
-   problem with the SQL client because the backend is returning too much
-   data, try it before starting the client.
-   
-  4.14) How do I tell what PostgreSQL version I am running?
-  
-   From psql, type SELECT version();
-   
-  4.15) How do I create a column that will default to the current time?
-  
-   Use CURRENT_TIMESTAMP:
-    CREATE TABLE test (x int, modtime TIMESTAMP DEFAULT CURRENT_TIMESTAMP );
-
-  4.16) How do I perform an outer join?
-  
-   PostgreSQL supports outer joins using the SQL standard syntax. Here
-   are two examples:
-    SELECT *
-    FROM t1 LEFT OUTER JOIN t2 ON (t1.col = t2.col);
-
-   or
-    SELECT *
-    FROM t1 LEFT OUTER JOIN t2 USING (col);
-
-   These identical queries join t1.col to t2.col, and also return any
-   unjoined rows in t1 (those with no match in t2). A RIGHT join would
-   add unjoined rows of t2. A FULL join would return the matched rows
-   plus all unjoined rows from t1 and t2. The word OUTER is optional and
-   is assumed in LEFT, RIGHT, and FULL joins. Ordinary joins are called
-   INNER joins.
-   
-  4.17) How do I perform queries using multiple databases?
-  
-   There is no way to query a database other than the current one.
-   Because PostgreSQL loads database-specific system catalogs, it is
-   uncertain how a cross-database query should even behave.
-   
-   contrib/dblink allows cross-database queries using function calls. Of
-   course, a client can also make simultaneous connections to different
-   databases and merge the results on the client side.
-   
-  4.18) How do I return multiple rows or columns from a function?
-  
-   It is easy using set-returning functions,
-   http://wiki.postgresql.org/wiki/Return_more_than_one_row_of_data_from_
-   PL/pgSQL_functions.
-   
-  4.19) Why do I get "relation with OID ##### does not exist" errors when
-  accessing temporary tables in PL/PgSQL functions?
-  
-   In PostgreSQL versions < 8.3, PL/PgSQL caches function scripts, and an
-   unfortunate side effect is that if a PL/PgSQL function accesses a
-   temporary table, and that table is later dropped and recreated, and
-   the function called again, the function will fail because the cached
-   function contents still point to the old temporary table. The solution
-   is to use EXECUTE for temporary table access in PL/PgSQL. This will
-   cause the query to be reparsed every time.
-   
-   This problem does not occur in PostgreSQL 8.3 and later.
-   
-  4.20) What replication solutions are available?
-  
-   Though "replication" is a single term, there are several technologies
-   for doing replication, with advantages and disadvantages for each.
-   
-   Master/slave replication allows a single master to receive read/write
-   queries, while slaves can only accept read/SELECT queries. The most
-   popular freely available master-slave PostgreSQL replication solution
-   is Slony-I.
-   
-   Multi-master replication allows read/write queries to be sent to
-   multiple replicated computers. This capability also has a severe
-   impact on performance due to the need to synchronize changes between
-   servers. PGCluster is the most popular such solution freely available
-   for PostgreSQL.
-   
-   There are also commercial and hardware-based replication solutions
-   available supporting a variety of replication models.
-   
-  4.21) Why are my table and column names not recognized in my query? Why is
-  capitalization not preserved?
-  
-   The most common cause of unrecognized names is the use of
-   double-quotes around table or column names during table creation. When
-   double-quotes are used, table and column names (called identifiers)
-   are stored case-sensitive, meaning you must use double-quotes when
-   referencing the names in a query. Some interfaces, like pgAdmin,
-   automatically double-quote identifiers during table creation. So, for
-   identifiers to be recognized, you must either:
-     * Avoid double-quoting identifiers when creating tables
-     * Use only lowercase characters in identifiers
-     * Double-quote identifiers when referencing them in queries
diff --git a/doc/FAQ_DEV b/doc/FAQ_DEV
deleted file mode 100644 (file)
index 3f2070a..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-The developer FAQ can be found on the PostgreSQL wiki:
-
-  http://wiki.postgresql.org/wiki/Development_information
diff --git a/doc/src/FAQ/FAQ.html b/doc/src/FAQ/FAQ.html
deleted file mode 100644 (file)
index 2a5ad21..0000000
+++ /dev/null
@@ -1,1139 +0,0 @@
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<HTML>
-  <HEAD>
-    <META name="generator" content="HTML Tidy, see www.w3.org">
-    <META http-equiv="Content-Type" content="text/html; charset=US-ASCII">
-    <TITLE>PostgreSQL FAQ</TITLE>
-  </HEAD>
-
-  <BODY bgcolor="#ffffff" text="#000000" link="#ff0000" vlink="#a00000"
-  alink="#0000ff">
-    <H1>Frequently Asked Questions (FAQ) for PostgreSQL</H1>
-
-    <P>Last updated: Tue Sep 23 16:19:49 EDT 2008</P>
-
-    <P>Current maintainer: Bruce Momjian (<A href=
-    "mailto:bruce@momjian.us">bruce@momjian.us</A>)
-    </P>
-
-    <P>The most recent version of this document can be viewed at <A href=
-    "http://www.postgresql.org/files/documentation/faqs/FAQ.html">
-    http://www.postgresql.org/files/documentation/faqs/FAQ.html</A>.</P>
-
-    <P>Platform-specific questions are answered at <A href=
-    "http://www.postgresql.org/docs/faq/">
-    http://www.postgresql.org/docs/faq/</A>.</P>
-    <HR>
-
-    <H2 align="center">General Questions</H2>
-     <A href="#item1.1">1.1</A>) What is PostgreSQL? How is it pronounced?
-     What is Postgres?<BR>
-     <A href="#item1.2">1.2</A>) Who controls PostgreSQL?<BR>
-     <A href="#item1.3">1.3</A>) What is the copyright of PostgreSQL?<BR>
-     <A href="#item1.4">1.4</A>) What platforms does PostgreSQL support?<BR>
-     <A href="#item1.5">1.5</A>) Where can I get PostgreSQL?<BR>
-     <A href="#item1.6">1.6</A>) What is the most recent release?<BR>
-     <A href="#item1.7">1.7</A>) Where can I get support?<BR>
-     <A href="#item1.8">1.8</A>) How do I submit a bug report?<BR>
-     <A href="#item1.9">1.9</A>) How do I find out about known bugs or
-     missing features?<BR>
-     <A href="#item1.10">1.10</A>) What documentation is available?<BR>
-     <A href="#item1.11">1.11</A>) How can I learn <SMALL>SQL</SMALL>?<BR>
-     <A href="#item1.12">1.12</A>) How do I submit a patch or join the
-     development team?<BR>
-     <A href="#item1.13">1.13</A>) How does PostgreSQL compare to other
-     <SMALL>DBMS</SMALL>s?  Can PostgreSQL be embedded?<BR>
-     <A href="#item1.14">1.14</A>) Will PostgreSQL handle recent daylight
-     saving time changes in various countries?<BR>
-     <A href="#item1.15">1.15</A>) How do I unsubscribe from the
-     PostgreSQL email lists?  How do I avoid receiving duplicate emails?<BR>
-
-
-    <H2 align="center">User Client Questions</H2>
-    <A href="#item2.1">2.1</A>) What interfaces are available for
-    PostgreSQL?<BR>
-     <A href="#item2.2">2.2</A>) What tools are available for using
-    PostgreSQL with Web pages?<BR>
-     <A href="#item2.3">2.3</A>) Does PostgreSQL have a graphical user
-    interface?<BR>
-
-
-    <H2 align="center">Administrative Questions</H2>
-    <A href="#item3.1">3.1</A>) How do I install PostgreSQL somewhere other
-    than <I>/usr/local/pgsql</I>?<BR>
-     <A href="#item3.2">3.2</A>) How do I control connections from other
-    hosts?<BR>
-     <A href="#item3.3">3.3</A>) How do I tune the database engine for
-    better performance?<BR>
-     <A href="#item3.4">3.4</A>) What debugging features are available?<BR>
-     <A href="#item3.5">3.5</A>) Why do I get <I>"Sorry, too many
-    clients"</I> when trying to connect?<BR>
-     <A href="#item3.6">3.6</A>  What is the upgrade process for PostgreSQL?<BR>
-     <A href="#item3.7">3.7</A>) What computer hardware should I use?<BR>
-
-
-    <H2 align="center">Operational Questions</H2>
-     <A href="#item4.1">4.1</A>) How do I <SMALL>SELECT</SMALL> only the
-    first few rows of a query?  A random row?<BR>
-     <A href="#item4.2">4.2</A>) How do I find out what tables, indexes,
-    databases, and users are defined?  How do I see the queries used
-    by <I>psql</I> to display them?<BR>
-     <A href="#item4.3">4.3</A>) How do you change a column's data type?<BR>
-     <A href="#item4.4">4.4</A>) What is the maximum size for a row, a
-    table, and a database?<BR>
-     <A href="#item4.5">4.5</A>) How much database disk space is required
-    to store data from a typical text file?<BR>
-     <A href="#item4.6">4.6</A>) Why are my queries slow?  Why don't they
-    use my indexes?<BR>
-     <A href="#item4.7">4.7</A>) How do I see how the query optimizer is
-    evaluating my query?<BR>
-     <A href="#item4.8">4.8</A>) How do I perform regular expression
-    searches and case-insensitive regular expression searches? How do I
-    use an index for case-insensitive searches?<BR>
-     <A href="#item4.9">4.9</A>) In a query, how do I detect if a field
-    is <SMALL>NULL</SMALL>?  How do I concatenate possible <SMALL>NULL</SMALL>s?
-    How can I sort on whether a field is <SMALL> NULL</SMALL> or not?<BR>
-     <A href="#item4.10">4.10</A>) What is the difference between the
-    various character types?<BR>
-     <A href="#item4.11.1">4.11.1</A>) How do I create a
-    serial/auto-incrementing field?<BR>
-     <A href="#item4.11.2">4.11.2</A>) How do I get the value of a
-    <SMALL>SERIAL</SMALL> insert?<BR>
-     <A href="#item4.11.3">4.11.3</A>) Doesn't <I>currval()</I>
-    lead to a race condition with other users?<BR>
-     <A href="#item4.11.4">4.11.4</A>) Why aren't my sequence numbers
-    reused on transaction abort? Why are there gaps in the numbering of
-    my sequence/SERIAL column?<BR>
-     <A href="#item4.12">4.12</A>) What is an <SMALL>OID</SMALL>? What is a
-    <SMALL>CTID</SMALL>?<BR>
-     <A href="#item4.13">4.13</A>) Why do I get the error <I>"ERROR: Memory
-    exhausted in AllocSetAlloc()"</I>?<BR>
-     <A href="#item4.14">4.14</A>) How do I tell what PostgreSQL version I
-    am running?<BR>
-     <A href="#item4.15">4.15</A>) How do I create a column that will
-    default to the current time?<BR>
-     <A href="#item4.16">4.16</A>) How do I perform an outer join?<BR>
-     <A href="#item4.17">4.17</A>) How do I perform queries using multiple
-    databases?<BR>
-     <A href="#item4.18">4.18</A>) How do I return multiple rows or columns
-    from a function?<BR>
-     <A href="#item4.19">4.19</A>) Why do I get "relation with OID #####
-    does not exist" errors when accessing temporary tables in PL/PgSQL
-    functions?<BR>
-     <A href="#item4.20">4.20</A>) What replication solutions are available?<BR>
-     <A href="#item4.21">4.21</A>) Why are my table and column names not
-    recognized in my query?  Why is capitalization not preserved?<BR>
-
-
-    <HR>
-
-    <H2 align="center">General Questions</H2>
-
-    <H3 id="item1.1">1.1) What is PostgreSQL? How is it pronounced? What is Postgres?</H3>
-
-    <P>PostgreSQL is pronounced <I>Post-Gres-Q-L</I>.  (For those curious
-    about how to say "PostgreSQL", an <a
-    href="http://www.postgresql.org/files/postgresql.mp3">audio file</a>
-    is available.)</P>
-
-    <P>PostgreSQL is an object-relational database system that has the
-    features of traditional commercial database systems with
-    enhancements to be found in next-generation <SMALL>DBMS</SMALL>
-    systems. PostgreSQL is free and the complete source code is
-    available.</P>
-
-    <P>PostgreSQL development is performed by a team of mostly volunteer
-    developers spread throughout the world and communicating via the
-    Internet. It is a community project and is not controlled by any
-    company. To get involved, see the developer's FAQ at <A href=
-    "http://www.postgresql.org/docs/faqs.FAQ_DEV.html">
-    http://www.postgresql.org/docs/faqs.FAQ_DEV.html</A>
-    </P>
-
-    <P>Postgres is a widely-used nickname for PostgreSQL.  It was the
-    original name of the project at Berkeley and is strongly preferred
-    over other nicknames. If you find 'PostgreSQL' hard to pronounce, call
-    it 'Postgres' instead.</P>
-
-    <H3 id="item1.2">1.2) Who controls PostgreSQL?<BR></H3>
-
-    <P>If you are looking for a PostgreSQL gatekeeper, central committee,
-    or controlling company, give up --- there isn't one.  We do have a
-    core committee and CVS committers, but these groups are more for
-    administrative purposes than control.  The project is directed by
-    the community of developers and users, which anyone can join.  All
-    you need to do is subscribe to the mailing lists and participate in the
-    discussions.   (See the <a href="http://wiki.postgresql.org/wiki/Developer_FAQ">
-    Developer's FAQ</A> for information on how to get involved in PostgreSQL
-    development.)</P>
-
-    <H3 id="item1.3">1.3) What is the copyright of
-    PostgreSQL?</H3>
-
-    <P>PostgreSQL is distributed under the classic BSD license.  Basically,
-    it allows users to do anything they want with the code, including
-    reselling binaries without the source code.  The only restriction is
-    that you not hold us legally liable for problems with the software.
-    There is also the requirement that this copyright appear in all copies
-    of the software.  Here is the actual BSD license we use:</P>
-
-    <P>PostgreSQL Data Base Management System</P>
-
-    <P>Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group
-    Portions Copyright (c) 1994-1996 Regents of the University of California</P>
-
-    <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>
-
-    <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>
-
-    <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 id="item1.4">1.4) What platforms does PostgreSQL support?</H3>
-
-    <P>In general, any modern Unix-compatible platform should be able to
-    run PostgreSQL. The platforms that had received explicit testing at
-    the time of release are listed in the installation
-    instructions.</P>
-
-    <P>PostgreSQL also runs natively on Microsoft Windows NT-based operating
-    systems like Win2000 SP4, WinXP, and Win2003.  A prepackaged installer is
-    available at <a href= "http://www.postgresql.org/download/windows">
-    http://www.postgresql.org/download/windows</a>.  MSDOS-based versions
-    of Windows (Win95, Win98, WinMe) can run PostgreSQL using Cygwin.</P>
-
-    <p>There is also a Novell Netware 6 port at
-    <a href="http://developer.novell.com/wiki/index.php/Postgresql">http://developer.novell.com/wiki/index.php/Postgresql</a>,
-    and an OS/2 (eComStation) version at <a href=
-    "http://hobbes.nmsu.edu/cgi-bin/h-search?sh=1&amp;button=Search&amp;key=postgreSQL&amp;stype=all&amp;sort=type&amp;dir=%2F">
-    http://hobbes.nmsu.edu/cgi-bin/h-search?sh=1&amp;button=Search&amp;key=postgreSQL&amp;stype=all&amp;sort=type&amp;dir=%2F</a>.</p>
-
-    <H3 id="item1.5">1.5) Where can I get PostgreSQL?</H3>
-
-    <P>Via web browser, use <a href="http://www.postgresql.org/ftp/">
-    http://www.postgresql.org/ftp/</a>, and via ftp, use
-    <A href="ftp://ftp.postgresql.org/pub/">
-    ftp://ftp.postgresql.org/pub/</A>.</P>
-
-    <H3 id="item1.6">1.6) What is the most recent release?</H3>
-
-    <P>The latest release of PostgreSQL is version 8.3.3.</P>
-
-    <P>We plan to have a major release every year, with minor releases
-    every few months.</P>
-
-    <H3 id="item1.7">1.7) Where can I get support?</H3>
-
-    <P>The PostgreSQL community provides assistance to many of its users
-    via email.  The main web site to subscribe to the email lists is
-    <a href="http://www.postgresql.org/community/lists/">
-    http://www.postgresql.org/community/lists/</a>. The <I>general</I>
-    or <I>bugs</I> lists are a good place to start.</P>
-
-    <P>The major IRC channel is <I>#postgresql</I> on Freenode
-    (<I>irc.freenode.net</I>).  To connect you can use the Unix
-    program <CODE>irc -c '#postgresql' "$USER" irc.freenode.net</CODE>
-    or use any other IRC clients.  A Spanish one also exists
-    on the same network, (<I>#postgresql-es</I>), a French one,
-    (<I>#postgresqlfr</I>), and a Brazilian one, (<I>#postgresql-br</I>).
-    There is also a PostgreSQL channel on EFNet.</P>
-
-    <P>A list of commercial support companies is available at <A href=
-    "http://www.postgresql.org/support/professional_support">
-    http://www.postgresql.org/support/professional_support</A>.</P>
-
-    <H3 id="item1.8">1.8) How do I submit a bug report?</H3>
-
-    <P>Visit the PostgreSQL bug form at <A href=
-    "http://www.postgresql.org/support/submitbug">
-    http://www.postgresql.org/support/submitbug</A>.
-    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>
-
-    <P>Bugs submitted using the bug form or posted to any PostgreSQL mailing
-    list typically generates one of the following replies:</P>
-    <ul>
-    <li>It is not a bug, and why</li>
-    <li>It is a known bug and is already on the
-    <A href="http://www.postgresql.org/docs/faqs.TODO.html">TODO</A> list</li>
-    <li>The bug has been fixed in the current release</li>
-    <li>The bug has been fixed but is not packaged yet in an official 
-    release</li>
-    <li>A request is made for more detailed information:
-        <ul>
-       <li>Operating system</li>
-       <li>PostgreSQL version</li>
-       <li>Reproducible test case</li>
-       <li>Debugging information</li>
-       <li>Debugger backtrace output</li>
-       </ul>
-    </li>
-    <li>The bug is new.  The following might happen:
-        <ul>
-       <li>A patch is created and will be included in the next major 
-       or minor release</li>
-       <li>The bug cannot be fixed immediately and is added
-       to the <A href="http://www.postgresql.org/docs/faqs.TODO.html">TODO</A>
-        list</li>
-       </ul>
-    </li>
-    </ul>
-
-    <H3 id="item1.9">1.9) How do I find out about known bugs or
-    missing features?</H3>
-
-    <P>PostgreSQL supports an extended subset of <SMALL>SQL:2003</SMALL>.
-    See our <A href="http://www.postgresql.org/docs/faqs.TODO.html">TODO</A>
-    list for known bugs, missing features, and future plans.</P>
-
-    <P>A feature request usually results in one of the following
-    replies:</P>
-    <ul>
-    <li>The feature is already on the
-    <A href="http://www.postgresql.org/docs/faqs.TODO.html">TODO</A>
-    list</li>
-    <li>The feature is not desired because:
-        <ul>
-        <li>It duplicates existing functionality that already
-        follows the SQL standard</li>
-        <li>The feature would increase code complexity but add little
-        benefit</li>
-        <li>The feature would be insecure or unreliable</li>
-        </ul>
-    </li>
-    <li>The new feature is added to the
-    <A href="http://www.postgresql.org/docs/faqs.TODO.html">TODO</A> list</li>
-    </ul>
-
-    <P>PostgreSQL does not use a bug tracking system because we find
-    it more efficient to respond directly to email and keep the
-    <A href="http://www.postgresql.org/docs/faqs.TODO.html">TODO</A>
-    list up-to-date. In practice, bugs don't last very long in the
-    software, and bugs that affect a large number of users are fixed
-    rapidly. The only place to find all changes, improvements, and
-    fixes in a PostgreSQL release is to read the
-    <a href="http://www.postgresql.org/developer/sourcecode/">CVS</a>
-    log messages.  Even the release notes do not list every change
-    made to the software.</P>
-
-    <H3 id="item1.10">1.10) What documentation is available?</H3>
-
-    <P>PostgreSQL includes extensive documentation, including a large
-    manual, manual pages, and some test examples. See the <I>/doc</I>
-    directory. You can also browse the manuals online at <A href=
-    "http://www.postgresql.org/docs">http://www.postgresql.org/docs</A>.
-    </P>
-
-    <P>There are two PostgreSQL books available online at <A href=
-    "http://www.postgresql.org/docs/books/awbook.html">http://www.postgresql.org/docs/books/awbook.html</A>
-    and <A href=
-    "http://www.commandprompt.com/ppbook/">http://www.commandprompt.com/ppbook/</A>.
-    There are a number of PostgreSQL books available for purchase.  One
-    of the most popular ones is by Korry Douglas.  A list of book reviews
-    can be found at <A href=
-    "http://www.postgresql.org/docs/books/">http://www.postgresql.org/docs/books/</A>.
-    There is also a collection of PostgreSQL technical articles at <A
-    href=
-    "http://wiki.postgresql.org/wiki/Community_Generated_Articles%2C_Guides%2C_and_Documentation">http://wiki.postgresql.org/wiki/Community_Generated_Articles%2C_Guides%2C_and_Documentation</A>.</P>
-
-    <P>The command line client program <I>psql</I> has some \d commands to show
-    information about types, operators, functions, aggregates, etc. - use \? to 
-    display the available commands.</P>
-
-    <P>Our web site contains even more documentation.</P>
-
-    <H3 id="item1.11">1.11) How can I learn
-    <SMALL>SQL</SMALL>?</H3>
-
-    <P>First, consider the PostgreSQL-specific books mentioned above.
-    Many of our users also like <I>The Practical SQL Handbook</I>,
-    Bowman, Judith S., et al., Addison-Wesley. Others like <I>The
-    Complete Reference SQL</I>, Groff et al., McGraw-Hill.</P>
-
-    <P>There are also many nice tutorials available online:
-    <UL>
-    <LI> <A href="http://www.intermedia.net/support/sql/sqltut.shtm">http://www.intermedia.net/support/sql/sqltut.shtm</A>
-    </LI>
-    <LI>
-    <A href="http://sqlcourse.com/">http://sqlcourse.com</A>
-    </LI>
-    <LI>
-    <A href="http://www.w3schools.com/sql/default.asp">http://www.w3schools.com/sql/default.asp</A>
-    </LI>
-    <LI><A href=
-    "http://mysite.verizon.net/Graeme_Birchall/id1.html">http://mysite.verizon.net/Graeme_Birchall/id1.html</A>
-    </LI>
-    <LI><A href=
-    "http://sqlzoo.net">http://sqlzoo.net</A>
-    </LI>
-    </UL>
-
-    <H3 id="item1.12">1.12) How do I submit a patch or join the development
-    team?</H3>
-
-    <P>See the <a href="http://www.postgresql.org/docs/faqs.FAQ_DEV.html">
-    Developer's FAQ</A>.</P>
-
-    <H3 id="item1.13">1.13) How does PostgreSQL compare to other
-    <SMALL>DBMS</SMALL>s?  Can PostgreSQL be embedded?</H3>
-
-    <P>There are several ways of measuring software: features,
-    performance, reliability, support, and price.</P>
-
-    <DL>
-      <DT><B>Features</B></DT>
-
-      <DD>PostgreSQL has most features present in large commercial
-      <SMALL>DBMS</SMALL>s, like transactions, subselects, triggers,
-      views, foreign key referential integrity, and sophisticated
-      locking. We have some features they do not have, like
-      user-defined types, inheritance, rules, and multi-version
-      concurrency control to reduce lock contention.<BR>
-      <BR>
-      </DD>
-
-      <DT><B>Performance</B></DT>
-
-      <DD>PostgreSQL's performance is comparable to other commercial and
-      open source databases. It is faster for some things, slower for
-      others.  Our performance is usually +/-10% compared to other databases.
-      <BR>
-      </DD>
-
-      <DT><B>Reliability</B></DT>
-
-      <DD>We realize that a <SMALL>DBMS</SMALL> must be reliable, or it
-      is worthless. We strive to release well-tested, stable code that
-      has a minimum of bugs. Each release has at least one month of
-      beta testing, and our release history shows that we can provide
-      stable, solid releases that are ready for production use. We
-      believe we compare favorably to other database software in this
-      area.<BR>
-      <BR>
-      </DD>
-
-      <DT><B>Support</B></DT>
-
-      <DD>Our mailing lists provide contact with a large group of developers
-      and users to help resolve any problems encountered. While we cannot
-      guarantee a fix, commercial <SMALL>DBMS</SMALL>s do not always
-      supply a fix either. Direct access to developers, the user
-      community, manuals, and the source code often make PostgreSQL
-      support superior to other <SMALL>DBMS</SMALL>s. There is
-      commercial per-incident support available for those who need it.
-      (See <A href="#item1.7">FAQ section 1.7</A>.)<BR>
-      <BR>
-      </DD>
-
-      <DT><B>Price</B></DT>
-
-      <DD>We are free for all use, both commercial and non-commercial.
-      You can add our code to your product with no limitations, except
-      those outlined in our BSD-style license stated above.<BR>
-      <BR>
-      </DD>
-    </DL>
-
-    <P>PostgreSQL is designed as a client/server architecture, which
-    requires separate processes for each client and server, and various
-    helper processes.  Many embedded architectures can support such
-    requirements.  However, if your embedded architecture requires the
-    database server to run inside the application process, you cannot use
-    Postgres and should select a lighter-weight database solution.</P>
-    
-    <H3 id="item1.14">1.14) Will PostgreSQL handle recent daylight
-    saving time changes in various countries?</H3>
-
-    <P>USA daylight saving time changes are included in PostgreSQL release
-    8.0.[4+], and all later major releases, e.g. 8.1.  Canada and Western
-    Australia changes are included in 8.0.[10+], 8.1.[6+], and all later
-    major releases.  PostgreSQL releases prior to 8.0 use the operating
-    system's timezone database for daylight saving information.</P>
-
-    <H3 id="item1.15">1.15) How do I unsubscribe from the
-    PostgreSQL email lists?  How do I avoid receiving duplicate emails?</H3>
-
-    <P>The PostgreSQL <a
-    href="http://mail.postgresql.org/mj/mj_wwwusr/domain=postgresql.org?user=&amp;passw=&amp;func=login">Majordomo</a>
-    page allows subscribing or unsubscribing from any of the PostgreSQL
-    email lists.  (You might need to have your Majordomo password emailed
-    to you to log in.)</P>
-
-    <P>All PostgreSQL email lists are configured so a group reply goes to
-    the email list <I>and</I> the original email author.  This is done so
-    users receive the quickest possible email replies.  If you would prefer
-    not to receive  duplicate email from the list in cases where you already
-    receive an email directly, check <I>eliminatecc</I> from the Majordomo
-    <I>Change Settings</I> page.  You can also prevent yourself from
-    receiving copies of emails you post to the lists by unchecking
-    <I>selfcopy</I>.</P>
-
-
-    <HR>
-
-    <H2 align="center">User Client Questions</H2>
-
-    <H3 id="item2.1">2.1) What interfaces are available for
-    PostgreSQL?</H3>
-
-    <P>The PostgreSQL install includes only the <SMALL>C</SMALL> and embedded
-    <SMALL>C</SMALL> interfaces.  All other interfaces are independent projects
-    that are downloaded separately;  being separate allows them to have their
-    own release schedule and development teams.</P>
-
-    <P>Some programming languages like <SMALL>PHP</SMALL> include an
-    interface to PostgreSQL. Interfaces for languages like Perl,
-    <SMALL>TCL</SMALL>, Python, and many others are available at
-    <a href="http://pgfoundry.org">http://pgfoundry.org</A>.</P>
-
-    <H3 id="item2.2">2.2) What tools are available for using
-    PostgreSQL with Web pages?</H3>
-
-    <P>A nice introduction to Database-backed Web pages can be seen at:
-    <A href="http://www.webreview.com">http://www.webreview.com</A></P>
-
-    <P>For Web integration, PHP (<A
-    href="http://www.php.net">http://www.php.net</A>) is an excellent
-    interface.</P>
-
-    <P>For complex cases, many use the Perl and DBD::Pg with CGI.pm or
-    mod_perl.</P>
-
-    <H3 id="item2.3">2.3) Does PostgreSQL have a graphical user
-    interface?</H3>
-
-    <P>There are a large number of GUI Tools that are available for PostgreSQL
-    from both commercial and open source developers. A detailed list can be
-    found in the <A href="http://wiki.postgresql.org/wiki/Community_Guide_to_PostgreSQL_GUI_Tools">
-    Community Guide to PostgreSQL GUI Tools</A>.</P>
-
-    <HR>
-
-
-    <H2 align="center">Administrative Questions</H2>
-
-    <H3 id="item3.1">3.1) How do I install PostgreSQL somewhere
-    other than <I>/usr/local/pgsql</I>?</H3>
-
-    <P>Specify the <I>--prefix</I> option when running
-    <I>configure</I>.</P>
-
-    <H3 id="item3.2">3.2) How do I control connections from other
-    hosts?</H3>
-
-    <P>By default, PostgreSQL only allows connections from the local
-    machine using Unix domain sockets or TCP/IP connections. Other
-    machines will not be able to connect unless you modify
-    <I>listen_addresses</I> in the <I>postgresql.conf</I> file, enable
-    host-based authentication by modifying the
-    <I>$PGDATA/pg_hba.conf</I> file, and restart the database server.</P>
-
-    <H3 id="item3.3">3.3) How do I tune the database engine for
-    better performance?</H3>
-
-    <P>There are three major areas for potential performance
-    improvement:</P>
-
-    <DL>
-    <DT><B>Query Changes</B></DT>
-
-    <DD>This involves modifying queries to obtain better
-    performance:
-    <ul>
-    <li>Creation of indexes, including expression and partial
-    indexes</li>
-    <li>Use of COPY instead of multiple <SMALL>INSERT</SMALL>s</li>
-    <li>Grouping of multiple statements into a single transaction to
-    reduce commit overhead</li>
-    <li>Use of <SMALL>CLUSTER</SMALL> when retrieving many rows from an
-    index</li>
-    <li>Use of <SMALL>LIMIT</SMALL> for returning a subset of a query's
-    output</li>
-    <li>Use of Prepared queries</li>
-    <li>Use of <SMALL>ANALYZE</SMALL> to maintain accurate optimizer
-    statistics</li>
-    <li>Regular use of <SMALL>VACUUM</SMALL> or <I>pg_autovacuum</I></li>
-    <li>Dropping of indexes during large data changes</li>
-    </ul><BR>
-    <BR>
-    </DD>
-
-    <DT><B>Server Configuration</B></DT>
-
-    <DD>A number of <I>postgresql.conf</I> settings affect performance.
-    For more details, see <a href=
-    "http://www.postgresql.org/docs/current/static/runtime-config.html">
-    Administration Guide/Server Run-time Environment/Run-time
-    Configuration</a> for a full listing, and for commentary see <a
-    href="http://www.varlena.com/varlena/GeneralBits/Tidbits/annotated_conf_e.html">
-    http://www.varlena.com/varlena/GeneralBits/Tidbits/annotated_conf_e.html</a>
-    and <a href="http://www.varlena.com/varlena/GeneralBits/Tidbits/perf.html">
-    http://www.varlena.com/varlena/GeneralBits/Tidbits/perf.html</a>.
-    <BR>
-    <BR>
-    </DD>
-
-    <DT><B>Hardware Selection</B></DT>
-
-    <DD>The effect of hardware on performance is detailed in
-    <a href="http://www.powerpostgresql.com/PerfList/">
-    http://www.powerpostgresql.com/PerfList/</a> and <a
-    href="http://momjian.us/main/writings/pgsql/hw_performance/index.html">
-    http://momjian.us/main/writings/pgsql/hw_performance/index.html</a>.
-    <BR>
-    <BR>
-    </DD>
-    </DL>
-
-    <H3 id="item3.4">3.4) What debugging features are
-    available?</H3>
-
-    <P>There are many <CODE>log_*</CODE> server configuration
-    variables at <a
-    href="http://www.postgresql.org/docs/current/interactive/runtime-config-logging.html">http://www.postgresql.org/docs/current/interactive/runtime-config-logging.html</a>
-    that enable printing of query and process statistics which
-    can be very useful for debugging and performance measurements.</P>
-
-    <H3 id="item3.5">3.5) Why do I get <I>"Sorry, too many
-    clients"</I> when trying to connect?</H3>
-
-    <P>You have reached the default limit of 100 database sessions. You
-    need to increase the server's limit on how many
-    concurrent backend processes it can start by changing the
-    <I>max_connections</I> value in <I>postgresql.conf</I> and
-    restarting the server.</P>
-
-    <H3 id="item3.6">3.6) What is the upgrade process for PostgreSQL?</H3>
-
-    <P>See <a
-    href="http://www.postgresql.org/support/versioning">http://www.postgresql.org/support/versioning</a>
-    for a general discussion about upgrading, and <a href=
-    "http://www.postgresql.org/docs/current/static/install-upgrading.html">
-    http://www.postgresql.org/docs/current/static/install-upgrading.html</a>
-    for specific instructions.</P>
-
-    <H3 id="item3.7">3.7) What computer hardware should I use?</H3>
-
-    <P>Because PC hardware is mostly compatible, people tend to believe that
-    all PC hardware is of equal quality.  It is not.  ECC RAM, SCSI, and
-    quality motherboards are more reliable and have better performance than
-    less expensive hardware.  PostgreSQL will run on almost any hardware,
-    but if reliability and performance are important it is wise to
-    research your hardware options thoroughly.  A disk controller with a
-    battery-backed cache is also useful.  Our email lists can be used
-    to discuss hardware options and tradeoffs.</P>
-  
-    <HR>
-
-    <H2 align="center">Operational Questions</H2>
-
-    <H3 id="item4.1">4.1) How do I <SMALL>SELECT</SMALL> only the
-    first few rows of a query?  A random row?</H3>
-
-    <P>To retrieve only a few rows, if you know at the number of rows
-    needed at the time of the <SMALL>SELECT</SMALL> use
-    <SMALL>LIMIT</SMALL> . If an index matches the <SMALL>ORDER
-    BY</SMALL> it is possible the entire query does not have to be
-    executed. If you don't know the number of rows at
-    <SMALL>SELECT</SMALL> time, use a cursor and
-    <SMALL>FETCH</SMALL>.</P>
-
-    <P>To <SMALL>SELECT</SMALL> a random row, use:</P>
-<PRE>
-    SELECT col
-    FROM tab
-    ORDER BY random()
-    LIMIT 1;
-</PRE>
-
-    <H3 id="item4.2">4.2) How do I find out what tables, indexes,
-    databases, and users are defined?  How do I see the queries used
-    by <I>psql</I> to display them?</H3>
-
-    <P>Use the \dt command to see tables in <I>psql</I>. For a complete list of
-    commands inside psql you can use \?. Alternatively you can read the source 
-    code for <I>psql</I> in file <I>pgsql/src/bin/psql/describe.c</I>, it 
-    contains <SMALL>SQL</SMALL> commands that generate the output for 
-    <I>psql</I>'s backslash commands. You can also start <I>psql</I> with the
-    <I>-E</I> option so it will print out the queries it uses to execute the 
-    commands you give. PostgreSQL also provides an <SMALL>SQL</SMALL> compliant
-    INFORMATION SCHEMA interface you can query to get information about the
-    database.</P>
-
-    <P>There are also system tables beginning with <I>pg_</I> that describe
-    these too.</P>
-
-    <P>Use <I>psql -l</I> will list all databases.</P>
-
-    <P>Also try the file <I>pgsql/src/tutorial/syscat.source</I>. It
-    illustrates many of the <SMALL>SELECT</SMALL>s needed to get
-    information from the database system tables.</P>
-
-    <H3 id="item4.3">4.3) How do you change a column's data type?</H3>
-
-    <P>Changing the data type of a column can be done easily in 8.0
-    and later with <SMALL>ALTER TABLE ALTER COLUMN TYPE</SMALL>.</P>
-
-    <P>In earlier releases, do this:</P>
-<PRE>
-    BEGIN;
-    ALTER TABLE tab ADD COLUMN new_col <i>new_data_type</i>;
-    UPDATE tab SET new_col = CAST(old_col AS <i>new_data_type</i>);
-    ALTER TABLE tab DROP COLUMN old_col;
-    COMMIT;
-</PRE>
-    <P>You might then want to do <I>VACUUM FULL tab</I> to reclaim the
-    disk space used by the expired rows.</P>
-
-    <H3 id="item4.4">4.4) What is the maximum size for a row, a
-    table, and a database?</H3>
-
-    <P>These are the limits:</P>
-<BLOCKQUOTE>
-<TABLE>
-<TR><TD>Maximum size for a database?</TD><TD>unlimited (32 TB databases
-exist)</TD></TR>
-<TR><TD>Maximum size for a table?</TD><TD>32 TB</TD></TR>
-<TR><TD>Maximum size for a row?</TD><TD>400 GB</TD></TR>
-<TR><TD>Maximum size for a field?</TD><TD>1 GB</TD></TR>
-<TR><TD>Maximum number of rows in a table?</TD><TD>unlimited</TD></TR>
-<TR><TD>Maximum number of columns in a table?</TD><TD>250-1600 depending
-on column types</TD></TR>
-<TR><TD>Maximum number of indexes on a
-table?</TD><TD>unlimited</TD></TR>
-</TABLE>
-</BLOCKQUOTE>
-
-    <P>Of course, these are not actually unlimited, but limited to
-    available disk space and memory/swap space. Performance may suffer
-    when these values get unusually large.</P>
-
-    <P>The maximum table size of 32 TB does not require large file
-    support from the operating system. Large tables are stored as
-    multiple 1 GB files so file system size limits are not
-    important.</P>
-
-    <P>The maximum table size, row size, and maximum number of columns
-    can be quadrupled by increasing the default block size to 32k.  The
-    maximum table size can also be increased using table partitioning.</P>
-
-    <P>One limitation is that indexes can not be created on columns
-    longer than about 2,000 characters. Fortunately, such indexes are
-    rarely needed. Uniqueness is best guaranteed by a function index
-    of an MD5 hash of the long column, and full text indexing
-    allows for searching of words within the column.</P>
-
-    <H3 id="item4.5">4.5) How much database disk space is required
-    to store data from a typical text file?</H3>
-
-    <P>A PostgreSQL database may require up to five times the disk
-    space to store data from a text file.</P>
-
-    <P>As an example, consider a file of 100,000 lines with an integer
-    and text description on each line. Suppose the text string
-    avergages twenty bytes in length. The flat file would be 2.8 MB.
-    The size of the PostgreSQL database file containing this data can
-    be estimated as 5.2 MB:</P>
-<PRE>
-    24 bytes: each row header (approximate)
-    24 bytes: one int field and one text field
-   + 4 bytes: pointer on page to tuple
-   ----------------------------------------
-    52 bytes per row
-
-   The data page size in PostgreSQL is 8192 bytes (8 KB), so:
-
-   8192 bytes per page
-   -------------------   =  158 rows per database page (rounded down)
-     52 bytes per row
-
-   100000 data rows
-   --------------------  =  633 database pages (rounded up)
-      158 rows per page
-
-633 database pages * 8192 bytes per page  =  5,185,536 bytes (5.2 MB)
-</PRE>
-
-    <P>Indexes do not require as much overhead, but do contain the data
-    that is being indexed, so they can be large also.</P>
-
-    <P><SMALL>NULL</SMALL>s are stored as bitmaps, so they
-    use very little space.</P>
-
-    <H3 id="item4.6">4.6) Why are my queries slow?  Why don't they
-    use my indexes?</H3>
-
-    <P>Indexes are not used by every query. Indexes are used only if the
-    table is larger than a minimum size, and the query selects only a
-    small percentage of the rows in the table. This is because the random
-    disk access caused by an index scan can be slower than a straight read
-    through the table, or sequential scan. </P>
-
-    <P>To determine if an index should be used, PostgreSQL must have
-    statistics about the table. These statistics are collected using
-    <SMALL>VACUUM ANALYZE</SMALL>, or simply <SMALL>ANALYZE</SMALL>.
-    Using statistics, the optimizer knows how many rows are in the
-    table, and can better determine if indexes should be used.
-    Statistics are also valuable in determining optimal join order and
-    join methods. Statistics collection should be performed
-    periodically as the contents of the table change.</P>
-
-    <P>Indexes are normally not used for <SMALL>ORDER BY</SMALL> or to
-    perform joins. A sequential scan followed by an explicit sort is
-    usually faster than an index scan of a large table.
-    However, <SMALL>LIMIT</SMALL> combined with <SMALL>ORDER BY</SMALL>
-    often will use an index because only a small portion of the table
-    is returned.</P>
-
-    <P>If you believe the optimizer is incorrect in choosing a
-    sequential scan, use <CODE>SET enable_seqscan TO 'off'</CODE> and
-    run query again to see if an index scan is indeed faster.</P>
-
-    <P>When using wild-card operators such as <SMALL>LIKE</SMALL> or
-    <I>~</I>, indexes can only be used in certain circumstances:</P>
-    <UL>
-    <LI>The beginning of the search string must be anchored to the start
-    of the string, i.e.
-    <UL>
-    <LI><SMALL>LIKE</SMALL> patterns must not start with <I>%</I>.</LI>
-    <LI><I>~</I> (regular expression) patterns must start with
-    <I>^</I>.</LI>
-    </UL></LI>
-    <LI>The search string can not start with a character class,
-    e.g. [a-e].</LI>
-    <LI>Case-insensitive searches such as <SMALL>ILIKE</SMALL> and
-    <I>~*</I> do not utilize indexes. Instead, use expression
-    indexes, which are described in section <a href="#item4.8">4.8</a>.</LI>
-    <LI>The default <I>C</I> locale must be used during
-    <i>initdb</i> because it is not possible to know the next-greatest
-    character in a non-C locale.  You can create a special
-    <CODE>text_pattern_ops</CODE> index for such cases that work only
-    for <SMALL>LIKE</SMALL> indexing.  It is also possible to use
-    full text indexing for word searches.
-    </LI>
-    </UL>
-
-    <H3 id="item4.7">4.7) How do I see how the query optimizer is
-    evaluating my query?</H3>
-
-    <P>See the <SMALL>EXPLAIN</SMALL> manual page.</P>
-
-    <H3 id="item4.8">4.8) How do I perform regular expression
-    searches and case-insensitive regular expression searches? How do I
-    use an index for case-insensitive searches?</H3>
-
-    <P>The <I>~</I> operator does regular expression matching, and
-    <I>~*</I> does case-insensitive regular expression matching. The
-    case-insensitive variant of <SMALL>LIKE</SMALL> is called
-    <SMALL>ILIKE</SMALL>.</P>
-
-    <P>Case-insensitive equality comparisons are normally expressed
-    as:</P>
-<PRE>
-    SELECT *
-    FROM tab
-    WHERE lower(col) = 'abc';
-</PRE>
-    This will not use an standard index. However, if you create an
-    expression index, it will be used: 
-<PRE>
-    CREATE INDEX tabindex ON tab (lower(col));
-</PRE>
-    <P>If the above index is created as <SMALL>UNIQUE</SMALL>, though
-    the column can store upper and lowercase characters, it can not have
-    identical values that differ only in case. To force a particular
-    case to be stored in the column, use a <SMALL>CHECK</SMALL>
-    constraint or a trigger.</P>
-
-    <H3 id="item4.9">4.9) In a query, how do I detect if a field
-    is <SMALL>NULL</SMALL>?  How do I concatenate possible <SMALL>NULL</SMALL>s?
-    How can I sort on whether a field is <SMALL> NULL</SMALL> or not?</H3>
-
-    <P>You test the column with <SMALL>IS NULL</SMALL> and <SMALL>IS
-    NOT NULL</SMALL>, like this:</P>
-
-<PRE>
-   SELECT *
-   FROM tab
-   WHERE col IS NULL;
-</PRE>
-
-   <P>To concatentate with possible <SMALL>NULL</SMALL>s, use <I>COALESCE()</I>,
-   like this:</P>
-<PRE>
-   SELECT COALESCE(col1, '') || COALESCE(col2, '')
-   FROM tab
-</PRE>
-
-   <P>To sort by the <SMALL>NULL</SMALL> status, use the <SMALL>IS NULL</SMALL>
-   and <SMALL>IS NOT NULL</SMALL> modifiers in your <SMALL>ORDER BY</SMALL> clause.
-   Things that are <I>true</I> will sort higher than things that are <I>false</I>,
-   so the following will put NULL entries at the top of the resulting list:</P>
-
-<PRE>
-   SELECT *
-   FROM tab
-   ORDER BY (col IS NOT NULL)
-</PRE>
-
-    <H3 id="item4.10">4.10) What is the difference between the
-    various character types?</H3>
-<BLOCKQUOTE>
-<TABLE>
-<TR><TH>Type</TH><TH>Internal Name</TH><TH>Notes</TH></TR>
-<TR><TD>VARCHAR(n)</TD><TD>varchar</TD><TD>size specifies maximum
-length, no padding</TD></TR>
-<TR><TD>CHAR(n)</TD><TD>bpchar</TD><TD>blank padded to the specified
-fixed length</TD></TR>
-<TR><TD>TEXT</TD><TD>text</TD><TD>no specific upper limit on
-length</TD></TR>
-<TR><TD>BYTEA</TD><TD>bytea</TD><TD>variable-length byte array
-(null-byte safe)</TD></TR>
-<TR><TD>"char"</TD><TD>char</TD><TD>one character</TD></TR>
-</TABLE>
-</BLOCKQUOTE>
-
-    <P>You will see the internal name when examining system catalogs
-    and in some error messages.</P>
-
-    <P>The first four types above are "varlena" types (i.e., the first
-    four bytes on disk are the length, followed by the data). Thus the
-    actual space used is slightly greater than the declared size.
-    However, long values are also subject to compression, so the space
-    on disk might also be less than expected.</P>
-
-    <SMALL>VARCHAR(n)</SMALL> is best when storing variable-length
-    strings and it limits how long a string can be. <SMALL>TEXT</SMALL>
-    is for strings of unlimited length, with a maximum of one gigabyte.
-    <P><SMALL>CHAR(n)</SMALL> is for storing strings that are all the
-    same length. <SMALL>CHAR(n)</SMALL> pads with blanks to the specified
-    length, while <SMALL>VARCHAR(n)</SMALL> only stores the characters
-    supplied.  <SMALL>BYTEA</SMALL> is for storing binary data,
-    particularly values that include <SMALL>NULL</SMALL> bytes. All the
-    types described here have similar performance characteristics.</P>
-
-    <H3 id="item4.11.1">4.11.1) How do I create a
-    serial/auto-incrementing field?</H3>
-
-    <P>PostgreSQL supports a <SMALL>SERIAL</SMALL> data type. It
-    auto-creates a sequence.  For example, this:</P>
-<PRE>
-    CREATE TABLE person ( 
-        id   SERIAL, 
-        name TEXT 
-    );
-</PRE>
-
-    is automatically translated into this: 
-
-<PRE>
-    CREATE SEQUENCE person_id_seq;
-    CREATE TABLE person ( 
-        id   INT4 NOT NULL DEFAULT nextval('person_id_seq'),
-        name TEXT
-    );
-</PRE>
-
-    <P>Automatically created sequence are named
-    &lt;<I>table</I>&gt;_&lt;<I>serialcolumn</I>&gt;_<I>seq</I>, where
-    <I>table</I> and <I>serialcolumn</I> are the names of the table and
-    <SMALL>SERIAL</SMALL> column, respectively.  See the
-    <I>create_sequence</I> manual page for more information about
-    sequences.</P>
-
-    <H3 id="item4.11.2">4.11.2) How do I get the value of a
-    <SMALL>SERIAL</SMALL> insert?</H3>
-
-    <P>The simplest way is to retrieve the assigned <SMALL>SERIAL</SMALL>
-    value with <SMALL>RETURNING</SMALL>.  Using the example table in <A
-    href="#item4.11.1">4.11.1</A>, it would look like this:</P>
-
-<PRE>
-    INSERT INTO person (name) VALUES ('Blaise Pascal') RETURNING id;
-</PRE>
-
-    You can also call <I>nextval()</I> and use that value in the
-    <SMALL>INSERT</SMALL>, or call <I>currval()</I> <I>after</I> the
-    <SMALL>INSERT</SMALL>.
-    
-    <H3 id="item4.11.3">4.11.3) Doesn't <I>currval()</I>
-    lead to a race condition with other users?</H3>
-
-    <P>No. <I>currval()</I> returns the current value assigned by your
-    session, not by all sessions.</P>
-
-    <H3 id="item4.11.4">4.11.4) Why aren't my sequence numbers
-    reused on transaction abort? Why are there gaps in the numbering of
-    my sequence/SERIAL column?</H3>
-
-    <P>To improve concurrency, sequence values are given out to running
-    transactions as needed and are not locked until the transaction
-    completes. This causes gaps in numbering from aborted
-    transactions.</P>
-
-    <H3 id="item4.12">4.12) What is an <SMALL>OID</SMALL>? What is
-    a <SMALL>CTID</SMALL>?</H3>
-
-    <P>If a table is created <SMALL>WITH OIDS</SMALL>, each row
-    gets a unique a <SMALL>OID</SMALL>.  O<SMALL>ID</SMALL>s are
-    automatically assigned unique 4-byte integers that are unique
-    across the entire installation.  However, they overflow at 4
-    billion, and then the O<SMALL>ID</SMALL>s start being duplicated.
-    PostgreSQL uses <SMALL>OID</SMALL>s to link its internal system
-    tables together.</P>
-
-    <P>To uniquely number rows in user tables, it is best to use
-    <SMALL>SERIAL</SMALL> rather than O<SMALL>ID</SMALL>s because
-    <SMALL>SERIAL</SMALL> sequences are unique only within a single
-    table. and are therefore less likely to overflow.
-    <SMALL>SERIAL8</SMALL> is available for storing eight-byte sequence
-    values.</P>
-
-    <P>C<SMALL>TID</SMALL>s are used to identify specific physical rows
-    with block and offset values. C<SMALL>TID</SMALL>s change after rows
-    are modified or reloaded. They are used by index entries to point
-    to physical rows.</P>
-
-    <H3 id="item4.13">4.13) Why do I get the error <I>"ERROR:
-    Memory exhausted in AllocSetAlloc()"</I>?</H3>
-
-    <P>You probably have run out of virtual memory on your system,
-    or your kernel has a low limit for certain resources. Try this
-    before starting the server:</P>
-<PRE>
-    ulimit -d 262144
-    limit datasize 256m
-</PRE>
-
-    Depending on your shell, only one of these may succeed, but it will
-    set your process data segment limit much higher and perhaps allow
-    the query to complete. This command applies to the current process,
-    and all subprocesses created after the command is run. If you are
-    having a problem with the <SMALL>SQL</SMALL> client because the
-    backend is returning too much data, try it before starting the
-    client.
-
-    <H3 id="item4.14">4.14) How do I tell what PostgreSQL version
-    I am running?</H3>
-
-    <P>From <I>psql</I>, type <CODE>SELECT version();</CODE></P>
-
-    <H3 id="item4.15">4.15) How do I create a column that will
-    default to the current time?</H3>
-
-    <P>Use <I>CURRENT_TIMESTAMP</I>:</P>
-<PRE>
-    CREATE TABLE test (x int, modtime TIMESTAMP DEFAULT CURRENT_TIMESTAMP );
-</PRE>
-
-    <H3 id="item4.16">4.16) How do I perform an outer join?</H3>
-
-    <P>PostgreSQL supports outer joins using the SQL standard syntax.
-    Here are two examples:</P>
-<PRE>
-    SELECT *
-    FROM t1 LEFT OUTER JOIN t2 ON (t1.col = t2.col);
-</PRE>
-    or 
-<PRE>
-    SELECT *
-    FROM t1 LEFT OUTER JOIN t2 USING (col);
-</PRE>
-
-    <P>These identical queries join t1.col to t2.col, and also return
-    any unjoined rows in t1 (those with no match in t2). A
-    <SMALL>RIGHT</SMALL> join would add unjoined rows of t2. A
-    <SMALL>FULL</SMALL> join would return the matched rows plus all
-    unjoined rows from t1 and t2. The word <SMALL>OUTER</SMALL> is
-    optional and is assumed in <SMALL>LEFT</SMALL>,
-    <SMALL>RIGHT</SMALL>, and <SMALL>FULL</SMALL> joins. Ordinary joins
-    are called <SMALL>INNER</SMALL> joins.</P>
-
-    <H3 id="item4.17">4.17) How do I perform queries using
-    multiple databases?</H3>
-
-    <P>There is no way to query a database other than the current one.
-    Because PostgreSQL loads database-specific system catalogs, it is
-    uncertain how a cross-database query should even behave.</P>
-
-    <P><I>contrib/dblink</I> allows cross-database queries using
-    function calls. Of course, a client can also make simultaneous
-    connections to different databases and merge the results on the
-    client side.</P>
-
-    <H3 id="item4.18">4.18) How do I return multiple rows or
-    columns from a function?</H3>
-
-    <P>It is easy using set-returning functions, 
-    <a href="http://wiki.postgresql.org/wiki/Return_more_than_one_row_of_data_from_PL/pgSQL_functions">
-    http://wiki.postgresql.org/wiki/Return_more_than_one_row_of_data_from_PL/pgSQL_functions</a>.</P>
-
-    <H3 id="item4.19">4.19) Why do I get "relation with OID #####
-    does not exist" errors when accessing temporary tables in PL/PgSQL
-    functions?</H3>
-
-    <P>In PostgreSQL versions &lt; 8.3, PL/PgSQL caches function scripts, and
-    an unfortunate side effect is that if a PL/PgSQL function accesses a
-    temporary table, and that table is later dropped and recreated, and
-    the function called again, the function will fail because the cached
-    function contents still point to the old temporary table. The solution
-    is to use <SMALL>EXECUTE</SMALL> for temporary table access in
-    PL/PgSQL. This will cause the query to be reparsed every time.</P>
-
-    <P>This problem does not occur in PostgreSQL 8.3 and later.</P>
-
-    <H3 id="item4.20">4.20) What replication solutions are available?
-    </H3>
-
-    <P>Though "replication" is a single term, there are several technologies
-    for doing replication, with advantages and disadvantages for each.</P>
-
-    <P>Master/slave replication allows a single master to receive read/write
-    queries, while slaves can only accept read/<SMALL>SELECT</SMALL>
-    queries. The most popular freely available master-slave PostgreSQL
-    replication solution is <A
-    href="http://main.slony.info/">
-    Slony-I</A>.</P>
-
-    <P>Multi-master replication allows read/write queries to be sent to
-    multiple replicated computers.  This capability also has a severe impact
-    on performance due to the need to synchronize changes between servers. 
-    <A href="http://pgfoundry.org/projects/pgcluster/">PGCluster</a> is the
-    most popular such solution freely available for PostgreSQL.</P>
-
-    <P>There are also commercial and hardware-based replication solutions
-    available supporting a variety of replication models.</P>
-
-    <H3 id="item4.21">4.21) Why are my table and column names not
-    recognized in my query?  Why is capitalization not preserved?</H3>
-
-    <P>The most common cause of unrecognized names is the use of
-    double-quotes around table or column names during table creation.
-    When double-quotes are used, table and column names (called
-    identifiers) are stored <a
-    href="http://www.postgresql.org/docs/current/static/sql-syntax-lexical.html#SQL-SYNTAX-IDENTIFIERS">
-    case-sensitive</a>, meaning you must use double-quotes when
-    referencing the names in a query.  Some interfaces, like pgAdmin,
-    automatically double-quote identifiers during table creation.
-    So, for identifiers to be recognized, you must either:
-    <UL>
-    <LI>Avoid double-quoting identifiers when creating tables</LI>
-    <LI>Use only lowercase characters in identifiers</LI>
-    <LI>Double-quote identifiers when referencing them in queries</LI>
-    </UL>
-
-  </BODY>
-</HTML>
diff --git a/doc/src/FAQ/FAQ_DEV.html b/doc/src/FAQ/FAQ_DEV.html
deleted file mode 100644 (file)
index 09d02f6..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2//EN">
-
-<HTML>
-  <HEAD>
-    <TITLE>PostgreSQL Developers FAQ</TITLE>
-  </HEAD>
-
-  <BODY bgcolor="#FFFFFF" text="#000000" link="#FF0000" vlink="#A00000"
-  alink="#0000FF">
-    <P>The developer FAQ can be found on the PostgreSQL wiki:</P>
-
-<P><A href="http://wiki.postgresql.org/wiki/Development_information">http://wiki.postgresql.org/wiki/Development_information</A></P>
-  </BODY>
-</HTML>