Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
P
Postgres FD Implementation
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Abuhujair Javed
Postgres FD Implementation
Commits
7d7adf24
Commit
7d7adf24
authored
Aug 30, 1998
by
Bruce Momjian
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Update FAQ.
parent
caa94681
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
150 additions
and
138 deletions
+150
-138
doc/FAQ
doc/FAQ
+150
-138
No files found.
doc/FAQ
View file @
7d7adf24
Frequently Asked Questions (FAQ) for PostgreSQL
Last updated:
Wed Apr 15 12:47:01
EDT 1998
Last updated:
Sun Aug 30 00:01:22
EDT 1998
Current maintainer: Bruce Momjian (maillist@candle.pha.pa.us)
...
...
@@ -53,47 +53,49 @@ Questions answered:
2.7) I have changed a source file, but a recompile does not see the
change?
2.8) How do I prevent other hosts from accessing my PostgreSQL
database?
2.9) I can't access the database as the 'root' user.
2.10) All my servers crash under concurrent table access. Why?
2.11) How do I tune the database engine for better performance?
2.12) What debugging features are available in PostgreSQL?
2.13) How do I enable more than
32
concurrent backends? 2.14) What
2.13) How do I enable more than
64
concurrent backends? 2.14) What
non-unix ports are available?
3) Operational questions
3.1) Does PostgreSQL support nested subqueries?
3.2) I've having a lot of problems using rules.
3.3) I can't seem to write into the middle of large objects reliably.
3.4) How can I write client applications to PostgreSQL?
3.5) How do I set up a pg_group?
3.6) What is the exact difference between binary cursors and normal
3.2) How can I write client applications to PostgreSQL?
3.3) How do I set up a pg_group?
3.4) What is the exact difference between binary cursors and normal
cursors?
3.
7) What is a
R-tree index and what is it used for?
3.
8
) What is the maximum size for a tuple?
3.
9
) I defined indices but my queries don't seem to make use of them.
3.
5) What is an
R-tree index and what is it used for?
3.
6
) What is the maximum size for a tuple?
3.
7
) I defined indices but my queries don't seem to make use of them.
Why?
3.
10
) How do I do regular expression searches? case-insensitive regexp
3.
8
) How do I do regular expression searches? case-insensitive regexp
searching?
3.
11) I experienced a server crash during a vacuum. How do I remov
e
the
lock file?
3.1
2
) What is the difference between the various character types?
3.1
3
) In a query, how do I detect if a field is NULL?
3.1
4
) How do I see how the query optimizer is evaluating my query?
3.1
5) How do I create a serial
field?
3.1
6
) What are the pg_psort.XXX files in my database directory?
3.1
7
) Why can't I connect to my database from another machine?
3.1
8
) How do I find out what indexes or operations are defined in the
3.
9) I experienced a server crash during a vacuum. How do I remove th
e
lock file?
3.1
0
) What is the difference between the various character types?
3.1
1
) In a query, how do I detect if a field is NULL?
3.1
2
) How do I see how the query optimizer is evaluating my query?
3.1
3) How do I create a serial/auto-incrementing
field?
3.1
4
) What are the pg_psort.XXX files in my database directory?
3.1
5
) Why can't I connect to my database from another machine?
3.1
6
) How do I find out what indexes or operations are defined in the
database?
3.19) What is the time-warp feature and how does it relate to vacuum?
3.20) What is an oid? What is a tid?
3.21) What is the meaning of some of the terms used in PostgreSQL?
3.22) What is Genetic Query Optimization?
3.23) How do you remove a column from a table?
3.24) How do SELECT only the first few rows of a query?
3.25) Why can't I create a column named "time"?
3.26) How much database disk space is required to store data from a
3.17) What is an oid? What is a tid?
3.18) What is the meaning of some of the terms used in PostgreSQL?
3.19) What is Genetic Query Optimization?
3.20) How do you remove a column from a table?
3.21) How do SELECT only the first few rows of a query?
3.22) How much database disk space is required to store data from a
typical flat file?
3.23) How do I get a list of tables, or other things I can see in
psql?
3.24) Why do I get the error "FATAL: palloc failure: memory
exhausted?"
3.25) How do I tell what PostgreSQL version I am running?
4) Questions about extending PostgreSQL
...
...
@@ -205,20 +207,18 @@ Section 1: General Questions
maintainers or from University of California, Berkeley. It is
maintained through volunteer effort only.
The main mailing list is: questions@postgreSQL.org. It is available
for discussion o f matters pertaining to PostgreSQL, including but not
limited to bug reports and fixes. For info on how to subscribe, send a
mail with the lines in the body (not the subject line)
The main mailing list is: pgsql-general@postgreSQL.org. It is
available for discussion of matters pertaining to PostgreSQL, For info
on how to subscribe, send a mail with the lines in the body (not the
subject line)
subscribe
end
to
questions
-request@postgreSQL.org.
to
pgsql-general
-request@postgreSQL.org.
There is also a digest list available. To subscribe to this list, send
email to: questions-digest-request@postgreSQL.org with a BODY of:
email to: pgsql-general-digest-request@postgreSQL.org with a BODY of:
subscribe
end
...
...
@@ -226,8 +226,8 @@ Section 1: General Questions
Digests are sent out to members of this list whenever the main list
has received around 30k of messages.
The
re is a bugs mailing list available. To subscribe to this list,
send email
to bugs-request@postgreSQL.org with a BODY of:
The
bugs mailing list available. To subscribe to this list, send email
to bugs-request@postgreSQL.org with a BODY of:
There is also a developers discussion mailing list available. To
subscribe to this list, send email to hackers-request@postgreSQL.org
...
...
@@ -237,16 +237,19 @@ Section 1: General Questions
subscribe
end
Additional
information about PostgreSQL can be found via the
PostgreSQL WWW home page at:
Additional
mailing lists and information about PostgreSQL can be found
via the
PostgreSQL WWW home page at:
http://postgreSQL.org
There also an IRC channel on EFNet, channel #PostgreSQL. I use the
unix command irc -c '#PostgreSQL' "$USER" irc.ais.net
1.6) Latest release of PostgreSQL
The latest release of PostgreSQL is version 6.
3.2
.
The latest release of PostgreSQL is version 6.
4 beta
.
We plan to have major releases every
three
months.
We plan to have major releases every
four
months.
1.7) Is there a commercial version of PostgreSQL?
...
...
@@ -254,15 +257,15 @@ Section 1: General Questions
Software, Inc.) sells an object-relational DBMS called Illustra that
was originally based on postgres. Illustra has cosmetic similarities
to PostgreSQL but has more features, is more robust, performs better,
and offers real
documentation and support. On the flip side, it costs
money. For more
information, contact sales@illustra.com
and offers real
support. On the flip side, it costs money. For more
information, contact sales@illustra.com
1.8) What documentation is available for PostgreSQL?
A user manual, manual pages, and some small test examples are included
in
the distribution. The pgintro, sql, and pgbuiltin manual pages are
particularly important. pgintro contains a list of all available
manual pages.
Several manuals, manual pages, and some small test examples are
in
cluded in the distribution. See the /doc directory. The pgintro,
sql, and pgbuiltin manual pages are particularly important. pgintro
contains a list of all available
manual pages.
psql has some nice \d commands to show information about types,
operators, functions, aggregates, etc.
...
...
@@ -272,44 +275,30 @@ Section 1: General Questions
1.9) What version of SQL does PostgreSQL use?
PostgreSQL supports a subset of SQL-92.
PostgreSQL supports a
n extended
subset of SQL-92.
1.10) Does PostgreSQL work with databases from earlier versions of
PostgreSQL?
PostgreSQL v1.09 is compatible with databases created with v1.01.
Upgrading to 6.3 from earlier releases requires a dump and restore.
Upgrading to 6.2.1 from pre-6.2 requires a dump and restore.
Upgrading to 6.2.1 from 6.2 does not require a dump, but see the
appropriate /migration file in the distribution.
Upgrading to 6.4 from earlier releases requires a dump and restore.
Those ugrading from versions earlier than 1.09 must upgrade to 1.09
first without a dump/reload, then dump the data from 1.09, and then
load it into 6.
2.1 or 6.3
.
load it into 6.
4
.
1.11) Are there ODBC drivers for PostgreSQL?
There are two ODBC drivers available, PostODBC and OpenLink ODBC.
PostODBC is included in the distribution. For all people being
interested in PostODBC, there are now two mailing lists devoted to the
discussion of PostODBC. The mailing lists are:
* postodbc-users@listserv.direct. net
* postodbc-developers@listse rv.direct.net
these lists are ordinary majordomo mailing lists. You can subscribe by
sending a mail to:
* majordomo@listserv.direct.net
OpenLink ODBC is very popular. You can get it from
http://www.openlinksw.com. It works with our standard ODBC client
software so you'll have PostgreSQL ODBC available on every client
platform we support (Win, Mac, Unix, VMS).
PostODBC is included in the distribution. More information about it
can be gotten from: http://www.insightdist.com/psqlodbc
We will probably be selling this product to people who need
OpenLink ODBC can be gotten from http://www.openlinksw.com. It works
with their standard ODBC client software so you'll have PostgreSQL
ODBC available on every client platform they support (Win, Mac, Unix,
VMS).
They will probably be selling this product to people who need
commercial-quality support, but a freeware version will always be
available. Questions to postgres95@openlink.co.uk.
...
...
@@ -339,7 +328,10 @@ Section 1: General Questions
1.14) How can I learn SQL?
There is a nice tutorial at http://w3.one.net/~jhoffman/sqltut.htm
There is a nice tutorial at http://w3.one.net/~jhoffman/sqltut.htm and
at
http://ourworld.compuserve.com/homepages/Graeme_Birchall/DB2_COOK.HTM.
Many of our users like The Practical SQL Handbook, Bowman et al,
Addison Wesley.
...
...
@@ -361,6 +353,8 @@ Section 2: Installation Questions
2.1) initdb doesn't run
* check that you don't have any of the previous version's binaries
in your path
* check to see that you have the proper paths set
* check that the 'postgres' user owns all the right files
* ensure that there are files in $PGDATA/files, and that they are
...
...
@@ -404,7 +398,7 @@ Section 2: Installation Questions
The Makefiles do not have the proper dependencies for include files.
You have to do a 'make clean' and then another 'make'.
2.8) How do I prevent other hosts from accessing my PostgreSQL
backend
?
2.8) How do I prevent other hosts from accessing my PostgreSQL
database
?
By default, PostgreSQL only allows connections from the local machine
using unix domain. You must add the -i flag to the postmaster, and
...
...
@@ -425,9 +419,17 @@ Section 2: Installation Questions
2.11) How do I tune the database engine for better performance?
There are several things that can be done. You can disable fsync() by
starting the postmaster with a '-o -F' option. This will prevent
fsync()'s from flushing to disk after every transaction.
If you are doing a lot of INSERTs, consider doing them in a large
batch using the COPY command. This is much faster than single
individual INSERTs. Second, statements not in a BEGIN WORK/COMMIT
transaction block are considered to be their in their own transaction.
Consider performing several statements in a single transaction block.
This reduces the transaction overhead. Also consider dropping and
recreating indexes when making large data changes.
There are several tuning things that can be done. You can disable
fsync() by starting the postmaster with a '-o -F' option. This will
prevent fsync()'s from flushing to disk after every transaction.
You can also use the postmaster -B option to increase the number of
shared memory buffers shared among the backend processes. If you make
...
...
@@ -454,7 +456,6 @@ Section 2: Installation Questions
First, whenever you start the postmaster, make sure you send the
standard output and error to a log file, like:
cd /usr/local/pgsql
./bin/postmaster >server.log 2>&1 &
...
...
@@ -486,19 +487,22 @@ Section 2: Installation Questions
The EXPLAIN command (see this FAQ) allows you to see how PostgreSQL is
interpreting your query.
2.13) How do I enable more than
32
concurrent backends?
2.13) How do I enable more than
64
concurrent backends?
Edit include/storage/sinvaladt.h, and change the value of
MaxBackendId. In the future, we plan to make this a configurable
prameter.
2.1
3
) What non-unix ports are available?
2.1
4
) What non-unix ports are available?
It is possible to compile the libpq C library, psql, and other
interfaces and binaries to run on MS Windows platforms. In this case,
the client is running on MS Windows, and communicates via TCP/IP to a
server running on one of our supported Unix platforms.
A file win32.mak is included in the distributiion for making a Win32
libpq library and psql.
People have attempted to port our PostgreSQL database server to
Windows NT using the Cygnus Unix/NT porting library, but no one has
succeeded yet.
...
...
@@ -510,18 +514,7 @@ Section 3: PostgreSQL Features
Yes.
3.2) I've having a lot of problems using rules.
Currently, the rule system in PostgreSQL has some limitations. It
works enough to support the view mechanism, but does not handle
Insert/Update/Delete well.
3.3) I can't seem to write into the middle of large objects reliably.
The Inversion large object system now works perfectly. You should no
longer have problems with large objects.
3.4) How can I write client applications to PostgreSQL?
3.2) How can I write client applications to PostgreSQL?
PostgreSQL supports a C-callable library interface called libpq as
well as many others. See the /src/interfaces directory.
...
...
@@ -529,12 +522,11 @@ Section 3: PostgreSQL Features
Others have contributed a perl interface and a WWW gateway to
PostgreSQL. See the PostgreSQL home pages for more details.
3.
5
) How do I set up a pg_group?
3.
3
) How do I set up a pg_group?
Currently, there is no easy interface to set up user groups. You have
to explicitly insert/update the pg_group table. For example:
jolly=> insert into pg_group (groname, grosysid, grolist)
jolly=> values ('posthackers', '1234', '{5443, 8261}');
INSERT 548224
...
...
@@ -550,16 +542,16 @@ Section 3: PostgreSQL Features
* grolist: the list of pg_user id's that belong in the group. This
is an int4[].
3.
6
) What is the exact difference between binary cursors and normal cursors?
3.
4
) What is the exact difference between binary cursors and normal cursors?
See the declare manual page for a description.
3.
7) What is a
R-tree index and what is it used for?
3.
5) What is an
R-tree index and what is it used for?
An r-tree index is used for indexing spatial data. A hash index can't
handle range searches. A B-tree index only handles range searches in a
single dimension. R-tree's can handle multi-dimensional data. For
example, if a R-tree index can be built on an attribute of type
example, if a
n
R-tree index can be built on an attribute of type
'point', the system can more efficient answer queries like select all
points within a bounding rectangle.
...
...
@@ -577,7 +569,7 @@ Section 3: PostgreSQL Features
extending R-trees require a bit of work and we don't currently have
any documentation on how to do it.
3.
8
) What is the maximum size for a tuple?
3.
6
) What is the maximum size for a tuple?
Tuples are limited to 8K bytes. Taking into account system attributes
and other overhead, one should stay well shy of 8,000 bytes to be on
...
...
@@ -587,7 +579,7 @@ Section 3: PostgreSQL Features
Tuples do not cross 8k boundaries so a 5k tuple will require 8k of
storage.
3.
9
) I defined indices but my queries don't seem to make use of them. Why?
3.
7
) I defined indices but my queries don't seem to make use of them. Why?
PostgreSQL does not automatically maintain statistics. One has to make
an explicit 'vacuum' call to update the statistics. After statistics
...
...
@@ -608,17 +600,17 @@ Section 3: PostgreSQL Features
Indexes not used for ORDER BY operations.
3.
10
) How do I do regular expression searches? case-insensitive regexp
3.
8
) How do I do regular expression searches? case-insensitive regexp
searching?
See psql's \do command.
3.
11
) I experienced a server crash during a vacuum. How do I remove the lock
3.
9
) I experienced a server crash during a vacuum. How do I remove the lock
file?
See the vacuum manual page.
3.1
2
) What is the difference between the various character types?
3.1
0
) What is the difference between the various character types?
Type Internal Name Notes
--------------------------------------------------
...
...
@@ -638,23 +630,23 @@ BYTEA bytea variable-length array of bytes
using them. Specifically, the penalty is for access to any columns
after the first column of this type.
3.1
3
) In a query, how do I detect if a field is NULL?
3.1
1
) In a query, how do I detect if a field is NULL?
You test the column with IS NULL and IS NOT NULL.
3.1
4
) How do I see how the query optimizer is evaluating my query?
3.1
2
) How do I see how the query optimizer is evaluating my query?
See the explain manual page.
3.1
5) How do I create a serial
field?
3.1
3) How do I create a serial/auto-incrementing
field?
PostgreSQL does not allow the user to specifiy a user column as type
SERIAL. Instead, you can use each row's oid field as a unique value.
However, if you need to dump and reload the database, you need to use
pgdump's -o option or COPY's WITH OIDS option to preserver the oids.
We also have a SEQUENCE function that is
similar to SERIAL. See th
e
create_sequence manual page.
We also have a SEQUENCE function that is
very similar to SERIAL. Se
e
the
create_sequence manual page.
Another valid way of doing this is to create a function:
...
...
@@ -677,7 +669,7 @@ BYTEA bytea variable-length array of bytes
Yet another way is to use general trigger function autoinc() from
contrib/spi/autoinc.c.
3.1
6
) What are the pg_psort.XXX files in my database directory?
3.1
4
) What are the pg_psort.XXX files in my database directory?
They are temporary sort files generated by the query executor. For
example, if a sort needs to be done to satisfy an ORDER BY, some temp
...
...
@@ -686,14 +678,14 @@ BYTEA bytea variable-length array of bytes
If you have no transactions or sorts running at the time, it is safe
to delete the pg_psort.XXX files.
3.1
7
) Why can't I connect to my database from another machine?
3.1
5
) Why can't I connect to my database from another machine?
The default configuration allows only unix domain socket connections
from the local machine. To enable TCP/IP connections, use the
postmaster -i option You need to add a host entry to the file
pgsql/data/pg_hba. See the pg_hba.conf manual page.
3.1
8
) How do I find out what indexes or operations are defined in the
3.1
6
) How do I find out what indexes or operations are defined in the
database?
psql has a variety of backslash commands to show such information. Use
...
...
@@ -703,21 +695,15 @@ BYTEA bytea variable-length array of bytes
many of the 'select's needed to get information out of the database
system tables.
3.19) What is the time-warp feature and how does it relate to vacuum?
PostgreSQL no longer supports this feature. All support code has been
removed. This was done to improve performance and reduce disk storage
overhead.
3.20) What is an oid? What is a tid?
3.17) What is an oid? What is a tid?
Oids are PostgreSQL's answer to unique row ids or serial columns.
Every row that is created in PostgreSQL gets a unique oid. All oids
generated by initdb are less than 16384 (from
backend/access/transam.h). All post-initdb (user-created) oids are
equal or greater that this.
All these oids are unique not only within
a table, or database, but unique within the entire PostgreSQL
installation.
equal or greater that this.
By default, all these oids are unique not
only within a table, or database, but unique within the entire
PostgreSQL
installation.
PostgreSQL uses oids in its internal system tables to link rows in
separate tables. These oids can be used to identify specific user rows
...
...
@@ -725,12 +711,19 @@ BYTEA bytea variable-length array of bytes
oid values. See the sql(l) manual page to see the other internal
columns. You can create an index on the oid field for faster access.
Oids are assigned to all new rows from a central area that is used by
all databases. If you want to change the oid to something else, or if
you want to make a copy of the table, with the original oid's, there
is no reason you can't do it:
CREATE TABLE new_table (mycol int);
INSERT INTO new_table SELECT oid, mycol FROM old_table;
Tids are used to indentify specific physical rows with block and
offset values. Tids change after rows are modified or reloaded. They
are used by index entries to point to physical rows. They can not be
accessed through sql.
3.
21
) What is the meaning of some of the terms used in PostgreSQL?
3.
18
) What is the meaning of some of the terms used in PostgreSQL?
Some of the source code and older documentation use terms that have
more common usage. Here are some:
...
...
@@ -746,7 +739,7 @@ BYTEA bytea variable-length array of bytes
Please let me know if you think of any more.
3.
22
) What is Genetic Query Optimization?
3.
19
) What is Genetic Query Optimization?
The GEQO module in PostgreSQL is intended to solve the query
optimization problem of joining many tables by means of a Genetic
...
...
@@ -755,7 +748,7 @@ BYTEA bytea variable-length array of bytes
For further information see README.GEQO <utesch@aut.tu-freiberg.de>.
3.2
3
) How do you remove a column from a table?
3.2
0
) How do you remove a column from a table?
We do not support ALTER TABLE DROP COLUMN, but do this:
...
...
@@ -765,29 +758,22 @@ BYTEA bytea variable-length array of bytes
DROP TABLE old_table;
ALTER TABLE new_table RENAME TO old_table;
3.2
4
) How do SELECT only the first few rows of a query?
3.2
1
) How do SELECT only the first few rows of a query?
See the fetch manual page.
This only prevents all row results from being transfered to the
client. The entire query must be evaluated, even if you only want just
first few rows. Consider a query that has and ORDER BY. There is no
way to return any rows until the entire query is evaluated and sorted.
the first few rows. Consider a query that has and an ORDER BY. There
is no way to return any rows until the entire query is evaluated and
sorted.
3.25) Why can't I create a column named "time"?
6.2.1 has added some new restricted keywords as we make PostgreSQL
more ANSI-92 compilant. The next release will have this restriction
removed. There is a patch on ftp.postgresql.org that will allow this
feature now.
3.26)How much database disk space is required to store data from a typical
3.22)How much database disk space is required to store data from a typical
flat file?
Consider a file with 300,000 lines with two integers on each line. The
flat file is 2.4MB. The size of the PostgreSQL database file
containing this data can be estimated:
40 bytes + each row header (approximate)
8 bytes + two int fields @ 4 bytes each
4 bytes + pointer on page to tuple
...
...
@@ -806,8 +792,34 @@ The data page size in PostgreSQL is 8192(8k) bytes, so:
1911 database pages * 8192 bytes per page = 15,654,912 or 15.5MB
Indexes do not contain as much overhead, but do contain the data that
is being indexed, so they can be large also.
Indexes do not contain as much overhead, but do contain the data that is
being indexed, so they can be large also.
3.23) How do I get a list of tables, or other things I can see in psql?
See the file pgsql/src/bin/psql/psql.c. It contains SQL commands that
generate the output for psql's backslash commands.
3.24) Why do I get the error "FATAL: palloc failure: memory exhausted?"
It is possible you have run out of virtual memory on your system, or
your kernel has a low limit for certain resources. Try this before
starting the postmaster:
ulimit -d 65536
limit datasize 64m
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 the current process, and all
subprocesses created after the command is run. If are having a problem
with the SQL client because the backend is returning too much data,
try it before starting the client.
3.25) How do I tell what PostgreSQL version I am running?
From psql, type select version();
_________________________________________________________________
Section 4: Extending PostgreSQL
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment