Update H4 tag to H3 to be consistent with heading levels.
This commit is contained in:
parent
9f1e864d02
commit
97a4dad35f
222
doc/FAQ
222
doc/FAQ
@ -1,7 +1,7 @@
|
|||||||
|
|
||||||
Frequently Asked Questions (FAQ) for PostgreSQL
|
Frequently Asked Questions (FAQ) for PostgreSQL
|
||||||
|
|
||||||
Last updated: Sat Apr 23 14:56:41 EDT 2005
|
Last updated: Sat Apr 23 14:59:01 EDT 2005
|
||||||
|
|
||||||
Current maintainer: Bruce Momjian (pgman@candle.pha.pa.us)
|
Current maintainer: Bruce Momjian (pgman@candle.pha.pa.us)
|
||||||
|
|
||||||
@ -94,8 +94,8 @@
|
|||||||
|
|
||||||
General Questions
|
General Questions
|
||||||
|
|
||||||
1.1) What is PostgreSQL? How is it pronounced?
|
1.1) What is PostgreSQL? How is it pronounced?
|
||||||
|
|
||||||
PostgreSQL is pronounced Post-Gres-Q-L, also called just Postgres.
|
PostgreSQL is pronounced Post-Gres-Q-L, also called just Postgres.
|
||||||
|
|
||||||
PostgreSQL is an object-relational database system that has the
|
PostgreSQL is an object-relational database system that has the
|
||||||
@ -109,8 +109,8 @@
|
|||||||
company. To get involved, see the developer's FAQ at
|
company. To get involved, see the developer's FAQ at
|
||||||
http://www.postgresql.org/files/documentation/faqs/FAQ_DEV.html
|
http://www.postgresql.org/files/documentation/faqs/FAQ_DEV.html
|
||||||
|
|
||||||
1.2) What is the copyright of PostgreSQL?
|
1.2) What is the copyright of PostgreSQL?
|
||||||
|
|
||||||
PostgreSQL is distributed under the classic BSD license. It has no
|
PostgreSQL is distributed under the classic BSD license. It has no
|
||||||
restrictions on how the source code can be used. We like it and have
|
restrictions on how the source code can be used. We like it and have
|
||||||
no intention of changing it.
|
no intention of changing it.
|
||||||
@ -142,8 +142,8 @@
|
|||||||
CALIFORNIA HAS NO OBLIGATIONS TO PROVIDE MAINTENANCE, SUPPORT,
|
CALIFORNIA HAS NO OBLIGATIONS TO PROVIDE MAINTENANCE, SUPPORT,
|
||||||
UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
|
UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
|
||||||
|
|
||||||
1.3) What platforms does PostgreSQL support?
|
1.3) What platforms does PostgreSQL support?
|
||||||
|
|
||||||
In general, any modern Unix-compatible platform should be able to run
|
In general, any modern Unix-compatible platform should be able to run
|
||||||
PostgreSQL. The platforms that had received explicit testing at the
|
PostgreSQL. The platforms that had received explicit testing at the
|
||||||
time of release are listed in the installation instructions.
|
time of release are listed in the installation instructions.
|
||||||
@ -159,13 +159,13 @@
|
|||||||
http://hobbes.nmsu.edu/cgi-bin/h-search?sh=1&button=Search&key=postgre
|
http://hobbes.nmsu.edu/cgi-bin/h-search?sh=1&button=Search&key=postgre
|
||||||
SQL&stype=all&sort=type&dir=%2F.
|
SQL&stype=all&sort=type&dir=%2F.
|
||||||
|
|
||||||
1.4) Where can I get PostgreSQL?
|
1.4) Where can I get PostgreSQL?
|
||||||
|
|
||||||
Via web browser, use http://www.postgresql.org/ftp/, and via ftp, use
|
Via web browser, use http://www.postgresql.org/ftp/, and via ftp, use
|
||||||
ftp://ftp.PostgreSQL.org/pub/.
|
ftp://ftp.PostgreSQL.org/pub/.
|
||||||
|
|
||||||
1.5) Where can I get support?
|
1.5) Where can I get support?
|
||||||
|
|
||||||
The PostgreSQL community provides assistance to many of its users via
|
The PostgreSQL community provides assistance to many of its users via
|
||||||
email. The main web site to subscribe to the email lists is
|
email. The main web site to subscribe to the email lists is
|
||||||
http://www.postgresql.org/community/lists/. The general or bugs lists
|
http://www.postgresql.org/community/lists/. The general or bugs lists
|
||||||
@ -180,23 +180,23 @@
|
|||||||
A list of commercial support companies is available at
|
A list of commercial support companies is available at
|
||||||
http://techdocs.postgresql.org/companies.php.
|
http://techdocs.postgresql.org/companies.php.
|
||||||
|
|
||||||
1.6) How do I submit a bug report?
|
1.6) How do I submit a bug report?
|
||||||
|
|
||||||
Visit the PostgreSQL bug form at
|
Visit the PostgreSQL bug form at
|
||||||
http://www.postgresql.org/support/submitbug.
|
http://www.postgresql.org/support/submitbug.
|
||||||
|
|
||||||
Also check out our ftp site ftp://ftp.PostgreSQL.org/pub/ to see if
|
Also check out our ftp site ftp://ftp.PostgreSQL.org/pub/ to see if
|
||||||
there is a more recent PostgreSQL version.
|
there is a more recent PostgreSQL version.
|
||||||
|
|
||||||
1.7) What is the latest release?
|
1.7) What is the latest release?
|
||||||
|
|
||||||
The latest release of PostgreSQL is version 8.0.2.
|
The latest release of PostgreSQL is version 8.0.2.
|
||||||
|
|
||||||
We plan to have a major release every year, with minor releases every
|
We plan to have a major release every year, with minor releases every
|
||||||
few months.
|
few months.
|
||||||
|
|
||||||
1.8) What documentation is available?
|
1.8) What documentation is available?
|
||||||
|
|
||||||
PostgreSQL includes extensive documentation, including a large manual,
|
PostgreSQL includes extensive documentation, including a large manual,
|
||||||
manual pages, and some test examples. See the /doc directory. You can
|
manual pages, and some test examples. See the /doc directory. You can
|
||||||
also browse the manuals online at http://www.PostgreSQL.org/docs.
|
also browse the manuals online at http://www.PostgreSQL.org/docs.
|
||||||
@ -215,13 +215,13 @@
|
|||||||
|
|
||||||
Our web site contains even more documentation.
|
Our web site contains even more documentation.
|
||||||
|
|
||||||
1.9) How do I find out about known bugs or missing features?
|
1.9) How do I find out about known bugs or missing features?
|
||||||
|
|
||||||
PostgreSQL supports an extended subset of SQL-92. See our TODO list
|
PostgreSQL supports an extended subset of SQL-92. See our TODO list
|
||||||
for known bugs, missing features, and future plans.
|
for known bugs, missing features, and future plans.
|
||||||
|
|
||||||
1.10) How can I learn SQL?
|
1.10) How can I learn SQL?
|
||||||
|
|
||||||
First, consider the PostgreSQL-specific books mentioned above. Another
|
First, consider the PostgreSQL-specific books mentioned above. Another
|
||||||
one is "Teach Yourself SQL in 21 Days, Second Edition" at
|
one is "Teach Yourself SQL in 21 Days, Second Edition" at
|
||||||
http://members.tripod.com/er4ebus/sql/index.htm
|
http://members.tripod.com/er4ebus/sql/index.htm
|
||||||
@ -232,12 +232,12 @@
|
|||||||
http://ourworld.compuserve.com/homepages/graeme_birchall/HTM_COOK.HTM,
|
http://ourworld.compuserve.com/homepages/graeme_birchall/HTM_COOK.HTM,
|
||||||
and at http://sqlcourse.com.
|
and at http://sqlcourse.com.
|
||||||
|
|
||||||
1.11) How do I join the development team?
|
1.11) How do I join the development team?
|
||||||
|
|
||||||
See the Developer's FAQ.
|
See the Developer's FAQ.
|
||||||
|
|
||||||
1.12) How does PostgreSQL compare to other DBMSs?
|
1.12) How does PostgreSQL compare to other DBMSs?
|
||||||
|
|
||||||
There are several ways of measuring software: features, performance,
|
There are several ways of measuring software: features, performance,
|
||||||
reliability, support, and price.
|
reliability, support, and price.
|
||||||
|
|
||||||
@ -281,8 +281,8 @@
|
|||||||
|
|
||||||
User Client Questions
|
User Client Questions
|
||||||
|
|
||||||
2.1) What interfaces are available for PostgreSQL?
|
2.1) What interfaces are available for PostgreSQL?
|
||||||
|
|
||||||
The PostgreSQL install includes only the C and embedded C interfaces.
|
The PostgreSQL install includes only the C and embedded C interfaces.
|
||||||
All other interfaces are independent projects that are downloaded
|
All other interfaces are independent projects that are downloaded
|
||||||
separately; being separate allows them to have their own release
|
separately; being separate allows them to have their own release
|
||||||
@ -293,8 +293,8 @@
|
|||||||
others are available at http://gborg.postgresql.org in the
|
others are available at http://gborg.postgresql.org in the
|
||||||
Drivers/Interfaces section and via Internet search.
|
Drivers/Interfaces section and via Internet search.
|
||||||
|
|
||||||
2.2) What tools are available for using PostgreSQL with Web pages?
|
2.2) What tools are available for using PostgreSQL with Web pages?
|
||||||
|
|
||||||
A nice introduction to Database-backed Web pages can be seen at:
|
A nice introduction to Database-backed Web pages can be seen at:
|
||||||
http://www.webreview.com
|
http://www.webreview.com
|
||||||
|
|
||||||
@ -304,28 +304,28 @@
|
|||||||
For complex cases, many use the Perl and DBD::Pg with CGI.pm or
|
For complex cases, many use the Perl and DBD::Pg with CGI.pm or
|
||||||
mod_perl.
|
mod_perl.
|
||||||
|
|
||||||
2.3) Does PostgreSQL have a graphical user interface?
|
2.3) Does PostgreSQL have a graphical user interface?
|
||||||
|
|
||||||
Yes, see http://techdocs.postgresql.org/guides/GUITools for a detailed
|
Yes, see http://techdocs.postgresql.org/guides/GUITools for a detailed
|
||||||
list.
|
list.
|
||||||
_________________________________________________________________
|
_________________________________________________________________
|
||||||
|
|
||||||
Administrative Questions
|
Administrative Questions
|
||||||
|
|
||||||
3.1) How do I install PostgreSQL somewhere other than /usr/local/pgsql?
|
3.1) How do I install PostgreSQL somewhere other than /usr/local/pgsql?
|
||||||
|
|
||||||
Specify the --prefix option when running configure.
|
Specify the --prefix option when running configure.
|
||||||
|
|
||||||
3.2) How do I control connections from other hosts?
|
3.2) How do I control connections from other hosts?
|
||||||
|
|
||||||
By default, PostgreSQL only allows connections from the local machine
|
By default, PostgreSQL only allows connections from the local machine
|
||||||
using Unix domain sockets or TCP/IP connections. Other machines will
|
using Unix domain sockets or TCP/IP connections. Other machines will
|
||||||
not be able to connect unless you modify listen_addresses in the
|
not be able to connect unless you modify listen_addresses in the
|
||||||
postgresql.conf file, enable host-based authentication by modifying
|
postgresql.conf file, enable host-based authentication by modifying
|
||||||
the $PGDATA/pg_hba.conf file, and restart the server.
|
the $PGDATA/pg_hba.conf file, and restart the server.
|
||||||
|
|
||||||
3.3) How do I tune the database engine for better performance?
|
3.3) How do I tune the database engine for better performance?
|
||||||
|
|
||||||
There are three major areas for potential performance improvement:
|
There are three major areas for potential performance improvement:
|
||||||
|
|
||||||
Query Changes
|
Query Changes
|
||||||
@ -356,22 +356,22 @@
|
|||||||
http://candle.pha.pa.us/main/writings/pgsql/hw_performance/inde
|
http://candle.pha.pa.us/main/writings/pgsql/hw_performance/inde
|
||||||
x.html and http://www.powerpostgresql.com/PerfList/.
|
x.html and http://www.powerpostgresql.com/PerfList/.
|
||||||
|
|
||||||
3.4) What debugging features are available?
|
3.4) What debugging features are available?
|
||||||
|
|
||||||
There are many log_* server configuration variables that enable
|
There are many log_* server configuration variables that enable
|
||||||
printing of query and process statistics which can be very useful for
|
printing of query and process statistics which can be very useful for
|
||||||
debugging and performance measurements.
|
debugging and performance measurements.
|
||||||
|
|
||||||
3.5) Why do I get "Sorry, too many clients" when trying to connect?
|
3.5) Why do I get "Sorry, too many clients" when trying to connect?
|
||||||
|
|
||||||
You have reached the default limit is 100 database sessions. You need
|
You have reached the default limit is 100 database sessions. You need
|
||||||
to increase the postmaster's limit on how many concurrent backend
|
to increase the postmaster's limit on how many concurrent backend
|
||||||
processes it can start by changing the max_connections value in
|
processes it can start by changing the max_connections value in
|
||||||
postgresql.conf and restarting the postmaster.
|
postgresql.conf and restarting the postmaster.
|
||||||
|
|
||||||
3.6) Why do I need to do a dump and restore to upgrade between major
|
3.6) Why do I need to do a dump and restore to upgrade between major
|
||||||
PostgreSQL releases?
|
PostgreSQL releases?
|
||||||
|
|
||||||
The PostgreSQL team makes only small changes between minor releases,
|
The PostgreSQL team makes only small changes between minor releases,
|
||||||
so upgrading from 7.4.0 to 7.4.1 does not require a dump and restore.
|
so upgrading from 7.4.0 to 7.4.1 does not require a dump and restore.
|
||||||
However, major releases (e.g. from 7.3 to 7.4) often change the
|
However, major releases (e.g. from 7.3 to 7.4) often change the
|
||||||
@ -380,8 +380,8 @@
|
|||||||
files. A dump outputs data in a generic format that can then be loaded
|
files. A dump outputs data in a generic format that can then be loaded
|
||||||
in using the new internal format.
|
in using the new internal format.
|
||||||
|
|
||||||
3.7) What computer hardware should I use?
|
3.7) What computer hardware should I use?
|
||||||
|
|
||||||
Because PC hardware is mostly compatible, people tend to believe that
|
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
|
all PC hardware is of equal quality. It is not. ECC RAM, SCSI, and
|
||||||
quality motherboards are more reliable and have better performance
|
quality motherboards are more reliable and have better performance
|
||||||
@ -393,8 +393,8 @@
|
|||||||
|
|
||||||
Operational Questions
|
Operational Questions
|
||||||
|
|
||||||
4.1) How do I SELECT only the first few rows of a query? A random row?
|
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
|
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
|
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
|
it is possible the entire query does not have to be executed. If you
|
||||||
@ -406,9 +406,9 @@
|
|||||||
ORDER BY random()
|
ORDER BY random()
|
||||||
LIMIT 1;
|
LIMIT 1;
|
||||||
|
|
||||||
4.2) How do I find out what tables, indexes, databases, and users are
|
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?
|
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
|
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
|
commands inside psql you can use \?. Alternatively you can read the
|
||||||
source code for psql in file pgsql/src/bin/psql/describe.c, it
|
source code for psql in file pgsql/src/bin/psql/describe.c, it
|
||||||
@ -427,8 +427,8 @@
|
|||||||
many of the SELECTs needed to get information from the database system
|
many of the SELECTs needed to get information from the database system
|
||||||
tables.
|
tables.
|
||||||
|
|
||||||
4.3) How do you change a column's data type?
|
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
|
Changing the data type of a column can be done easily in 8.0 and later
|
||||||
with ALTER TABLE ALTER COLUMN TYPE.
|
with ALTER TABLE ALTER COLUMN TYPE.
|
||||||
|
|
||||||
@ -442,8 +442,8 @@
|
|||||||
You might then want to do VACUUM FULL tab to reclaim the disk space
|
You might then want to do VACUUM FULL tab to reclaim the disk space
|
||||||
used by the expired rows.
|
used by the expired rows.
|
||||||
|
|
||||||
4.4) What is the maximum size for a row, a table, and a database?
|
4.4) What is the maximum size for a row, a table, and a database?
|
||||||
|
|
||||||
These are the limits:
|
These are the limits:
|
||||||
|
|
||||||
Maximum size for a database? unlimited (32 TB databases exist)
|
Maximum size for a database? unlimited (32 TB databases exist)
|
||||||
@ -466,9 +466,9 @@
|
|||||||
The maximum table size and maximum number of columns can be quadrupled
|
The maximum table size and maximum number of columns can be quadrupled
|
||||||
by increasing the default block size to 32k.
|
by increasing the default block size to 32k.
|
||||||
|
|
||||||
4.5) How much database disk space is required to store data from a typical
|
4.5) How much database disk space is required to store data from a typical
|
||||||
text file?
|
text file?
|
||||||
|
|
||||||
A PostgreSQL database may require up to five times the disk space to
|
A PostgreSQL database may require up to five times the disk space to
|
||||||
store data from a text file.
|
store data from a text file.
|
||||||
|
|
||||||
@ -500,8 +500,8 @@
|
|||||||
|
|
||||||
NULLs are stored as bitmaps, so they use very little space.
|
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?
|
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
|
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
|
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
|
small percentage of the rows in the table. This is because the random
|
||||||
@ -552,14 +552,14 @@
|
|||||||
types exactly match the index's column types. This was particularly
|
types exactly match the index's column types. This was particularly
|
||||||
true of int2, int8, and numeric column indexes.
|
true of int2, int8, and numeric column indexes.
|
||||||
|
|
||||||
4.7) How do I see how the query optimizer is evaluating my query?
|
4.7) How do I see how the query optimizer is evaluating my query?
|
||||||
|
|
||||||
See the EXPLAIN manual page.
|
See the EXPLAIN manual page.
|
||||||
|
|
||||||
4.8) How do I perform regular expression searches and case-insensitive
|
4.8) How do I perform regular expression searches and case-insensitive
|
||||||
regular expression searches? How do I use an index for case-insensitive
|
regular expression searches? How do I use an index for case-insensitive
|
||||||
searches?
|
searches?
|
||||||
|
|
||||||
The ~ operator does regular expression matching, and ~* does
|
The ~ operator does regular expression matching, and ~* does
|
||||||
case-insensitive regular expression matching. The case-insensitive
|
case-insensitive regular expression matching. The case-insensitive
|
||||||
variant of LIKE is called ILIKE.
|
variant of LIKE is called ILIKE.
|
||||||
@ -573,9 +573,9 @@
|
|||||||
expresssion index, it will be used:
|
expresssion index, it will be used:
|
||||||
CREATE INDEX tabindex ON tab (lower(col));
|
CREATE INDEX tabindex ON tab (lower(col));
|
||||||
|
|
||||||
4.9) In a query, how do I detect if a field is NULL? How can I sort on
|
4.9) In a query, how do I detect if a field is NULL? How can I sort on
|
||||||
whether a field is NULL or not?
|
whether a field is NULL or not?
|
||||||
|
|
||||||
You test the column with IS NULL and IS NOT NULL.
|
You test the column with IS NULL and IS NOT NULL.
|
||||||
SELECT *
|
SELECT *
|
||||||
FROM tab
|
FROM tab
|
||||||
@ -589,8 +589,8 @@
|
|||||||
FROM tab
|
FROM tab
|
||||||
ORDER BY (col IS NOT NULL)
|
ORDER BY (col IS NOT NULL)
|
||||||
|
|
||||||
4.10) What is the difference between the various character types?
|
4.10) What is the difference between the various character types?
|
||||||
|
|
||||||
Type Internal Name Notes
|
Type Internal Name Notes
|
||||||
VARCHAR(n) varchar size specifies maximum length, no padding
|
VARCHAR(n) varchar size specifies maximum length, no padding
|
||||||
CHAR(n) bpchar blank padded to the specified fixed length
|
CHAR(n) bpchar blank padded to the specified fixed length
|
||||||
@ -616,8 +616,8 @@
|
|||||||
particularly values that include NULL bytes. All the types described
|
particularly values that include NULL bytes. All the types described
|
||||||
here have similar performance characteristics.
|
here have similar performance characteristics.
|
||||||
|
|
||||||
4.11.1) How do I create a serial/auto-incrementing field?
|
4.11.1) How do I create a serial/auto-incrementing field?
|
||||||
|
|
||||||
PostgreSQL supports a SERIAL data type. It auto-creates a sequence.
|
PostgreSQL supports a SERIAL data type. It auto-creates a sequence.
|
||||||
For example, this:
|
For example, this:
|
||||||
CREATE TABLE person (
|
CREATE TABLE person (
|
||||||
@ -635,8 +635,8 @@
|
|||||||
See the create_sequence manual page for more information about
|
See the create_sequence manual page for more information about
|
||||||
sequences.
|
sequences.
|
||||||
|
|
||||||
4.11.2) How do I get the value of a SERIAL insert?
|
4.11.2) How do I get the value of a SERIAL insert?
|
||||||
|
|
||||||
One approach is to retrieve the next SERIAL value from the sequence
|
One approach is to retrieve the next SERIAL value from the sequence
|
||||||
object with the nextval() function before inserting and then insert it
|
object with the nextval() function before inserting and then insert it
|
||||||
explicitly. Using the example table in 4.11.1, an example in a
|
explicitly. Using the example table in 4.11.1, an example in a
|
||||||
@ -655,20 +655,20 @@
|
|||||||
execute("INSERT INTO person (name) VALUES ('Blaise Pascal')");
|
execute("INSERT INTO person (name) VALUES ('Blaise Pascal')");
|
||||||
new_id = execute("SELECT currval('person_id_seq')");
|
new_id = execute("SELECT currval('person_id_seq')");
|
||||||
|
|
||||||
4.11.3) Doesn't currval() lead to a race condition with other users?
|
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
|
No. currval() returns the current value assigned by your session, not
|
||||||
by all sessions.
|
by all sessions.
|
||||||
|
|
||||||
4.11.4) Why aren't my sequence numbers reused on transaction abort? Why are
|
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?
|
there gaps in the numbering of my sequence/SERIAL column?
|
||||||
|
|
||||||
To improve concurrency, sequence values are given out to running
|
To improve concurrency, sequence values are given out to running
|
||||||
transactions as needed and are not locked until the transaction
|
transactions as needed and are not locked until the transaction
|
||||||
completes. This causes gaps in numbering from aborted transactions.
|
completes. This causes gaps in numbering from aborted transactions.
|
||||||
|
|
||||||
4.12) What is an OID? What is a TID?
|
4.12) What is an OID? What is a TID?
|
||||||
|
|
||||||
Every row that is created in PostgreSQL gets a unique OID unless
|
Every row that is created in PostgreSQL gets a unique OID unless
|
||||||
created WITHOUT OIDS. OIDs are autotomatically assigned unique 4-byte
|
created WITHOUT OIDS. OIDs are autotomatically assigned unique 4-byte
|
||||||
integers that are unique across the entire installation. However, they
|
integers that are unique across the entire installation. However, they
|
||||||
@ -684,8 +684,8 @@
|
|||||||
values. TIDs change after rows are modified or reloaded. They are used
|
values. TIDs change after rows are modified or reloaded. They are used
|
||||||
by index entries to point to physical rows.
|
by index entries to point to physical rows.
|
||||||
|
|
||||||
4.13) Why do I get the error "ERROR: Memory exhausted in AllocSetAlloc()"?
|
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
|
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
|
kernel has a low limit for certain resources. Try this before starting
|
||||||
postmaster:
|
postmaster:
|
||||||
@ -699,13 +699,12 @@
|
|||||||
problem with the SQL client because the backend is returning too much
|
problem with the SQL client because the backend is returning too much
|
||||||
data, try it before starting the client.
|
data, try it before starting the client.
|
||||||
|
|
||||||
4.14) How do I tell what PostgreSQL version I am running?
|
4.14) How do I tell what PostgreSQL version I am running?
|
||||||
|
|
||||||
From psql, type SELECT version();
|
From psql, type SELECT version();
|
||||||
|
|
||||||
4.15) Why does my large-object operations get "invalid large obj
|
4.15) Why does my large-object operations get "invalid large obj descriptor"?
|
||||||
descriptor"?
|
|
||||||
|
|
||||||
You need to put BEGIN WORK and COMMIT around any use of a large object
|
You need to put BEGIN WORK and COMMIT around any use of a large object
|
||||||
handle, that is, surrounding lo_open ... lo_close.
|
handle, that is, surrounding lo_open ... lo_close.
|
||||||
|
|
||||||
@ -718,13 +717,13 @@
|
|||||||
If you are using a client interface like ODBC you may need to set
|
If you are using a client interface like ODBC you may need to set
|
||||||
auto-commit off.
|
auto-commit off.
|
||||||
|
|
||||||
4.16) How do I create a column that will default to the current time?
|
4.16) How do I create a column that will default to the current time?
|
||||||
|
|
||||||
Use CURRENT_TIMESTAMP:
|
Use CURRENT_TIMESTAMP:
|
||||||
CREATE TABLE test (x int, modtime TIMESTAMP DEFAULT CURRENT_TIMESTAMP );
|
CREATE TABLE test (x int, modtime TIMESTAMP DEFAULT CURRENT_TIMESTAMP );
|
||||||
|
|
||||||
4.17) How do I perform an outer join?
|
4.17) How do I perform an outer join?
|
||||||
|
|
||||||
PostgreSQL supports outer joins using the SQL standard syntax. Here
|
PostgreSQL supports outer joins using the SQL standard syntax. Here
|
||||||
are two examples:
|
are two examples:
|
||||||
SELECT *
|
SELECT *
|
||||||
@ -741,8 +740,8 @@
|
|||||||
is assumed in LEFT, RIGHT, and FULL joins. Ordinary joins are called
|
is assumed in LEFT, RIGHT, and FULL joins. Ordinary joins are called
|
||||||
INNER joins.
|
INNER joins.
|
||||||
|
|
||||||
4.18) How do I perform queries using multiple databases?
|
4.18) How do I perform queries using multiple databases?
|
||||||
|
|
||||||
There is no way to query a database other than the current one.
|
There is no way to query a database other than the current one.
|
||||||
Because PostgreSQL loads database-specific system catalogs, it is
|
Because PostgreSQL loads database-specific system catalogs, it is
|
||||||
uncertain how a cross-database query should even behave.
|
uncertain how a cross-database query should even behave.
|
||||||
@ -751,15 +750,15 @@
|
|||||||
course, a client can also make simultaneous connections to different
|
course, a client can also make simultaneous connections to different
|
||||||
databases and merge the results on the client side.
|
databases and merge the results on the client side.
|
||||||
|
|
||||||
4.19) How do I return multiple rows or columns from a function?
|
4.19) How do I return multiple rows or columns from a function?
|
||||||
|
|
||||||
It is easy using set-returning functions,
|
It is easy using set-returning functions,
|
||||||
http://techdocs.postgresql.org/guides/SetReturningFunctions
|
http://techdocs.postgresql.org/guides/SetReturningFunctions
|
||||||
.
|
.
|
||||||
|
|
||||||
4.20) Why do I get "relation with OID ##### does not exist" errors when
|
4.20) Why do I get "relation with OID ##### does not exist" errors when
|
||||||
accessing temporary tables in PL/PgSQL functions?
|
accessing temporary tables in PL/PgSQL functions?
|
||||||
|
|
||||||
PL/PgSQL caches function scripts, and an unfortunate side effect is
|
PL/PgSQL caches function scripts, and an unfortunate side effect is
|
||||||
that if a PL/PgSQL function accesses a temporary table, and that table
|
that if a PL/PgSQL function accesses a temporary table, and that table
|
||||||
is later dropped and recreated, and the function called again, the
|
is later dropped and recreated, and the function called again, the
|
||||||
@ -768,8 +767,8 @@
|
|||||||
table access in PL/PgSQL. This will cause the query to be reparsed
|
table access in PL/PgSQL. This will cause the query to be reparsed
|
||||||
every time.
|
every time.
|
||||||
|
|
||||||
4.21) What encryption options are available?
|
4.21) What encryption options are available?
|
||||||
|
|
||||||
* contrib/pgcrypto contains many encryption functions for use in SQL
|
* contrib/pgcrypto contains many encryption functions for use in SQL
|
||||||
queries.
|
queries.
|
||||||
* To encrypt transmission from the client to the server, the server
|
* To encrypt transmission from the client to the server, the server
|
||||||
@ -785,28 +784,27 @@
|
|||||||
|
|
||||||
Extending PostgreSQL
|
Extending PostgreSQL
|
||||||
|
|
||||||
5.1) I wrote a user-defined function. When I run it in psql, why does it
|
5.1) I wrote a user-defined function. When I run it in psql, why does it dump
|
||||||
dump core?
|
core?
|
||||||
|
|
||||||
The problem could be a number of things. Try testing your user-defined
|
The problem could be a number of things. Try testing your user-defined
|
||||||
function in a stand-alone test program first.
|
function in a stand-alone test program first.
|
||||||
|
|
||||||
5.2) How can I contribute some nifty new types and functions to PostgreSQL?
|
5.2) How can I contribute some nifty new types and functions to PostgreSQL?
|
||||||
|
|
||||||
Send your extensions to the pgsql-hackers mailing list, and they will
|
Send your extensions to the pgsql-hackers mailing list, and they will
|
||||||
eventually end up in the contrib/ subdirectory.
|
eventually end up in the contrib/ subdirectory.
|
||||||
|
|
||||||
5.3) How do I write a C function to return a tuple?
|
5.3) How do I write a C function to return a tuple?
|
||||||
|
|
||||||
In versions of PostgreSQL beginning with 7.3, table-returning
|
In versions of PostgreSQL beginning with 7.3, table-returning
|
||||||
functions are fully supported in C, PL/PgSQL, and SQL. See the
|
functions are fully supported in C, PL/PgSQL, and SQL. See the
|
||||||
Programmer's Guide for more information. An example of a
|
Programmer's Guide for more information. An example of a
|
||||||
table-returning function defined in C can be found in
|
table-returning function defined in C can be found in
|
||||||
contrib/tablefunc.
|
contrib/tablefunc.
|
||||||
|
|
||||||
5.4) I have changed a source file. Why does the recompile not see the
|
5.4) I have changed a source file. Why does the recompile not see the change?
|
||||||
change?
|
|
||||||
|
|
||||||
The Makefiles do not have the proper dependencies for include files.
|
The Makefiles do not have the proper dependencies for include files.
|
||||||
You have to do a make clean and then another make. If you are using
|
You have to do a make clean and then another make. If you are using
|
||||||
GCC you can use the --enable-depend option of configure to have the
|
GCC you can use the --enable-depend option of configure to have the
|
||||||
|
@ -10,7 +10,7 @@
|
|||||||
alink="#0000ff">
|
alink="#0000ff">
|
||||||
<H1>Frequently Asked Questions (FAQ) for PostgreSQL</H1>
|
<H1>Frequently Asked Questions (FAQ) for PostgreSQL</H1>
|
||||||
|
|
||||||
<P>Last updated: Sat Apr 23 14:56:41 EDT 2005</P>
|
<P>Last updated: Sat Apr 23 14:59:01 EDT 2005</P>
|
||||||
|
|
||||||
<P>Current maintainer: Bruce Momjian (<A href=
|
<P>Current maintainer: Bruce Momjian (<A href=
|
||||||
"mailto:pgman@candle.pha.pa.us">pgman@candle.pha.pa.us</A>)
|
"mailto:pgman@candle.pha.pa.us">pgman@candle.pha.pa.us</A>)
|
||||||
@ -133,7 +133,7 @@
|
|||||||
|
|
||||||
<H2 align="center">General Questions</H2>
|
<H2 align="center">General Questions</H2>
|
||||||
|
|
||||||
<H4><A name="1.1">1.1</A>) What is PostgreSQL? How is it pronounced?</H4>
|
<H3><A name="1.1">1.1</A>) What is PostgreSQL? How is it pronounced?</H3>
|
||||||
|
|
||||||
<P>PostgreSQL is pronounced <I>Post-Gres-Q-L</I>, also called just
|
<P>PostgreSQL is pronounced <I>Post-Gres-Q-L</I>, also called just
|
||||||
<I>Postgres</I>.</P>
|
<I>Postgres</I>.</P>
|
||||||
@ -152,8 +152,8 @@
|
|||||||
http://www.postgresql.org/files/documentation/faqs/FAQ_DEV.html</A>
|
http://www.postgresql.org/files/documentation/faqs/FAQ_DEV.html</A>
|
||||||
</P>
|
</P>
|
||||||
|
|
||||||
<H4><A name="1.2">1.2</A>) What is the copyright of
|
<H3><A name="1.2">1.2</A>) What is the copyright of
|
||||||
PostgreSQL?</H4>
|
PostgreSQL?</H3>
|
||||||
|
|
||||||
<P>PostgreSQL is distributed under the classic BSD license. It has
|
<P>PostgreSQL is distributed under the classic BSD license. It has
|
||||||
no restrictions on how the source code can be used. We like it and
|
no restrictions on how the source code can be used. We like it and
|
||||||
@ -185,7 +185,7 @@
|
|||||||
UNIVERSITY OF CALIFORNIA HAS NO OBLIGATIONS TO PROVIDE MAINTENANCE,
|
UNIVERSITY OF CALIFORNIA HAS NO OBLIGATIONS TO PROVIDE MAINTENANCE,
|
||||||
SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.</P>
|
SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.</P>
|
||||||
|
|
||||||
<H4><A name="1.3">1.3</A>) What platforms does PostgreSQL support?</H4>
|
<H3><A name="1.3">1.3</A>) What platforms does PostgreSQL support?</H3>
|
||||||
|
|
||||||
<P>In general, any modern Unix-compatible platform should be able to
|
<P>In general, any modern Unix-compatible platform should be able to
|
||||||
run PostgreSQL. The platforms that had received explicit testing at
|
run PostgreSQL. The platforms that had received explicit testing at
|
||||||
@ -204,14 +204,14 @@
|
|||||||
"http://hobbes.nmsu.edu/cgi-bin/h-search?sh=1&button=Search&key=postgreSQL&stype=all&sort=type&dir=%2F">
|
"http://hobbes.nmsu.edu/cgi-bin/h-search?sh=1&button=Search&key=postgreSQL&stype=all&sort=type&dir=%2F">
|
||||||
http://hobbes.nmsu.edu/cgi-bin/h-search?sh=1&button=Search&key=postgreSQL&stype=all&sort=type&dir=%2F</a>.</p>
|
http://hobbes.nmsu.edu/cgi-bin/h-search?sh=1&button=Search&key=postgreSQL&stype=all&sort=type&dir=%2F</a>.</p>
|
||||||
|
|
||||||
<H4><A name="1.4">1.4</A>) Where can I get PostgreSQL?</H4>
|
<H3><A name="1.4">1.4</A>) Where can I get PostgreSQL?</H3>
|
||||||
|
|
||||||
<P>Via web browser, use <a href="http://www.postgresql.org/ftp/">
|
<P>Via web browser, use <a href="http://www.postgresql.org/ftp/">
|
||||||
http://www.postgresql.org/ftp/</a>, and via ftp, use
|
http://www.postgresql.org/ftp/</a>, and via ftp, use
|
||||||
<A href="ftp://ftp.PostgreSQL.org/pub/">
|
<A href="ftp://ftp.PostgreSQL.org/pub/">
|
||||||
ftp://ftp.PostgreSQL.org/pub/</A>.</P>
|
ftp://ftp.PostgreSQL.org/pub/</A>.</P>
|
||||||
|
|
||||||
<H4><A name="1.5">1.5</A>) Where can I get support?</H4>
|
<H3><A name="1.5">1.5</A>) Where can I get support?</H3>
|
||||||
|
|
||||||
<P>The PostgreSQL community provides assistance to many of its users
|
<P>The PostgreSQL community provides assistance to many of its users
|
||||||
via email. The main web site to subscribe to the email lists is
|
via email. The main web site to subscribe to the email lists is
|
||||||
@ -230,7 +230,7 @@
|
|||||||
"http://techdocs.postgresql.org/companies.php">
|
"http://techdocs.postgresql.org/companies.php">
|
||||||
http://techdocs.postgresql.org/companies.php</A>.</P>
|
http://techdocs.postgresql.org/companies.php</A>.</P>
|
||||||
|
|
||||||
<H4><A name="1.6">1.6</A>) How do I submit a bug report?</H4>
|
<H3><A name="1.6">1.6</A>) How do I submit a bug report?</H3>
|
||||||
|
|
||||||
<P>Visit the PostgreSQL bug form at <A href=
|
<P>Visit the PostgreSQL bug form at <A href=
|
||||||
"http://www.postgresql.org/support/submitbug">
|
"http://www.postgresql.org/support/submitbug">
|
||||||
@ -240,14 +240,14 @@
|
|||||||
"ftp://ftp.PostgreSQL.org/pub/">ftp://ftp.PostgreSQL.org/pub/</A> to
|
"ftp://ftp.PostgreSQL.org/pub/">ftp://ftp.PostgreSQL.org/pub/</A> to
|
||||||
see if there is a more recent PostgreSQL version.</P>
|
see if there is a more recent PostgreSQL version.</P>
|
||||||
|
|
||||||
<H4><A name="1.7">1.7</A>) What is the latest release?</H4>
|
<H3><A name="1.7">1.7</A>) What is the latest release?</H3>
|
||||||
|
|
||||||
<P>The latest release of PostgreSQL is version 8.0.2.</P>
|
<P>The latest release of PostgreSQL is version 8.0.2.</P>
|
||||||
|
|
||||||
<P>We plan to have a major release every year, with minor releases
|
<P>We plan to have a major release every year, with minor releases
|
||||||
every few months.</P>
|
every few months.</P>
|
||||||
|
|
||||||
<H4><A name="1.8">1.8</A>) What documentation is available?</H4>
|
<H3><A name="1.8">1.8</A>) What documentation is available?</H3>
|
||||||
|
|
||||||
<P>PostgreSQL includes extensive documentation, including a large
|
<P>PostgreSQL includes extensive documentation, including a large
|
||||||
manual, manual pages, and some test examples. See the <I>/doc</I>
|
manual, manual pages, and some test examples. See the <I>/doc</I>
|
||||||
@ -272,15 +272,15 @@
|
|||||||
|
|
||||||
<P>Our web site contains even more documentation.</P>
|
<P>Our web site contains even more documentation.</P>
|
||||||
|
|
||||||
<H4><A name="1.9">1.9</A>) How do I find out about known bugs or
|
<H3><A name="1.9">1.9</A>) How do I find out about known bugs or
|
||||||
missing features?</H4>
|
missing features?</H3>
|
||||||
|
|
||||||
<P>PostgreSQL supports an extended subset of <SMALL>SQL</SMALL>-92.
|
<P>PostgreSQL supports an extended subset of <SMALL>SQL</SMALL>-92.
|
||||||
See our <A href="http://www.postgresql.org/docs/faqs.TODO.html">TODO</A>
|
See our <A href="http://www.postgresql.org/docs/faqs.TODO.html">TODO</A>
|
||||||
list for known bugs, missing features, and future plans.</P>
|
list for known bugs, missing features, and future plans.</P>
|
||||||
|
|
||||||
<H4><A name="1.10">1.10</A>) How can I learn
|
<H3><A name="1.10">1.10</A>) How can I learn
|
||||||
<SMALL>SQL</SMALL>?</H4>
|
<SMALL>SQL</SMALL>?</H3>
|
||||||
|
|
||||||
<P>First, consider the PostgreSQL-specific books mentioned above.
|
<P>First, consider the PostgreSQL-specific books mentioned above.
|
||||||
Another one is "Teach Yourself SQL in 21 Days, Second Edition"
|
Another one is "Teach Yourself SQL in 21 Days, Second Edition"
|
||||||
@ -298,14 +298,14 @@
|
|||||||
and at <A href=
|
and at <A href=
|
||||||
"http://sqlcourse.com/">http://sqlcourse.com.</A></P>
|
"http://sqlcourse.com/">http://sqlcourse.com.</A></P>
|
||||||
|
|
||||||
<H4><A name="1.11">1.11</A>) How do I join the development
|
<H3><A name="1.11">1.11</A>) How do I join the development
|
||||||
team?</H4>
|
team?</H3>
|
||||||
|
|
||||||
<P>See the <a href="http://www.postgresql.org/docs/faqs.FAQ_DEV.html">
|
<P>See the <a href="http://www.postgresql.org/docs/faqs.FAQ_DEV.html">
|
||||||
Developer's FAQ</A>.
|
Developer's FAQ</A>.
|
||||||
|
|
||||||
<H4><A name="1.12">1.12</A>) How does PostgreSQL compare to other
|
<H3><A name="1.12">1.12</A>) How does PostgreSQL compare to other
|
||||||
<SMALL>DBMS</SMALL>s?</H4>
|
<SMALL>DBMS</SMALL>s?</H3>
|
||||||
|
|
||||||
<P>There are several ways of measuring software: features,
|
<P>There are several ways of measuring software: features,
|
||||||
performance, reliability, support, and price.</P>
|
performance, reliability, support, and price.</P>
|
||||||
@ -368,8 +368,8 @@
|
|||||||
|
|
||||||
<H2 align="center">User Client Questions</H2>
|
<H2 align="center">User Client Questions</H2>
|
||||||
|
|
||||||
<H4><A name="2.1">2.1</A>) What interfaces are available for
|
<H3><A name="2.1">2.1</A>) What interfaces are available for
|
||||||
PostgreSQL?</H4>
|
PostgreSQL?</H3>
|
||||||
|
|
||||||
<P>The PostgreSQL install includes only the <SMALL>C</SMALL> and embedded
|
<P>The PostgreSQL install includes only the <SMALL>C</SMALL> and embedded
|
||||||
<SMALL>C</SMALL> interfaces. All other interfaces are independent projects
|
<SMALL>C</SMALL> interfaces. All other interfaces are independent projects
|
||||||
@ -383,8 +383,8 @@
|
|||||||
in the <I>Drivers/Interfaces</I> section and via Internet search.
|
in the <I>Drivers/Interfaces</I> section and via Internet search.
|
||||||
</P>
|
</P>
|
||||||
|
|
||||||
<H4><A name="2.2">2.2</A>) What tools are available for using
|
<H3><A name="2.2">2.2</A>) What tools are available for using
|
||||||
PostgreSQL with Web pages?</H4>
|
PostgreSQL with Web pages?</H3>
|
||||||
|
|
||||||
<P>A nice introduction to Database-backed Web pages can be seen at:
|
<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>
|
<A href="http://www.webreview.com">http://www.webreview.com</A></P>
|
||||||
@ -396,8 +396,8 @@
|
|||||||
<P>For complex cases, many use the Perl and DBD::Pg with CGI.pm or
|
<P>For complex cases, many use the Perl and DBD::Pg with CGI.pm or
|
||||||
mod_perl.</P>
|
mod_perl.</P>
|
||||||
|
|
||||||
<H4><A name="2.3">2.3</A>) Does PostgreSQL have a graphical user
|
<H3><A name="2.3">2.3</A>) Does PostgreSQL have a graphical user
|
||||||
interface?</H4>
|
interface?</H3>
|
||||||
|
|
||||||
<P>Yes, see <a href="http://techdocs.postgresql.org/guides/GUITools">
|
<P>Yes, see <a href="http://techdocs.postgresql.org/guides/GUITools">
|
||||||
http://techdocs.postgresql.org/guides/GUITools</a> for a
|
http://techdocs.postgresql.org/guides/GUITools</a> for a
|
||||||
@ -408,14 +408,14 @@
|
|||||||
|
|
||||||
<H2 align="center">Administrative Questions</H2>
|
<H2 align="center">Administrative Questions</H2>
|
||||||
|
|
||||||
<H4><A name="3.1">3.1</A>) How do I install PostgreSQL somewhere
|
<H3><A name="3.1">3.1</A>) How do I install PostgreSQL somewhere
|
||||||
other than <I>/usr/local/pgsql</I>?</H4>
|
other than <I>/usr/local/pgsql</I>?</H3>
|
||||||
|
|
||||||
<P>Specify the <I>--prefix</I> option when running
|
<P>Specify the <I>--prefix</I> option when running
|
||||||
<I>configure</I>.</P>
|
<I>configure</I>.</P>
|
||||||
|
|
||||||
<H4><A name="3.2">3.2</A>) How do I control connections from other
|
<H3><A name="3.2">3.2</A>) How do I control connections from other
|
||||||
hosts?</H4>
|
hosts?</H3>
|
||||||
|
|
||||||
<P>By default, PostgreSQL only allows connections from the local
|
<P>By default, PostgreSQL only allows connections from the local
|
||||||
machine using Unix domain sockets or TCP/IP connections. Other
|
machine using Unix domain sockets or TCP/IP connections. Other
|
||||||
@ -424,8 +424,8 @@
|
|||||||
host-based authentication by modifying the
|
host-based authentication by modifying the
|
||||||
<I>$PGDATA/pg_hba.conf</I> file, and restart the server.</P>
|
<I>$PGDATA/pg_hba.conf</I> file, and restart the server.</P>
|
||||||
|
|
||||||
<H4><A name="3.3">3.3</A>) How do I tune the database engine for
|
<H3><A name="3.3">3.3</A>) How do I tune the database engine for
|
||||||
better performance?</H4>
|
better performance?</H3>
|
||||||
|
|
||||||
<P>There are three major areas for potential performance
|
<P>There are three major areas for potential performance
|
||||||
improvement:</P>
|
improvement:</P>
|
||||||
@ -481,15 +481,15 @@
|
|||||||
</DD>
|
</DD>
|
||||||
</DL>
|
</DL>
|
||||||
|
|
||||||
<H4><A name="3.4">3.4</A>) What debugging features are
|
<H3><A name="3.4">3.4</A>) What debugging features are
|
||||||
available?</H4>
|
available?</H3>
|
||||||
|
|
||||||
<P>There are many <CODE>log_*</CODE> server configuration variables
|
<P>There are many <CODE>log_*</CODE> server configuration variables
|
||||||
that enable printing of query and process statistics which can be
|
that enable printing of query and process statistics which can be
|
||||||
very useful for debugging and performance measurements.</P>
|
very useful for debugging and performance measurements.</P>
|
||||||
|
|
||||||
<H4><A name="3.5">3.5</A>) Why do I get <I>"Sorry, too many
|
<H3><A name="3.5">3.5</A>) Why do I get <I>"Sorry, too many
|
||||||
clients"</I> when trying to connect?</H4>
|
clients"</I> when trying to connect?</H3>
|
||||||
|
|
||||||
<P>You have reached the default limit is 100 database sessions. You
|
<P>You have reached the default limit is 100 database sessions. You
|
||||||
need to increase the <I>postmaster</I>'s limit on how many
|
need to increase the <I>postmaster</I>'s limit on how many
|
||||||
@ -497,8 +497,8 @@
|
|||||||
<I>max_connections</I> value in <I>postgresql.conf</I> and
|
<I>max_connections</I> value in <I>postgresql.conf</I> and
|
||||||
restarting the <I>postmaster</I>.</P>
|
restarting the <I>postmaster</I>.</P>
|
||||||
|
|
||||||
<H4><A name="3.6">3.6</A>) Why do I need to do a dump and restore
|
<H3><A name="3.6">3.6</A>) Why do I need to do a dump and restore
|
||||||
to upgrade between major PostgreSQL releases?</H4>
|
to upgrade between major PostgreSQL releases?</H3>
|
||||||
|
|
||||||
<P>The PostgreSQL team makes only small changes between minor releases,
|
<P>The PostgreSQL team makes only small changes between minor releases,
|
||||||
so upgrading from 7.4.0 to 7.4.1 does not require a dump and restore.
|
so upgrading from 7.4.0 to 7.4.1 does not require a dump and restore.
|
||||||
@ -508,7 +508,7 @@
|
|||||||
data in a generic format that can then be loaded in using the new internal
|
data in a generic format that can then be loaded in using the new internal
|
||||||
format.</P>
|
format.</P>
|
||||||
|
|
||||||
<H4><A name="3.7">3.7</A>) What computer hardware should I use?</H4>
|
<H3><A name="3.7">3.7</A>) What computer hardware should I use?</H3>
|
||||||
|
|
||||||
<P>Because PC hardware is mostly compatible, people tend to believe that
|
<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
|
all PC hardware is of equal quality. It is not. ECC RAM, SCSI, and
|
||||||
@ -522,8 +522,8 @@
|
|||||||
|
|
||||||
<H2 align="center">Operational Questions</H2>
|
<H2 align="center">Operational Questions</H2>
|
||||||
|
|
||||||
<H4><A name="4.1">4.1</A>) How do I <SMALL>SELECT</SMALL> only the
|
<H3><A name="4.1">4.1</A>) How do I <SMALL>SELECT</SMALL> only the
|
||||||
first few rows of a query? A random row?</H4>
|
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
|
<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
|
needed at the time of the <SMALL>SELECT</SMALL> use
|
||||||
@ -541,9 +541,9 @@
|
|||||||
LIMIT 1;
|
LIMIT 1;
|
||||||
</PRE>
|
</PRE>
|
||||||
|
|
||||||
<H4><A name="4.2">4.2</A>) How do I find out what tables, indexes,
|
<H3><A name="4.2">4.2</A>) How do I find out what tables, indexes,
|
||||||
databases, and users are defined? How do I see the queries used
|
databases, and users are defined? How do I see the queries used
|
||||||
by <I>psql</I> to display them?</H4>
|
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
|
<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
|
commands inside psql you can use \?. Alternatively you can read the source
|
||||||
@ -564,7 +564,7 @@
|
|||||||
illustrates many of the <SMALL>SELECT</SMALL>s needed to get
|
illustrates many of the <SMALL>SELECT</SMALL>s needed to get
|
||||||
information from the database system tables.</P>
|
information from the database system tables.</P>
|
||||||
|
|
||||||
<H4><A name="4.3">4.3</A>) How do you change a column's data type?</H4>
|
<H3><A name="4.3">4.3</A>) 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
|
<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>
|
and later with <SMALL>ALTER TABLE ALTER COLUMN TYPE</SMALL>.</P>
|
||||||
@ -580,8 +580,8 @@
|
|||||||
<P>You might then want to do <I>VACUUM FULL tab</I> to reclaim the
|
<P>You might then want to do <I>VACUUM FULL tab</I> to reclaim the
|
||||||
disk space used by the expired rows.</P>
|
disk space used by the expired rows.</P>
|
||||||
|
|
||||||
<H4><A name="4.4">4.4</A>) What is the maximum size for a row, a
|
<H3><A name="4.4">4.4</A>) What is the maximum size for a row, a
|
||||||
table, and a database?</H4>
|
table, and a database?</H3>
|
||||||
|
|
||||||
<P>These are the limits:</P>
|
<P>These are the limits:</P>
|
||||||
<BLOCKQUOTE>
|
<BLOCKQUOTE>
|
||||||
@ -611,8 +611,8 @@ table?</TD><TD>unlimited</TD></TR>
|
|||||||
<P>The maximum table size and maximum number of columns can be
|
<P>The maximum table size and maximum number of columns can be
|
||||||
quadrupled by increasing the default block size to 32k.</P>
|
quadrupled by increasing the default block size to 32k.</P>
|
||||||
|
|
||||||
<H4><A name="4.5">4.5</A>) How much database disk space is required
|
<H3><A name="4.5">4.5</A>) How much database disk space is required
|
||||||
to store data from a typical text file?</H4>
|
to store data from a typical text file?</H3>
|
||||||
|
|
||||||
<P>A PostgreSQL database may require up to five times the disk
|
<P>A PostgreSQL database may require up to five times the disk
|
||||||
space to store data from a text file.</P>
|
space to store data from a text file.</P>
|
||||||
@ -648,8 +648,8 @@ table?</TD><TD>unlimited</TD></TR>
|
|||||||
<P><SMALL>NULL</SMALL>s are stored as bitmaps, so they
|
<P><SMALL>NULL</SMALL>s are stored as bitmaps, so they
|
||||||
use very little space.</P>
|
use very little space.</P>
|
||||||
|
|
||||||
<H4><A name="4.6">4.6</A>) Why are my queries slow? Why don't they
|
<H3><A name="4.6">4.6</A>) Why are my queries slow? Why don't they
|
||||||
use my indexes?</H4>
|
use my indexes?</H3>
|
||||||
|
|
||||||
<P>Indexes are not used by every query. Indexes are used only if the
|
<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
|
table is larger than a minimum size, and the query selects only a
|
||||||
@ -712,14 +712,14 @@ table?</TD><TD>unlimited</TD></TR>
|
|||||||
types exactly match the index's column types. This was particularly
|
types exactly match the index's column types. This was particularly
|
||||||
true of int2, int8, and numeric column indexes.</P>
|
true of int2, int8, and numeric column indexes.</P>
|
||||||
|
|
||||||
<H4><A name="4.7">4.7</A>) How do I see how the query optimizer is
|
<H3><A name="4.7">4.7</A>) How do I see how the query optimizer is
|
||||||
evaluating my query?</H4>
|
evaluating my query?</H3>
|
||||||
|
|
||||||
<P>See the <SMALL>EXPLAIN</SMALL> manual page.</P>
|
<P>See the <SMALL>EXPLAIN</SMALL> manual page.</P>
|
||||||
|
|
||||||
<H4><A name="4.8">4.8</A>) How do I perform regular expression
|
<H3><A name="4.8">4.8</A>) How do I perform regular expression
|
||||||
searches and case-insensitive regular expression searches? How do I
|
searches and case-insensitive regular expression searches? How do I
|
||||||
use an index for case-insensitive searches?</H4>
|
use an index for case-insensitive searches?</H3>
|
||||||
|
|
||||||
<P>The <I>~</I> operator does regular expression matching, and
|
<P>The <I>~</I> operator does regular expression matching, and
|
||||||
<I>~*</I> does case-insensitive regular expression matching. The
|
<I>~*</I> does case-insensitive regular expression matching. The
|
||||||
@ -740,9 +740,9 @@ table?</TD><TD>unlimited</TD></TR>
|
|||||||
CREATE INDEX tabindex ON tab (lower(col));
|
CREATE INDEX tabindex ON tab (lower(col));
|
||||||
</PRE>
|
</PRE>
|
||||||
|
|
||||||
<H4><A name="4.9">4.9</A>) In a query, how do I detect if a field
|
<H3><A name="4.9">4.9</A>) In a query, how do I detect if a field
|
||||||
is <SMALL>NULL</SMALL>? How can I sort on whether a field is <SMALL>
|
is <SMALL>NULL</SMALL>? How can I sort on whether a field is <SMALL>
|
||||||
NULL</SMALL> or not?</H4>
|
NULL</SMALL> or not?</H3>
|
||||||
|
|
||||||
<P>You test the column with <SMALL>IS NULL</SMALL> and <SMALL>IS
|
<P>You test the column with <SMALL>IS NULL</SMALL> and <SMALL>IS
|
||||||
NOT NULL</SMALL>.</P>
|
NOT NULL</SMALL>.</P>
|
||||||
@ -764,8 +764,8 @@ table?</TD><TD>unlimited</TD></TR>
|
|||||||
ORDER BY (col IS NOT NULL)
|
ORDER BY (col IS NOT NULL)
|
||||||
</PRE>
|
</PRE>
|
||||||
|
|
||||||
<H4><A name="4.10">4.10</A>) What is the difference between the
|
<H3><A name="4.10">4.10</A>) What is the difference between the
|
||||||
various character types?</H4>
|
various character types?</H3>
|
||||||
<BLOCKQUOTE>
|
<BLOCKQUOTE>
|
||||||
<TABLE >
|
<TABLE >
|
||||||
<TR><TH>Type</TH><TH>Internal Name</TH><TH>Notes</TH></TR>
|
<TR><TH>Type</TH><TH>Internal Name</TH><TH>Notes</TH></TR>
|
||||||
@ -801,8 +801,8 @@ length</TD></TR>
|
|||||||
particularly values that include <SMALL>NULL</SMALL> bytes. All the
|
particularly values that include <SMALL>NULL</SMALL> bytes. All the
|
||||||
types described here have similar performance characteristics.</P>
|
types described here have similar performance characteristics.</P>
|
||||||
|
|
||||||
<H4><A name="4.11.1">4.11.1</A>) How do I create a
|
<H3><A name="4.11.1">4.11.1</A>) How do I create a
|
||||||
serial/auto-incrementing field?</H4>
|
serial/auto-incrementing field?</H3>
|
||||||
|
|
||||||
<P>PostgreSQL supports a <SMALL>SERIAL</SMALL> data type. It
|
<P>PostgreSQL supports a <SMALL>SERIAL</SMALL> data type. It
|
||||||
auto-creates a sequence. For example,
|
auto-creates a sequence. For example,
|
||||||
@ -826,8 +826,8 @@ length</TD></TR>
|
|||||||
See the <I>create_sequence</I> manual page for more information
|
See the <I>create_sequence</I> manual page for more information
|
||||||
about sequences.
|
about sequences.
|
||||||
|
|
||||||
<H4><A name="4.11.2">4.11.2</A>) How do I get the value of a
|
<H3><A name="4.11.2">4.11.2</A>) How do I get the value of a
|
||||||
<SMALL>SERIAL</SMALL> insert?</H4>
|
<SMALL>SERIAL</SMALL> insert?</H3>
|
||||||
|
|
||||||
<P>One approach is to retrieve the next <SMALL>SERIAL</SMALL> value
|
<P>One approach is to retrieve the next <SMALL>SERIAL</SMALL> value
|
||||||
from the sequence object with the <I>nextval()</I> function
|
from the sequence object with the <I>nextval()</I> function
|
||||||
@ -855,23 +855,23 @@ length</TD></TR>
|
|||||||
new_id = execute("SELECT currval('person_id_seq')");
|
new_id = execute("SELECT currval('person_id_seq')");
|
||||||
</PRE>
|
</PRE>
|
||||||
|
|
||||||
<H4><A name="4.11.3">4.11.3</A>) Doesn't <I>currval()</I>
|
<H3><A name="4.11.3">4.11.3</A>) Doesn't <I>currval()</I>
|
||||||
lead to a race condition with other users?</H4>
|
lead to a race condition with other users?</H3>
|
||||||
|
|
||||||
<P>No. <I>currval()</I> returns the current value assigned by your
|
<P>No. <I>currval()</I> returns the current value assigned by your
|
||||||
session, not by all sessions.</P>
|
session, not by all sessions.</P>
|
||||||
|
|
||||||
<H4><A name="4.11.4">4.11.4</A>) Why aren't my sequence numbers
|
<H3><A name="4.11.4">4.11.4</A>) Why aren't my sequence numbers
|
||||||
reused on transaction abort? Why are there gaps in the numbering of
|
reused on transaction abort? Why are there gaps in the numbering of
|
||||||
my sequence/SERIAL column?</H4>
|
my sequence/SERIAL column?</H3>
|
||||||
|
|
||||||
<P>To improve concurrency, sequence values are given out to running
|
<P>To improve concurrency, sequence values are given out to running
|
||||||
transactions as needed and are not locked until the transaction
|
transactions as needed and are not locked until the transaction
|
||||||
completes. This causes gaps in numbering from aborted
|
completes. This causes gaps in numbering from aborted
|
||||||
transactions.</P>
|
transactions.</P>
|
||||||
|
|
||||||
<H4><A name="4.12">4.12</A>) What is an <SMALL>OID</SMALL>? What is
|
<H3><A name="4.12">4.12</A>) What is an <SMALL>OID</SMALL>? What is
|
||||||
a <SMALL>TID</SMALL>?</H4>
|
a <SMALL>TID</SMALL>?</H3>
|
||||||
|
|
||||||
<P>Every row that is created in PostgreSQL gets a unique
|
<P>Every row that is created in PostgreSQL gets a unique
|
||||||
<SMALL>OID</SMALL> unless created <SMALL>WITHOUT OIDS</SMALL>.
|
<SMALL>OID</SMALL> unless created <SMALL>WITHOUT OIDS</SMALL>.
|
||||||
@ -893,8 +893,8 @@ length</TD></TR>
|
|||||||
are modified or reloaded. They are used by index entries to point
|
are modified or reloaded. They are used by index entries to point
|
||||||
to physical rows.</P>
|
to physical rows.</P>
|
||||||
|
|
||||||
<H4><A name="4.13">4.13</A>) Why do I get the error <I>"ERROR:
|
<H3><A name="4.13">4.13</A>) Why do I get the error <I>"ERROR:
|
||||||
Memory exhausted in AllocSetAlloc()"</I>?</H4>
|
Memory exhausted in AllocSetAlloc()"</I>?</H3>
|
||||||
|
|
||||||
<P>You probably have run out of virtual memory on your system,
|
<P>You probably have run out of virtual memory on your system,
|
||||||
or your kernel has a low limit for certain resources. Try this
|
or your kernel has a low limit for certain resources. Try this
|
||||||
@ -912,13 +912,13 @@ length</TD></TR>
|
|||||||
backend is returning too much data, try it before starting the
|
backend is returning too much data, try it before starting the
|
||||||
client.
|
client.
|
||||||
|
|
||||||
<H4><A name="4.14">4.14</A>) How do I tell what PostgreSQL version
|
<H3><A name="4.14">4.14</A>) How do I tell what PostgreSQL version
|
||||||
I am running?</H4>
|
I am running?</H3>
|
||||||
|
|
||||||
<P>From <I>psql</I>, type <CODE>SELECT version();</CODE></P>
|
<P>From <I>psql</I>, type <CODE>SELECT version();</CODE></P>
|
||||||
|
|
||||||
<H4><A name="4.15">4.15</A>) Why does my large-object operations
|
<H3><A name="4.15">4.15</A>) Why does my large-object operations
|
||||||
get <I>"invalid large obj descriptor"</I>?</H4>
|
get <I>"invalid large obj descriptor"</I>?</H3>
|
||||||
|
|
||||||
<P>You need to put <CODE>BEGIN WORK</CODE> and <CODE>COMMIT</CODE>
|
<P>You need to put <CODE>BEGIN WORK</CODE> and <CODE>COMMIT</CODE>
|
||||||
around any use of a large object handle, that is, surrounding
|
around any use of a large object handle, that is, surrounding
|
||||||
@ -933,15 +933,15 @@ length</TD></TR>
|
|||||||
<P>If you are using a client interface like <SMALL>ODBC</SMALL> you
|
<P>If you are using a client interface like <SMALL>ODBC</SMALL> you
|
||||||
may need to set <CODE>auto-commit off.</CODE></P>
|
may need to set <CODE>auto-commit off.</CODE></P>
|
||||||
|
|
||||||
<H4><A name="4.16">4.16</A>) How do I create a column that will
|
<H3><A name="4.16">4.16</A>) How do I create a column that will
|
||||||
default to the current time?</H4>
|
default to the current time?</H3>
|
||||||
|
|
||||||
<P>Use <I>CURRENT_TIMESTAMP</I>:</P>
|
<P>Use <I>CURRENT_TIMESTAMP</I>:</P>
|
||||||
<PRE>
|
<PRE>
|
||||||
CREATE TABLE test (x int, modtime TIMESTAMP DEFAULT CURRENT_TIMESTAMP );
|
CREATE TABLE test (x int, modtime TIMESTAMP DEFAULT CURRENT_TIMESTAMP );
|
||||||
</PRE>
|
</PRE>
|
||||||
|
|
||||||
<H4><A name="4.17">4.17</A>) How do I perform an outer join?</H4>
|
<H3><A name="4.17">4.17</A>) How do I perform an outer join?</H3>
|
||||||
|
|
||||||
<P>PostgreSQL supports outer joins using the SQL standard syntax.
|
<P>PostgreSQL supports outer joins using the SQL standard syntax.
|
||||||
Here are two examples:</P>
|
Here are two examples:</P>
|
||||||
@ -964,8 +964,8 @@ length</TD></TR>
|
|||||||
<SMALL>RIGHT</SMALL>, and <SMALL>FULL</SMALL> joins. Ordinary joins
|
<SMALL>RIGHT</SMALL>, and <SMALL>FULL</SMALL> joins. Ordinary joins
|
||||||
are called <SMALL>INNER</SMALL> joins.</P>
|
are called <SMALL>INNER</SMALL> joins.</P>
|
||||||
|
|
||||||
<H4><A name="4.18">4.18</A>) How do I perform queries using
|
<H3><A name="4.18">4.18</A>) How do I perform queries using
|
||||||
multiple databases?</H4>
|
multiple databases?</H3>
|
||||||
|
|
||||||
<P>There is no way to query a database other than the current one.
|
<P>There is no way to query a database other than the current one.
|
||||||
Because PostgreSQL loads database-specific system catalogs, it is
|
Because PostgreSQL loads database-specific system catalogs, it is
|
||||||
@ -976,16 +976,16 @@ length</TD></TR>
|
|||||||
connections to different databases and merge the results on the
|
connections to different databases and merge the results on the
|
||||||
client side.</P>
|
client side.</P>
|
||||||
|
|
||||||
<H4><A name="4.19">4.19</A>) How do I return multiple rows or
|
<H3><A name="4.19">4.19</A>) How do I return multiple rows or
|
||||||
columns from a function?</H4>
|
columns from a function?</H3>
|
||||||
|
|
||||||
<P>It is easy using set-returning functions,
|
<P>It is easy using set-returning functions,
|
||||||
<a href="http://techdocs.postgresql.org/guides/SetReturningFunctions">
|
<a href="http://techdocs.postgresql.org/guides/SetReturningFunctions">
|
||||||
http://techdocs.postgresql.org/guides/SetReturningFunctions</a></P>.
|
http://techdocs.postgresql.org/guides/SetReturningFunctions</a></P>.
|
||||||
|
|
||||||
<H4><A name="4.20">4.20</A>) Why do I get "relation with OID #####
|
<H3><A name="4.20">4.20</A>) Why do I get "relation with OID #####
|
||||||
does not exist" errors when accessing temporary tables in PL/PgSQL
|
does not exist" errors when accessing temporary tables in PL/PgSQL
|
||||||
functions?</H4>
|
functions?</H3>
|
||||||
|
|
||||||
<P>PL/PgSQL caches function scripts, and an unfortunate side effect
|
<P>PL/PgSQL caches function scripts, and an unfortunate side effect
|
||||||
is that if a PL/PgSQL function accesses a temporary table, and that
|
is that if a PL/PgSQL function accesses a temporary table, and that
|
||||||
@ -995,8 +995,8 @@ length</TD></TR>
|
|||||||
<SMALL>EXECUTE</SMALL> for temporary table access in PL/PgSQL. This
|
<SMALL>EXECUTE</SMALL> for temporary table access in PL/PgSQL. This
|
||||||
will cause the query to be reparsed every time.</P>
|
will cause the query to be reparsed every time.</P>
|
||||||
|
|
||||||
<H4><A name="4.21">4.21</A>) What encryption options are available?
|
<H3><A name="4.21">4.21</A>) What encryption options are available?
|
||||||
</H4>
|
</H3>
|
||||||
<UL>
|
<UL>
|
||||||
<LI><I>contrib/pgcrypto</I> contains many encryption functions for
|
<LI><I>contrib/pgcrypto</I> contains many encryption functions for
|
||||||
use in <SMALL>SQL</SMALL> queries.</LI>
|
use in <SMALL>SQL</SMALL> queries.</LI>
|
||||||
@ -1016,21 +1016,21 @@ length</TD></TR>
|
|||||||
|
|
||||||
<H2 align="center">Extending PostgreSQL</H2>
|
<H2 align="center">Extending PostgreSQL</H2>
|
||||||
|
|
||||||
<H4><A name="5.1">5.1</A>) I wrote a user-defined function. When I
|
<H3><A name="5.1">5.1</A>) I wrote a user-defined function. When I
|
||||||
run it in <I>psql</I>, why does it dump core?</H4>
|
run it in <I>psql</I>, why does it dump core?</H3>
|
||||||
|
|
||||||
<P>The problem could be a number of things. Try testing your
|
<P>The problem could be a number of things. Try testing your
|
||||||
user-defined function in a stand-alone test program first.</P>
|
user-defined function in a stand-alone test program first.</P>
|
||||||
|
|
||||||
<H4><A name="5.2">5.2</A>) How can I contribute some nifty new
|
<H3><A name="5.2">5.2</A>) How can I contribute some nifty new
|
||||||
types and functions to PostgreSQL?</H4>
|
types and functions to PostgreSQL?</H3>
|
||||||
|
|
||||||
<P>Send your extensions to the <I>pgsql-hackers</I> mailing list,
|
<P>Send your extensions to the <I>pgsql-hackers</I> mailing list,
|
||||||
and they will eventually end up in the <I>contrib/</I>
|
and they will eventually end up in the <I>contrib/</I>
|
||||||
subdirectory.</P>
|
subdirectory.</P>
|
||||||
|
|
||||||
<H4><A name="5.3">5.3</A>) How do I write a C function to return a
|
<H3><A name="5.3">5.3</A>) How do I write a C function to return a
|
||||||
tuple?</H4>
|
tuple?</H3>
|
||||||
|
|
||||||
<P>In versions of PostgreSQL beginning with 7.3, table-returning
|
<P>In versions of PostgreSQL beginning with 7.3, table-returning
|
||||||
functions are fully supported in C, PL/PgSQL, and SQL. See the
|
functions are fully supported in C, PL/PgSQL, and SQL. See the
|
||||||
@ -1038,8 +1038,8 @@ length</TD></TR>
|
|||||||
table-returning function defined in C can be found in
|
table-returning function defined in C can be found in
|
||||||
<I>contrib/tablefunc</I>.</P>
|
<I>contrib/tablefunc</I>.</P>
|
||||||
|
|
||||||
<H4><A name="5.4">5.4</A>) I have changed a source file. Why does
|
<H3><A name="5.4">5.4</A>) I have changed a source file. Why does
|
||||||
the recompile not see the change?</H4>
|
the recompile not see the change?</H3>
|
||||||
|
|
||||||
<P>The <I>Makefiles</I> do not have the proper dependencies for
|
<P>The <I>Makefiles</I> do not have the proper dependencies for
|
||||||
include files. You have to do a <I>make clean</I> and then another
|
include files. You have to do a <I>make clean</I> and then another
|
||||||
|
Loading…
Reference in New Issue
Block a user