|
|
|
|
@ -10,7 +10,7 @@ |
|
|
|
|
alink="#0000ff"> |
|
|
|
|
<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= |
|
|
|
|
"mailto:pgman@candle.pha.pa.us">pgman@candle.pha.pa.us</A>) |
|
|
|
|
@ -133,7 +133,7 @@ |
|
|
|
|
|
|
|
|
|
<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 |
|
|
|
|
<I>Postgres</I>.</P> |
|
|
|
|
@ -152,8 +152,8 @@ |
|
|
|
|
http://www.postgresql.org/files/documentation/faqs/FAQ_DEV.html</A> |
|
|
|
|
</P> |
|
|
|
|
|
|
|
|
|
<H4><A name="1.2">1.2</A>) What is the copyright of |
|
|
|
|
PostgreSQL?</H4> |
|
|
|
|
<H3><A name="1.2">1.2</A>) What is the copyright of |
|
|
|
|
PostgreSQL?</H3> |
|
|
|
|
|
|
|
|
|
<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 |
|
|
|
|
@ -185,7 +185,7 @@ |
|
|
|
|
UNIVERSITY OF CALIFORNIA HAS NO OBLIGATIONS TO PROVIDE MAINTENANCE, |
|
|
|
|
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 |
|
|
|
|
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</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/"> |
|
|
|
|
http://www.postgresql.org/ftp/</a>, and via ftp, use |
|
|
|
|
<A href="ftp://ftp.PostgreSQL.org/pub/"> |
|
|
|
|
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 |
|
|
|
|
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</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= |
|
|
|
|
"http://www.postgresql.org/support/submitbug"> |
|
|
|
|
@ -240,14 +240,14 @@ |
|
|
|
|
"ftp://ftp.PostgreSQL.org/pub/">ftp://ftp.PostgreSQL.org/pub/</A> to |
|
|
|
|
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>We plan to have a major release every year, with minor releases |
|
|
|
|
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 |
|
|
|
|
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> |
|
|
|
|
|
|
|
|
|
<H4><A name="1.9">1.9</A>) How do I find out about known bugs or |
|
|
|
|
missing features?</H4> |
|
|
|
|
<H3><A name="1.9">1.9</A>) How do I find out about known bugs or |
|
|
|
|
missing features?</H3> |
|
|
|
|
|
|
|
|
|
<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> |
|
|
|
|
list for known bugs, missing features, and future plans.</P> |
|
|
|
|
|
|
|
|
|
<H4><A name="1.10">1.10</A>) How can I learn |
|
|
|
|
<SMALL>SQL</SMALL>?</H4> |
|
|
|
|
<H3><A name="1.10">1.10</A>) How can I learn |
|
|
|
|
<SMALL>SQL</SMALL>?</H3> |
|
|
|
|
|
|
|
|
|
<P>First, consider the PostgreSQL-specific books mentioned above. |
|
|
|
|
Another one is "Teach Yourself SQL in 21 Days, Second Edition" |
|
|
|
|
@ -298,14 +298,14 @@ |
|
|
|
|
and at <A href= |
|
|
|
|
"http://sqlcourse.com/">http://sqlcourse.com.</A></P> |
|
|
|
|
|
|
|
|
|
<H4><A name="1.11">1.11</A>) How do I join the development |
|
|
|
|
team?</H4> |
|
|
|
|
<H3><A name="1.11">1.11</A>) How do I join the development |
|
|
|
|
team?</H3> |
|
|
|
|
|
|
|
|
|
<P>See the <a href="http://www.postgresql.org/docs/faqs.FAQ_DEV.html"> |
|
|
|
|
Developer's FAQ</A>. |
|
|
|
|
|
|
|
|
|
<H4><A name="1.12">1.12</A>) How does PostgreSQL compare to other |
|
|
|
|
<SMALL>DBMS</SMALL>s?</H4> |
|
|
|
|
<H3><A name="1.12">1.12</A>) How does PostgreSQL compare to other |
|
|
|
|
<SMALL>DBMS</SMALL>s?</H3> |
|
|
|
|
|
|
|
|
|
<P>There are several ways of measuring software: features, |
|
|
|
|
performance, reliability, support, and price.</P> |
|
|
|
|
@ -368,8 +368,8 @@ |
|
|
|
|
|
|
|
|
|
<H2 align="center">User Client Questions</H2> |
|
|
|
|
|
|
|
|
|
<H4><A name="2.1">2.1</A>) What interfaces are available for |
|
|
|
|
PostgreSQL?</H4> |
|
|
|
|
<H3><A name="2.1">2.1</A>) 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 |
|
|
|
|
@ -383,8 +383,8 @@ |
|
|
|
|
in the <I>Drivers/Interfaces</I> section and via Internet search. |
|
|
|
|
</P> |
|
|
|
|
|
|
|
|
|
<H4><A name="2.2">2.2</A>) What tools are available for using |
|
|
|
|
PostgreSQL with Web pages?</H4> |
|
|
|
|
<H3><A name="2.2">2.2</A>) 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> |
|
|
|
|
@ -396,8 +396,8 @@ |
|
|
|
|
<P>For complex cases, many use the Perl and DBD::Pg with CGI.pm or |
|
|
|
|
mod_perl.</P> |
|
|
|
|
|
|
|
|
|
<H4><A name="2.3">2.3</A>) Does PostgreSQL have a graphical user |
|
|
|
|
interface?</H4> |
|
|
|
|
<H3><A name="2.3">2.3</A>) Does PostgreSQL have a graphical user |
|
|
|
|
interface?</H3> |
|
|
|
|
|
|
|
|
|
<P>Yes, see <a href="http://techdocs.postgresql.org/guides/GUITools"> |
|
|
|
|
http://techdocs.postgresql.org/guides/GUITools</a> for a |
|
|
|
|
@ -408,14 +408,14 @@ |
|
|
|
|
|
|
|
|
|
<H2 align="center">Administrative Questions</H2> |
|
|
|
|
|
|
|
|
|
<H4><A name="3.1">3.1</A>) How do I install PostgreSQL somewhere |
|
|
|
|
other than <I>/usr/local/pgsql</I>?</H4> |
|
|
|
|
<H3><A name="3.1">3.1</A>) 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> |
|
|
|
|
|
|
|
|
|
<H4><A name="3.2">3.2</A>) How do I control connections from other |
|
|
|
|
hosts?</H4> |
|
|
|
|
<H3><A name="3.2">3.2</A>) 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 |
|
|
|
|
@ -424,8 +424,8 @@ |
|
|
|
|
host-based authentication by modifying the |
|
|
|
|
<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 |
|
|
|
|
better performance?</H4> |
|
|
|
|
<H3><A name="3.3">3.3</A>) How do I tune the database engine for |
|
|
|
|
better performance?</H3> |
|
|
|
|
|
|
|
|
|
<P>There are three major areas for potential performance |
|
|
|
|
improvement:</P> |
|
|
|
|
@ -481,15 +481,15 @@ |
|
|
|
|
</DD> |
|
|
|
|
</DL> |
|
|
|
|
|
|
|
|
|
<H4><A name="3.4">3.4</A>) What debugging features are |
|
|
|
|
available?</H4> |
|
|
|
|
<H3><A name="3.4">3.4</A>) What debugging features are |
|
|
|
|
available?</H3> |
|
|
|
|
|
|
|
|
|
<P>There are many <CODE>log_*</CODE> server configuration variables |
|
|
|
|
that enable printing of query and process statistics which can be |
|
|
|
|
very useful for debugging and performance measurements.</P> |
|
|
|
|
|
|
|
|
|
<H4><A name="3.5">3.5</A>) Why do I get <I>"Sorry, too many |
|
|
|
|
clients"</I> when trying to connect?</H4> |
|
|
|
|
<H3><A name="3.5">3.5</A>) Why do I get <I>"Sorry, too many |
|
|
|
|
clients"</I> when trying to connect?</H3> |
|
|
|
|
|
|
|
|
|
<P>You have reached the default limit is 100 database sessions. You |
|
|
|
|
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 |
|
|
|
|
restarting the <I>postmaster</I>.</P> |
|
|
|
|
|
|
|
|
|
<H4><A name="3.6">3.6</A>) Why do I need to do a dump and restore |
|
|
|
|
to upgrade between major PostgreSQL releases?</H4> |
|
|
|
|
<H3><A name="3.6">3.6</A>) Why do I need to do a dump and restore |
|
|
|
|
to upgrade between major PostgreSQL releases?</H3> |
|
|
|
|
|
|
|
|
|
<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. |
|
|
|
|
@ -508,7 +508,7 @@ |
|
|
|
|
data in a generic format that can then be loaded in using the new internal |
|
|
|
|
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 |
|
|
|
|
all PC hardware is of equal quality. It is not. ECC RAM, SCSI, and |
|
|
|
|
@ -522,8 +522,8 @@ |
|
|
|
|
|
|
|
|
|
<H2 align="center">Operational Questions</H2> |
|
|
|
|
|
|
|
|
|
<H4><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> |
|
|
|
|
<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?</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 |
|
|
|
|
@ -541,9 +541,9 @@ |
|
|
|
|
LIMIT 1; |
|
|
|
|
</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 |
|
|
|
|
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 |
|
|
|
|
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 |
|
|
|
|
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 |
|
|
|
|
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 |
|
|
|
|
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 |
|
|
|
|
table, and a database?</H4> |
|
|
|
|
<H3><A name="4.4">4.4</A>) What is the maximum size for a row, a |
|
|
|
|
table, and a database?</H3> |
|
|
|
|
|
|
|
|
|
<P>These are the limits:</P> |
|
|
|
|
<BLOCKQUOTE> |
|
|
|
|
@ -611,8 +611,8 @@ table?</TD><TD>unlimited</TD></TR> |
|
|
|
|
<P>The maximum table size and maximum number of columns can be |
|
|
|
|
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 |
|
|
|
|
to store data from a typical text file?</H4> |
|
|
|
|
<H3><A name="4.5">4.5</A>) 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> |
|
|
|
|
@ -648,8 +648,8 @@ table?</TD><TD>unlimited</TD></TR> |
|
|
|
|
<P><SMALL>NULL</SMALL>s are stored as bitmaps, so they |
|
|
|
|
use very little space.</P> |
|
|
|
|
|
|
|
|
|
<H4><A name="4.6">4.6</A>) Why are my queries slow? Why don't they |
|
|
|
|
use my indexes?</H4> |
|
|
|
|
<H3><A name="4.6">4.6</A>) 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 |
|
|
|
|
@ -712,14 +712,14 @@ table?</TD><TD>unlimited</TD></TR> |
|
|
|
|
types exactly match the index's column types. This was particularly |
|
|
|
|
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 |
|
|
|
|
evaluating my query?</H4> |
|
|
|
|
<H3><A name="4.7">4.7</A>) How do I see how the query optimizer is |
|
|
|
|
evaluating my query?</H3> |
|
|
|
|
|
|
|
|
|
<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 |
|
|
|
|
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 |
|
|
|
|
<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)); |
|
|
|
|
</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> |
|
|
|
|
NULL</SMALL> or not?</H4> |
|
|
|
|
NULL</SMALL> or not?</H3> |
|
|
|
|
|
|
|
|
|
<P>You test the column with <SMALL>IS NULL</SMALL> and <SMALL>IS |
|
|
|
|
NOT NULL</SMALL>.</P> |
|
|
|
|
@ -764,8 +764,8 @@ table?</TD><TD>unlimited</TD></TR> |
|
|
|
|
ORDER BY (col IS NOT NULL) |
|
|
|
|
</PRE> |
|
|
|
|
|
|
|
|
|
<H4><A name="4.10">4.10</A>) What is the difference between the |
|
|
|
|
various character types?</H4> |
|
|
|
|
<H3><A name="4.10">4.10</A>) What is the difference between the |
|
|
|
|
various character types?</H3> |
|
|
|
|
<BLOCKQUOTE> |
|
|
|
|
<TABLE > |
|
|
|
|
<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 |
|
|
|
|
types described here have similar performance characteristics.</P> |
|
|
|
|
|
|
|
|
|
<H4><A name="4.11.1">4.11.1</A>) How do I create a |
|
|
|
|
serial/auto-incrementing field?</H4> |
|
|
|
|
<H3><A name="4.11.1">4.11.1</A>) 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, |
|
|
|
|
@ -826,8 +826,8 @@ length</TD></TR> |
|
|
|
|
See the <I>create_sequence</I> manual page for more information |
|
|
|
|
about sequences. |
|
|
|
|
|
|
|
|
|
<H4><A name="4.11.2">4.11.2</A>) How do I get the value of a |
|
|
|
|
<SMALL>SERIAL</SMALL> insert?</H4> |
|
|
|
|
<H3><A name="4.11.2">4.11.2</A>) How do I get the value of a |
|
|
|
|
<SMALL>SERIAL</SMALL> insert?</H3> |
|
|
|
|
|
|
|
|
|
<P>One approach is to retrieve the next <SMALL>SERIAL</SMALL> value |
|
|
|
|
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')"); |
|
|
|
|
</PRE> |
|
|
|
|
|
|
|
|
|
<H4><A name="4.11.3">4.11.3</A>) Doesn't <I>currval()</I> |
|
|
|
|
lead to a race condition with other users?</H4> |
|
|
|
|
<H3><A name="4.11.3">4.11.3</A>) 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> |
|
|
|
|
|
|
|
|
|
<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 |
|
|
|
|
my sequence/SERIAL column?</H4> |
|
|
|
|
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> |
|
|
|
|
|
|
|
|
|
<H4><A name="4.12">4.12</A>) What is an <SMALL>OID</SMALL>? What is |
|
|
|
|
a <SMALL>TID</SMALL>?</H4> |
|
|
|
|
<H3><A name="4.12">4.12</A>) What is an <SMALL>OID</SMALL>? What is |
|
|
|
|
a <SMALL>TID</SMALL>?</H3> |
|
|
|
|
|
|
|
|
|
<P>Every row that is created in PostgreSQL gets a unique |
|
|
|
|
<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 |
|
|
|
|
to physical rows.</P> |
|
|
|
|
|
|
|
|
|
<H4><A name="4.13">4.13</A>) Why do I get the error <I>"ERROR: |
|
|
|
|
Memory exhausted in AllocSetAlloc()"</I>?</H4> |
|
|
|
|
<H3><A name="4.13">4.13</A>) 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 |
|
|
|
|
@ -912,13 +912,13 @@ length</TD></TR> |
|
|
|
|
backend is returning too much data, try it before starting the |
|
|
|
|
client. |
|
|
|
|
|
|
|
|
|
<H4><A name="4.14">4.14</A>) How do I tell what PostgreSQL version |
|
|
|
|
I am running?</H4> |
|
|
|
|
<H3><A name="4.14">4.14</A>) How do I tell what PostgreSQL version |
|
|
|
|
I am running?</H3> |
|
|
|
|
|
|
|
|
|
<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 |
|
|
|
|
get <I>"invalid large obj descriptor"</I>?</H4> |
|
|
|
|
<H3><A name="4.15">4.15</A>) Why does my large-object operations |
|
|
|
|
get <I>"invalid large obj descriptor"</I>?</H3> |
|
|
|
|
|
|
|
|
|
<P>You need to put <CODE>BEGIN WORK</CODE> and <CODE>COMMIT</CODE> |
|
|
|
|
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 |
|
|
|
|
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 |
|
|
|
|
default to the current time?</H4> |
|
|
|
|
<H3><A name="4.16">4.16</A>) 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> |
|
|
|
|
|
|
|
|
|
<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. |
|
|
|
|
Here are two examples:</P> |
|
|
|
|
@ -964,8 +964,8 @@ length</TD></TR> |
|
|
|
|
<SMALL>RIGHT</SMALL>, and <SMALL>FULL</SMALL> joins. Ordinary joins |
|
|
|
|
are called <SMALL>INNER</SMALL> joins.</P> |
|
|
|
|
|
|
|
|
|
<H4><A name="4.18">4.18</A>) How do I perform queries using |
|
|
|
|
multiple databases?</H4> |
|
|
|
|
<H3><A name="4.18">4.18</A>) 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 |
|
|
|
|
@ -976,16 +976,16 @@ length</TD></TR> |
|
|
|
|
connections to different databases and merge the results on the |
|
|
|
|
client side.</P> |
|
|
|
|
|
|
|
|
|
<H4><A name="4.19">4.19</A>) How do I return multiple rows or |
|
|
|
|
columns from a function?</H4> |
|
|
|
|
<H3><A name="4.19">4.19</A>) How do I return multiple rows or |
|
|
|
|
columns from a function?</H3> |
|
|
|
|
|
|
|
|
|
<P>It is easy using set-returning functions, |
|
|
|
|
<a href="http://techdocs.postgresql.org/guides/SetReturningFunctions"> |
|
|
|
|
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 |
|
|
|
|
functions?</H4> |
|
|
|
|
functions?</H3> |
|
|
|
|
|
|
|
|
|
<P>PL/PgSQL caches function scripts, and an unfortunate side effect |
|
|
|
|
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 |
|
|
|
|
will cause the query to be reparsed every time.</P> |
|
|
|
|
|
|
|
|
|
<H4><A name="4.21">4.21</A>) What encryption options are available? |
|
|
|
|
</H4> |
|
|
|
|
<H3><A name="4.21">4.21</A>) What encryption options are available? |
|
|
|
|
</H3> |
|
|
|
|
<UL> |
|
|
|
|
<LI><I>contrib/pgcrypto</I> contains many encryption functions for |
|
|
|
|
use in <SMALL>SQL</SMALL> queries.</LI> |
|
|
|
|
@ -1016,21 +1016,21 @@ length</TD></TR> |
|
|
|
|
|
|
|
|
|
<H2 align="center">Extending PostgreSQL</H2> |
|
|
|
|
|
|
|
|
|
<H4><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> |
|
|
|
|
<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?</H3> |
|
|
|
|
|
|
|
|
|
<P>The problem could be a number of things. Try testing your |
|
|
|
|
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 |
|
|
|
|
types and functions to PostgreSQL?</H4> |
|
|
|
|
<H3><A name="5.2">5.2</A>) How can I contribute some nifty new |
|
|
|
|
types and functions to PostgreSQL?</H3> |
|
|
|
|
|
|
|
|
|
<P>Send your extensions to the <I>pgsql-hackers</I> mailing list, |
|
|
|
|
and they will eventually end up in the <I>contrib/</I> |
|
|
|
|
subdirectory.</P> |
|
|
|
|
|
|
|
|
|
<H4><A name="5.3">5.3</A>) How do I write a C function to return a |
|
|
|
|
tuple?</H4> |
|
|
|
|
<H3><A name="5.3">5.3</A>) How do I write a C function to return a |
|
|
|
|
tuple?</H3> |
|
|
|
|
|
|
|
|
|
<P>In versions of PostgreSQL beginning with 7.3, table-returning |
|
|
|
|
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 |
|
|
|
|
<I>contrib/tablefunc</I>.</P> |
|
|
|
|
|
|
|
|
|
<H4><A name="5.4">5.4</A>) I have changed a source file. Why does |
|
|
|
|
the recompile not see the change?</H4> |
|
|
|
|
<H3><A name="5.4">5.4</A>) I have changed a source file. Why does |
|
|
|
|
the recompile not see the change?</H3> |
|
|
|
|
|
|
|
|
|
<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 |
|
|
|
|
|