Update pgcvslog
This commit is contained in:
parent
127f785028
commit
726926a523
4
doc/TODO
4
doc/TODO
|
@ -192,7 +192,8 @@ PERFORMANCE
|
|||
|
||||
FSYNC
|
||||
|
||||
* Allow transaction commits with rollback with no-fsync performance [fsync](Vadim)
|
||||
* Allow transaction commits with rollback with no-fsync performance
|
||||
[fsync] (Vadim)
|
||||
|
||||
INDEXES
|
||||
|
||||
|
@ -231,6 +232,7 @@ MISC
|
|||
* Remove pg_listener index
|
||||
* Remove ANALYZE from VACUUM so it can be run separately without locks
|
||||
* Gather more accurate statistics using indexes
|
||||
* Improve statistics storage in pg_class [performance]
|
||||
|
||||
SOURCE CODE
|
||||
-----------
|
||||
|
|
|
@ -341,3 +341,214 @@ Informix Software (No, really) 300 Lakeside Drive Oakland, CA 94612
|
|||
good, you'll have to ram them down people's throats." -- Howard Aiken
|
||||
|
||||
|
||||
From owner-pgsql-hackers@hub.org Tue Oct 19 10:31:10 1999
|
||||
Received: from renoir.op.net (root@renoir.op.net [209.152.193.4])
|
||||
by candle.pha.pa.us (8.9.0/8.9.0) with ESMTP id KAA29087
|
||||
for <maillist@candle.pha.pa.us>; Tue, 19 Oct 1999 10:31:08 -0400 (EDT)
|
||||
Received: from hub.org (hub.org [216.126.84.1]) by renoir.op.net (o1/$Revision: 1.2 $) with ESMTP id KAA27535 for <maillist@candle.pha.pa.us>; Tue, 19 Oct 1999 10:19:47 -0400 (EDT)
|
||||
Received: from localhost (majordom@localhost)
|
||||
by hub.org (8.9.3/8.9.3) with SMTP id KAA30328;
|
||||
Tue, 19 Oct 1999 10:12:10 -0400 (EDT)
|
||||
(envelope-from owner-pgsql-hackers)
|
||||
Received: by hub.org (bulk_mailer v1.5); Tue, 19 Oct 1999 10:11:55 -0400
|
||||
Received: (from majordom@localhost)
|
||||
by hub.org (8.9.3/8.9.3) id KAA30030
|
||||
for pgsql-hackers-outgoing; Tue, 19 Oct 1999 10:11:00 -0400 (EDT)
|
||||
(envelope-from owner-pgsql-hackers@postgreSQL.org)
|
||||
Received: from sss.sss.pgh.pa.us (sss.pgh.pa.us [209.114.166.2])
|
||||
by hub.org (8.9.3/8.9.3) with ESMTP id KAA29914
|
||||
for <pgsql-hackers@postgreSQL.org>; Tue, 19 Oct 1999 10:10:33 -0400 (EDT)
|
||||
(envelope-from tgl@sss.pgh.pa.us)
|
||||
Received: from sss.sss.pgh.pa.us (localhost [127.0.0.1])
|
||||
by sss.sss.pgh.pa.us (8.9.1/8.9.1) with ESMTP id KAA09038;
|
||||
Tue, 19 Oct 1999 10:09:15 -0400 (EDT)
|
||||
To: "Hiroshi Inoue" <Inoue@tpf.co.jp>
|
||||
cc: "Vadim Mikheev" <vadim@krs.ru>, pgsql-hackers@postgreSQL.org
|
||||
Subject: Re: [HACKERS] mdnblocks is an amazing time sink in huge relations
|
||||
In-reply-to: Your message of Tue, 19 Oct 1999 19:03:22 +0900
|
||||
<000801bf1a19$2d88ae20$2801007e@cadzone.tpf.co.jp>
|
||||
Date: Tue, 19 Oct 1999 10:09:15 -0400
|
||||
Message-ID: <9036.940342155@sss.pgh.pa.us>
|
||||
From: Tom Lane <tgl@sss.pgh.pa.us>
|
||||
Sender: owner-pgsql-hackers@postgreSQL.org
|
||||
Status: OR
|
||||
|
||||
"Hiroshi Inoue" <Inoue@tpf.co.jp> writes:
|
||||
> 1. shared cache holds committed system tuples.
|
||||
> 2. private cache holds uncommitted system tuples.
|
||||
> 3. relpages of shared cache are updated immediately by
|
||||
> phisical change and corresponding buffer pages are
|
||||
> marked dirty.
|
||||
> 4. on commit, the contents of uncommitted tuples except
|
||||
> relpages,reltuples,... are copied to correponding tuples
|
||||
> in shared cache and the combined contents are
|
||||
> committed.
|
||||
> If so,catalog cache invalidation would be no longer needed.
|
||||
> But synchronization of the step 4. may be difficult.
|
||||
|
||||
I think the main problem is that relpages and reltuples shouldn't
|
||||
be kept in pg_class columns at all, because they need to have
|
||||
very different update behavior from the other pg_class columns.
|
||||
|
||||
The rest of pg_class is update-on-commit, and we can lock down any one
|
||||
row in the normal MVCC way (if transaction A has modified a row and
|
||||
transaction B also wants to modify it, B waits for A to commit or abort,
|
||||
so it can know which version of the row to start from). Furthermore,
|
||||
there can legitimately be several different values of a row in use in
|
||||
different places: the latest committed, an uncommitted modification, and
|
||||
one or more old values that are still being used by active transactions
|
||||
because they were current when those transactions started. (BTW, the
|
||||
present relcache is pretty bad about maintaining pure MVCC transaction
|
||||
semantics like this, but it seems clear to me that that's the direction
|
||||
we want to go in.)
|
||||
|
||||
relpages cannot operate this way. To be useful for avoiding lseeks,
|
||||
relpages *must* change exactly when the physical file changes. It
|
||||
matters not at all whether the particular transaction that extended the
|
||||
file ultimately commits or not. Moreover there can be only one correct
|
||||
value (per relation) across the whole system, because there is only one
|
||||
length of the relation file.
|
||||
|
||||
If we want to take reltuples seriously and try to maintain it
|
||||
on-the-fly, then I think it needs still a third behavior. Clearly
|
||||
it cannot be updated using MVCC rules, or we lose all writer
|
||||
concurrency (if A has added tuples to a rel, B would have to wait
|
||||
for A to commit before it could update reltuples...). Furthermore
|
||||
"updating" isn't a simple matter of storing what you think the new
|
||||
value is; otherwise two transactions adding tuples in parallel would
|
||||
leave the wrong answer after B commits and overwrites A's value.
|
||||
I think it would work for each transaction to keep track of a net delta
|
||||
in reltuples for each table it's changed (total tuples added less total
|
||||
tuples deleted), and then atomically add that value to the table's
|
||||
shared reltuples counter during commit. But that still leaves the
|
||||
problem of how you use the counter during a transaction to get an
|
||||
accurate answer to the question "If I scan this table now, how many tuples
|
||||
will I see?" At the time the question is asked, the current shared
|
||||
counter value might include the effects of transactions that have
|
||||
committed since your transaction started, and therefore are not visible
|
||||
under MVCC rules. I think getting the correct answer would involve
|
||||
making an instantaneous copy of the current counter at the start of
|
||||
your xact, and then adding your own private net-uncommitted-delta to
|
||||
the saved shared counter value when asked the question. This doesn't
|
||||
look real practical --- you'd have to save the reltuples counts of
|
||||
*all* tables in the database at the start of each xact, on the off
|
||||
chance that you might need them. Ugh. Perhaps someone has a better
|
||||
idea. In any case, reltuples clearly needs different mechanisms than
|
||||
the ordinary fields in pg_class do, because updating it will be a
|
||||
performance bottleneck otherwise.
|
||||
|
||||
If we allow reltuples to be updated only by vacuum-like events, as
|
||||
it is now, then I think keeping it in pg_class is still OK.
|
||||
|
||||
In short, it seems clear to me that relpages should be removed from
|
||||
pg_class and kept somewhere else if we want to make it more reliable
|
||||
than it is now, and the same for reltuples (but reltuples doesn't
|
||||
behave the same as relpages, and probably ought to be handled
|
||||
differently).
|
||||
|
||||
regards, tom lane
|
||||
|
||||
************
|
||||
|
||||
From owner-pgsql-hackers@hub.org Tue Oct 19 21:25:30 1999
|
||||
Received: from renoir.op.net (root@renoir.op.net [209.152.193.4])
|
||||
by candle.pha.pa.us (8.9.0/8.9.0) with ESMTP id VAA28130
|
||||
for <maillist@candle.pha.pa.us>; Tue, 19 Oct 1999 21:25:26 -0400 (EDT)
|
||||
Received: from hub.org (hub.org [216.126.84.1]) by renoir.op.net (o1/$Revision: 1.2 $) with ESMTP id VAA10512 for <maillist@candle.pha.pa.us>; Tue, 19 Oct 1999 21:15:28 -0400 (EDT)
|
||||
Received: from localhost (majordom@localhost)
|
||||
by hub.org (8.9.3/8.9.3) with SMTP id VAA50745;
|
||||
Tue, 19 Oct 1999 21:07:23 -0400 (EDT)
|
||||
(envelope-from owner-pgsql-hackers)
|
||||
Received: by hub.org (bulk_mailer v1.5); Tue, 19 Oct 1999 21:07:01 -0400
|
||||
Received: (from majordom@localhost)
|
||||
by hub.org (8.9.3/8.9.3) id VAA50644
|
||||
for pgsql-hackers-outgoing; Tue, 19 Oct 1999 21:06:06 -0400 (EDT)
|
||||
(envelope-from owner-pgsql-hackers@postgreSQL.org)
|
||||
Received: from sd.tpf.co.jp (sd.tpf.co.jp [210.161.239.34])
|
||||
by hub.org (8.9.3/8.9.3) with ESMTP id VAA50584
|
||||
for <pgsql-hackers@postgreSQL.org>; Tue, 19 Oct 1999 21:05:26 -0400 (EDT)
|
||||
(envelope-from Inoue@tpf.co.jp)
|
||||
Received: from cadzone ([126.0.1.40] (may be forged))
|
||||
by sd.tpf.co.jp (2.5 Build 2640 (Berkeley 8.8.6)/8.8.4) with SMTP
|
||||
id KAA01715; Wed, 20 Oct 1999 10:05:14 +0900
|
||||
From: "Hiroshi Inoue" <Inoue@tpf.co.jp>
|
||||
To: "Tom Lane" <tgl@sss.pgh.pa.us>
|
||||
Cc: <pgsql-hackers@postgreSQL.org>
|
||||
Subject: RE: [HACKERS] mdnblocks is an amazing time sink in huge relations
|
||||
Date: Wed, 20 Oct 1999 10:09:13 +0900
|
||||
Message-ID: <000501bf1a97$b925a860$2801007e@cadzone.tpf.co.jp>
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain;
|
||||
charset="iso-8859-1"
|
||||
Content-Transfer-Encoding: 7bit
|
||||
X-Priority: 3 (Normal)
|
||||
X-MSMail-Priority: Normal
|
||||
X-Mailer: Microsoft Outlook 8.5, Build 4.71.2173.0
|
||||
X-Mimeole: Produced By Microsoft MimeOLE V4.72.2106.4
|
||||
Importance: Normal
|
||||
Sender: owner-pgsql-hackers@postgreSQL.org
|
||||
Status: ORr
|
||||
|
||||
> -----Original Message-----
|
||||
> From: Hiroshi Inoue [mailto:Inoue@tpf.co.jp]
|
||||
> Sent: Tuesday, October 19, 1999 6:45 PM
|
||||
> To: Tom Lane
|
||||
> Cc: pgsql-hackers@postgreSQL.org
|
||||
> Subject: RE: [HACKERS] mdnblocks is an amazing time sink in huge
|
||||
> relations
|
||||
>
|
||||
>
|
||||
> >
|
||||
> > "Hiroshi Inoue" <Inoue@tpf.co.jp> writes:
|
||||
>
|
||||
> [snip]
|
||||
>
|
||||
> >
|
||||
> > > Deletion is necessary only not to consume disk space.
|
||||
> > >
|
||||
> > > For example vacuum could remove not deleted files.
|
||||
> >
|
||||
> > Hmm ... interesting idea ... but I can hear the complaints
|
||||
> > from users already...
|
||||
> >
|
||||
>
|
||||
> My idea is only an analogy of PostgreSQL's simple recovery
|
||||
> mechanism of tuples.
|
||||
>
|
||||
> And my main point is
|
||||
> "delete fails after commit" doesn't harm the database
|
||||
> except that not deleted files consume disk space.
|
||||
>
|
||||
> Of cource,it's preferable to delete relation files immediately
|
||||
> after(or just when) commit.
|
||||
> Useless files are visible though useless tuples are invisible.
|
||||
>
|
||||
|
||||
Anyway I don't need "DROP TABLE inside transactions" now
|
||||
and my idea is originally for that issue.
|
||||
|
||||
After a thought,I propose the following solution.
|
||||
|
||||
1. mdcreate() couldn't create existent relation files.
|
||||
If the existent file is of length zero,we would overwrite
|
||||
the file.(seems the comment in md.c says so but the
|
||||
code doesn't do so).
|
||||
If the file is an Index relation file,we would overwrite
|
||||
the file.
|
||||
|
||||
2. mdunlink() couldn't unlink non-existent relation files.
|
||||
mdunlink() doesn't call elog(ERROR) even if the file
|
||||
doesn't exist,though I couldn't find where to change
|
||||
now.
|
||||
mdopen() doesn't call elog(ERROR) even if the file
|
||||
doesn't exist and leaves the relation as CLOSED.
|
||||
|
||||
Comments ?
|
||||
|
||||
Regards.
|
||||
|
||||
Hiroshi Inoue
|
||||
Inoue@tpf.co.jp
|
||||
|
||||
************
|
||||
|
||||
|
|
259
doc/src/FAQ.html
259
doc/src/FAQ.html
|
@ -28,109 +28,109 @@ HREF="http://www.PostgreSQL.org/docs/faq-hpux.shtml">http://www.PostgreSQL.org/d
|
|||
|
||||
<H2><CENTER>General Questions</CENTER></H2>
|
||||
|
||||
<A HREF="#1.1">1.1</A>) What is PostgreSQL?<BR>
|
||||
<A HREF="#1.2">1.2</A>) What's the copyright on PostgreSQL?<BR>
|
||||
<A HREF="#1.3">1.3</A>) What Unix platforms does PostgreSQL run on?<BR>
|
||||
<A HREF="#1.1">1.1</A>) What is PostgreSQL?<BR>
|
||||
<A HREF="#1.2">1.2</A>) What's the copyright on PostgreSQL?<BR>
|
||||
<A HREF="#1.3">1.3</A>) What Unix platforms does PostgreSQL run on?<BR>
|
||||
<A HREF="#1.4">1.4</A>) What non-unix ports are available?<BR>
|
||||
<A HREF="#1.5">1.5</A>) Where can I get PostgreSQL?<BR>
|
||||
<A HREF="#1.6">1.6</A>) Where can I get support for PostgreSQL?<BR>
|
||||
<A HREF="#1.7">1.7</A>) What is the latest release of PostgreSQL?<BR>
|
||||
<A HREF="#1.8">1.8</A>) What documentation is available for PostgreSQL?<BR>
|
||||
<A HREF="#1.9">1.9</A>) How do I find out about known bugs or missing features?<BR>
|
||||
<A HREF="#1.10">1.10</A>) How can I learn SQL?<BR>
|
||||
<A HREF="#1.11">1.11</A>) Is PostgreSQL Y2K compliant?<BR>
|
||||
<A HREF="#1.12">1.12</A>) How do I join the development team?<BR>
|
||||
<A HREF="#1.13">1.13</A>) How do I submit a bug report?<BR>
|
||||
<A HREF="#1.14">1.14</A>) How does PostgreSQL compare to other DBMS's?<BR>
|
||||
<A HREF="#1.5">1.5</A>) Where can I get PostgreSQL?<BR>
|
||||
<A HREF="#1.6">1.6</A>) Where can I get support for PostgreSQL?<BR>
|
||||
<A HREF="#1.7">1.7</A>) What is the latest release of PostgreSQL?<BR>
|
||||
<A HREF="#1.8">1.8</A>) What documentation is available for PostgreSQL?<BR>
|
||||
<A HREF="#1.9">1.9</A>) How do I find out about known bugs or missing features?<BR>
|
||||
<A HREF="#1.10">1.10</A>) How can I learn SQL?<BR>
|
||||
<A HREF="#1.11">1.11</A>) Is PostgreSQL Y2K compliant?<BR>
|
||||
<A HREF="#1.12">1.12</A>) How do I join the development team?<BR>
|
||||
<A HREF="#1.13">1.13</A>) How do I submit a bug report?<BR>
|
||||
<A HREF="#1.14">1.14</A>) How does PostgreSQL compare to other DBMS's?<BR>
|
||||
<A HREF="#1.15">1.15</A>) What are the maximum size limits?
|
||||
|
||||
|
||||
<H2><CENTER>User Client Questions</CENTER></H2>
|
||||
|
||||
<A HREF="#2.1">2.1</A>) Are there ODBC drivers for
|
||||
<A HREF="#2.1">2.1</A>) Are there ODBC drivers for
|
||||
PostgreSQL?<BR>
|
||||
<A HREF="#2.2">2.2</A>) What tools are available for hooking
|
||||
<A HREF="#2.2">2.2</A>) What tools are available for hooking
|
||||
PostgreSQL to Web pages?<BR>
|
||||
<A HREF="#2.3">2.3</A>) Does PostgreSQL have a graphical user interface?
|
||||
<A HREF="#2.3">2.3</A>) Does PostgreSQL have a graphical user interface?
|
||||
A report generator? An embedded query language interface?<BR>
|
||||
<A HREF="#2.4">2.4</A>) What languages are available to communicate
|
||||
<A HREF="#2.4">2.4</A>) What languages are available to communicate
|
||||
with PostgreSQL?<BR>
|
||||
|
||||
|
||||
<H2><CENTER>Administrative Questions</CENTER></H2>
|
||||
|
||||
<A HREF="#3.1">3.1</A>) Why does initdb fail?<BR>
|
||||
<A HREF="#3.2">3.2</A>) How do I install PostgreSQL somewhere other than
|
||||
<A HREF="#3.1">3.1</A>) Why does initdb fail?<BR>
|
||||
<A HREF="#3.2">3.2</A>) How do I install PostgreSQL somewhere other than
|
||||
/usr/local/pgsql?<BR>
|
||||
<A HREF="#3.3">3.3</A>) When I start the postmaster, I get a
|
||||
<A HREF="#3.3">3.3</A>) When I start the postmaster, I get a
|
||||
<I>Bad System Call</I> or core dumped message. Why?<BR>
|
||||
<A HREF="#3.4">3.4</A>) When I try to start the postmaster, I get
|
||||
<A HREF="#3.4">3.4</A>) When I try to start the postmaster, I get
|
||||
<I>IpcMemoryCreate</I> errors3. Why?<BR>
|
||||
<A HREF="#3.5">3.5</A>) When I try to start the postmaster, I get
|
||||
<I>IpcSemaphoreCreate</I> errors. Why?<BR>
|
||||
<A HREF="#3.6">3.6</A>) How do I prevent other hosts from accessing my
|
||||
<A HREF="#3.6">3.6</A>) How do I prevent other hosts from accessing my
|
||||
PostgreSQL database?<BR>
|
||||
<A HREF="#3.7">3.7</A>) Why can't I connect to my database from
|
||||
<A HREF="#3.7">3.7</A>) Why can't I connect to my database from
|
||||
another machine?<BR>
|
||||
<A HREF="#3.8">3.8</A>) Why can't I access the database as the
|
||||
<A HREF="#3.8">3.8</A>) Why can't I access the database as the
|
||||
<I>root</I> user?<BR>
|
||||
<A HREF="#3.9">3.9</A>) All my servers crash under concurrent
|
||||
<A HREF="#3.9">3.9</A>) All my servers crash under concurrent
|
||||
table access. Why?<BR>
|
||||
<A HREF="#3.10">3.10</A>) How do I tune the database engine for
|
||||
<A HREF="#3.10">3.10</A>) How do I tune the database engine for
|
||||
better performance?<BR>
|
||||
<A HREF="#3.11">3.11</A>) What debugging features are available in
|
||||
<A HREF="#3.11">3.11</A>) What debugging features are available in
|
||||
PostgreSQL?<BR>
|
||||
<A HREF="#3.12">3.12</A>) I get 'Sorry, too many clients' when trying to
|
||||
connect. Why?<BR>
|
||||
<A HREF="#3.13">3.13</A>) What are the pg_psort.XXX files in my
|
||||
<A HREF="#3.13">3.13</A>) What are the pg_psort.XXX files in my
|
||||
database directory?<BR>
|
||||
<A HREF="#3.14">3.14</A>) How do I set up a pg_group?<BR>
|
||||
|
||||
<H2><CENTER>Operational Questions</CENTER></H2>
|
||||
|
||||
<A HREF="#4.1">4.1</A>) The system seems to be confused about commas,
|
||||
<A HREF="#4.1">4.1</A>) The system seems to be confused about commas,
|
||||
decimal points, and date formats.<BR>
|
||||
<A HREF="#4.2">4.2</A>) What is the exact difference between
|
||||
<A HREF="#4.2">4.2</A>) What is the exact difference between
|
||||
binary cursors and normal cursors?<BR>
|
||||
<A HREF="#4.3">4.3</A>) How do I <I>select</I> only the first few rows of
|
||||
<A HREF="#4.3">4.3</A>) How do I <I>select</I> only the first few rows of
|
||||
a query?<BR>
|
||||
|
||||
<A HREF="#4.4">4.4</A>) How do I get a list of tables, or other
|
||||
<A HREF="#4.4">4.4</A>) How do I get a list of tables, or other
|
||||
things I can see in <I>psql?</I><BR>
|
||||
<A HREF="#4.5">4.5</A>) How do you remove a column from a table?<BR>
|
||||
<A HREF="#4.5">4.5</A>) How do you remove a column from a table?<BR>
|
||||
|
||||
<A HREF="#4.6">4.6</A>) What is the maximum size for a
|
||||
<A HREF="#4.6">4.6</A>) What is the maximum size for a
|
||||
row, table, database?<BR>
|
||||
<A HREF="#4.7">4.7</A>) How much database disk space is required
|
||||
<A HREF="#4.7">4.7</A>) How much database disk space is required
|
||||
to store data from a typical flat file?<BR>
|
||||
|
||||
<A HREF="#4.8">4.8</A>) How do I find out what indices or
|
||||
<A HREF="#4.8">4.8</A>) How do I find out what indices or
|
||||
operations are defined in the database?<BR>
|
||||
<A HREF="#4.9">4.9</A>) My queries are slow or don't make use of the
|
||||
<A HREF="#4.9">4.9</A>) My queries are slow or don't make use of the
|
||||
indexes. Why?<BR>
|
||||
<A HREF="#4.10">4.10</A>) How do I see how the query optimizer is
|
||||
<A HREF="#4.10">4.10</A>) How do I see how the query optimizer is
|
||||
evaluating my query?<BR>
|
||||
<A HREF="#4.11">4.11</A>) What is an R-tree index?<BR>
|
||||
<A HREF="#4.12">4.12</A>) What is Genetic Query Optimization?<BR>
|
||||
<A HREF="#4.11">4.11</A>) What is an R-tree index?<BR>
|
||||
<A HREF="#4.12">4.12</A>) What is Genetic Query Optimization?<BR>
|
||||
|
||||
<A HREF="#4.13">4.13</A>) How do I do regular expression searches
|
||||
<A HREF="#4.13">4.13</A>) How do I do regular expression searches
|
||||
and case-insensitive regexp searching?<BR>
|
||||
<A HREF="#4.14">4.14</A>) In a query, how do I detect if a field
|
||||
<A HREF="#4.14">4.14</A>) In a query, how do I detect if a field
|
||||
is NULL?<BR>
|
||||
<A HREF="#4.15">4.15</A>) What is the difference between the
|
||||
<A HREF="#4.15">4.15</A>) What is the difference between the
|
||||
various character types?<BR>
|
||||
<A HREF="#4.16.1">4.16.1</A>) How do I create a serial/auto-incrementing field?<BR>
|
||||
<A HREF="#4.16.2">4.16.2</A>) How do I get the value of a serial insert?<BR>
|
||||
<A HREF="#4.16.3">4.16.3</A>) Wouldn't use of currval() and nextval() lead to a race condition with other concurrent backend processes?<BR>
|
||||
<A HREF="#4.16.1">4.16.1</A>) How do I create a serial/auto-incrementing field?<BR>
|
||||
<A HREF="#4.16.2">4.16.2</A>) How do I get the value of a serial insert?<BR>
|
||||
<A HREF="#4.16.3">4.16.3</A>) Wouldn't use of currval() and nextval() lead to a race condition with other concurrent backend processes?<BR>
|
||||
|
||||
<A HREF="#4.17">4.17</A>) What is an oid? What is a tid?<BR>
|
||||
<A HREF="#4.18">4.18</A>) What is the meaning of some of the terms
|
||||
<A HREF="#4.17">4.17</A>) What is an oid? What is a tid?<BR>
|
||||
<A HREF="#4.18">4.18</A>) What is the meaning of some of the terms
|
||||
used in PostgreSQL?<BR>
|
||||
|
||||
<A HREF="#4.19">4.19</A>) Why do I get the error "FATAL: palloc
|
||||
<A HREF="#4.19">4.19</A>) Why do I get the error "FATAL: palloc
|
||||
failure: memory exhausted?"<BR>
|
||||
<A HREF="#4.20">4.20</A>) How do I tell what PostgreSQL version I
|
||||
<A HREF="#4.20">4.20</A>) How do I tell what PostgreSQL version I
|
||||
am running? <BR>
|
||||
<A HREF="#4.21">4.21</A>) My large-object operations get <I>invalid
|
||||
<A HREF="#4.21">4.21</A>) My large-object operations get <I>invalid
|
||||
large obj descriptor.</I> Why?<BR>
|
||||
<A HREF="#4.22">4.22</A>) How do I create a column that will default to the
|
||||
current time?<BR>
|
||||
|
@ -138,15 +138,15 @@ current time?<BR>
|
|||
|
||||
<H2><CENTER>Extending PostgreSQL</CENTER></H2>
|
||||
|
||||
<A HREF="#5.1">5.1</A>) I wrote a user-defined function. When I run
|
||||
<A HREF="#5.1">5.1</A>) I wrote a user-defined function. When I run
|
||||
it in <I>psql,</I> why does it dumps core?<BR>
|
||||
<A HREF="#5.2">5.2</A>) What does the message:
|
||||
<A HREF="#5.2">5.2</A>) What does the message:
|
||||
<I>NOTICE:PortalHeapMemoryFree: 0x402251d0 not in alloc set!</I> mean?<BR>
|
||||
<A HREF="#5.3">5.3</A>) How can I contribute some nifty new types and functions
|
||||
<A HREF="#5.3">5.3</A>) How can I contribute some nifty new types and functions
|
||||
for PostgreSQL?<BR>
|
||||
<A HREF="#5.4">5.4</A>) How do I write a C function to return a
|
||||
<A HREF="#5.4">5.4</A>) How do I write a C function to return a
|
||||
tuple?<BR>
|
||||
<A HREF="#5.5">5.5</A>) I have changed a source file. Why does the
|
||||
<A HREF="#5.5">5.5</A>) I have changed a source file. Why does the
|
||||
recompile does not see the change?<BR>
|
||||
|
||||
|
||||
|
@ -154,7 +154,7 @@ recompile does not see the change?<BR>
|
|||
|
||||
<H2><CENTER>General Questions</CENTER></H2>
|
||||
<H4><A
|
||||
NAME="1.1">1.1</A>) What is PostgreSQL?</H4><P>
|
||||
NAME="1.1">1.1</A>) What is PostgreSQL?</H4><P>
|
||||
|
||||
PostgreSQL is an enhancement of the POSTGRES database management system,
|
||||
a next-generation DBMS research prototype. While PostgreSQL retains the
|
||||
|
@ -183,7 +183,7 @@ name was changed at the end of 1996 to PostgreSQL.<P>
|
|||
|
||||
It is pronounced <I>Post-Gres-Q-L.</I>
|
||||
|
||||
<H4><A NAME="1.2">1.2</A>) What's the copyright on
|
||||
<H4><A NAME="1.2">1.2</A>) What's the copyright on
|
||||
PostgreSQL?</H4><P>
|
||||
|
||||
PostgreSQL is subject to the following COPYRIGHT.<P>
|
||||
|
@ -215,7 +215,7 @@ MODIFICATIONS.<P>
|
|||
|
||||
|
||||
|
||||
<H4><A NAME="1.3">1.3</A>) What Unix platforms does PostgreSQL run
|
||||
<H4><A NAME="1.3">1.3</A>) What Unix platforms does PostgreSQL run
|
||||
on?</H4><P>
|
||||
|
||||
The authors have compiled and tested PostgreSQL on the following
|
||||
|
@ -243,7 +243,7 @@ platforms (some of these compiles require gcc):
|
|||
</UL>
|
||||
<P>
|
||||
|
||||
<H4><A NAME="1.4">1.4</A>) What non-unix ports are available?</H4><P>
|
||||
<H4><A NAME="1.4">1.4</A>) What non-unix ports are available?</H4><P>
|
||||
|
||||
It is possible to compile the libpq C library, psql, and other
|
||||
interfaces and binaries to run on MS Windows platforms. In this case,
|
||||
|
@ -263,14 +263,14 @@ There is another port using U/Win at <A HREF=
|
|||
"http://surya.wipro.com/uwin/ported.html">http://surya.wipro.com/uwin/ported.html.</A>
|
||||
|
||||
|
||||
<H4><A NAME="1.5">1.5</A>) Where can I get PostgreSQL?</H4><P>
|
||||
<H4><A NAME="1.5">1.5</A>) Where can I get PostgreSQL?</H4><P>
|
||||
The primary anonymous ftp site for PostgreSQL is
|
||||
<A
|
||||
HREF="ftp://ftp.postgreSQL.org/pub">ftp://ftp.postgreSQL.org/pub</A>
|
||||
<P>
|
||||
For mirror sites, see our main web site.
|
||||
|
||||
<H4><A NAME="1.6">1.6</A>) Where can I get support for PostgreSQL?</H4><P>
|
||||
<H4><A NAME="1.6">1.6</A>) Where can I get support for PostgreSQL?</H4><P>
|
||||
|
||||
There is no official support for PostgreSQL from the University of
|
||||
California, Berkeley. It is maintained through volunteer effort.<P>
|
||||
|
@ -336,14 +336,14 @@ Commercial support for PostgreSQL is available at <A
|
|||
HREF="http://www.pgsql.com">http://www.pgsql.com/</A><P>
|
||||
|
||||
|
||||
<H4><A NAME="1.7">1.7</A>) What is the latest release of PostgreSQL?</H4><P>
|
||||
<H4><A NAME="1.7">1.7</A>) What is the latest release of PostgreSQL?</H4><P>
|
||||
|
||||
The latest release of PostgreSQL is version 7.0.<P>
|
||||
|
||||
We plan to have major releases every four months.<P>
|
||||
|
||||
|
||||
<H4><A NAME="1.8">1.8</A>) What documentation is available for PostgreSQL?</H4><P>
|
||||
<H4><A NAME="1.8">1.8</A>) What documentation is available for PostgreSQL?</H4><P>
|
||||
|
||||
Several manuals, manual pages, and some small test examples are
|
||||
included in the distribution. See the /doc directory. You can also
|
||||
|
@ -358,14 +358,14 @@ operators, functions, aggregates, etc.<P>
|
|||
|
||||
The 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><A NAME="1.9">1.9</A>) How do I find out about known bugs or missing features?
|
||||
</H4><P>
|
||||
|
||||
PostgreSQL supports an extended subset of SQL-92. See our
|
||||
<A HREF="http://www.postgreSQL.org/docs/todo.html">
|
||||
TODO</A> for a list of known bugs, missing features, and future plans.<P>
|
||||
|
||||
<H4><A NAME="1.10">1.10</A>) How can I learn SQL?</H4><P>
|
||||
<H4><A NAME="1.10">1.10</A>) How can I learn SQL?</H4><P>
|
||||
|
||||
There is a nice tutorial at <A
|
||||
HREF="http://w3.one.net/~jhoffman/sqltut.htm">
|
||||
|
@ -382,12 +382,12 @@ Addison Wesley. Others like <I>Lan Times Guide to SQL</I>, Groff et al.,
|
|||
Osborne McGraw-Hill.<P>
|
||||
|
||||
|
||||
<H4><A NAME="1.11">1.11</A>) Is PostgreSQL Y2K compliant?</H4><P>
|
||||
<H4><A NAME="1.11">1.11</A>) Is PostgreSQL Y2K compliant?</H4><P>
|
||||
|
||||
Yes, we easily handle dates past the year 2000AD, and before 2000BC.<P>
|
||||
|
||||
|
||||
<H4><A NAME="1.12">1.12</A>) How do I join the development team?</H4><P>
|
||||
<H4><A NAME="1.12">1.12</A>) How do I join the development team?</H4><P>
|
||||
|
||||
First, download the latest sources and read the PostgreSQL Developers
|
||||
documentation on our web site, or in the distribution.
|
||||
|
@ -400,7 +400,7 @@ high-quality patches that it was a pain for the existing
|
|||
committers to keep up, and we had confidence that patches they
|
||||
committed were likely to be of high quality.
|
||||
|
||||
<H4><A NAME="1.13">1.13</A>) How do I submit a bug report?</H4><P>
|
||||
<H4><A NAME="1.13">1.13</A>) How do I submit a bug report?</H4><P>
|
||||
|
||||
Fill out the "bug-template" file and send it to: <A
|
||||
HREF="mailto:bugs@postgreSQL.org">bugs@postgreSQL.org</A><P>
|
||||
|
@ -410,7 +410,7 @@ HREF="ftp://ftp.postgreSQL.org/pub">ftp://ftp.postgreSQL.org/pub</A> to
|
|||
see if there is a more recent PostgreSQL version or patches.<P>
|
||||
|
||||
|
||||
<H4><A NAME="1.14">1.14</A>) How does PostgreSQL compare to other
|
||||
<H4><A NAME="1.14">1.14</A>) How does PostgreSQL compare to other
|
||||
DBMS's?</H4><P>
|
||||
|
||||
There are several ways of measuring software: features, performance,
|
||||
|
@ -484,6 +484,19 @@ add our code to your product with no limitations, except those outlined
|
|||
in our BSD-style license stated above.<BR><BR>
|
||||
</DL>
|
||||
|
||||
<H4><A NAME="1.14">1.14</A>) What are the maximum size limits?</H4><P>
|
||||
|
||||
These are the limits:
|
||||
|
||||
<PRE>
|
||||
Maximum size for a database? unlimited (60GB databases exist)
|
||||
Maximum size for a table? unlimited on all operating systems
|
||||
Maximum size for a row? 8k, configurable to 32k
|
||||
Maximum number of rows in a table? unlimited
|
||||
Maximum number of columns table? unlimited
|
||||
Maximun number of indexes on a table? unlimited
|
||||
</PRE>
|
||||
The row length limit will be removed in 7.1.<P>
|
||||
|
||||
<HR>
|
||||
|
||||
|
@ -492,7 +505,7 @@ in our BSD-style license stated above.<BR><BR>
|
|||
|
||||
|
||||
|
||||
<H4><A NAME="2.1">2.1</A>) Are there ODBC drivers for PostgreSQL?</H4><P>
|
||||
<H4><A NAME="2.1">2.1</A>) Are there ODBC drivers for PostgreSQL?</H4><P>
|
||||
|
||||
There are two ODBC drivers available, PostODBC and OpenLink ODBC.<P>
|
||||
|
||||
|
@ -512,7 +525,7 @@ HREF="mailto:postgres95@openlink.co.uk">postgres95@openlink.co.uk</A>.<P>
|
|||
|
||||
|
||||
|
||||
<H4><A NAME="2.2">2.2</A>) What tools are available for hooking
|
||||
<H4><A NAME="2.2">2.2</A>) What tools are available for hooking
|
||||
PostgreSQL to Web pages?</H4><P>
|
||||
|
||||
A nice introduction to Database-backed Web pages can be seen at: <A
|
||||
|
@ -530,7 +543,7 @@ use the perl interface and CGI.pm.<P>
|
|||
A WWW gateway based on WDB using perl can be downloaded from <A
|
||||
HREF="http://www.eol.ists.ca/~dunlop/wdb-p95">http://www.eol.ists.ca/~dunlop/wdb-p95</A>
|
||||
|
||||
<H4><A NAME="2.3">2.3</A>) Does PostgreSQL have a graphical user interface?
|
||||
<H4><A NAME="2.3">2.3</A>) Does PostgreSQL have a graphical user interface?
|
||||
A report generator? An embedded query language interface?</H4><P>
|
||||
|
||||
We have a nice graphical user interface called <I>pgaccess,</I> which is
|
||||
|
@ -541,7 +554,7 @@ generator. The web page is <A HREF=
|
|||
We also include <I>ecpg,</I> which is an embedded SQL query language interface for
|
||||
C.
|
||||
|
||||
<H4><A NAME="2.4">2.4</A>) What languages are available to
|
||||
<H4><A NAME="2.4">2.4</A>) What languages are available to
|
||||
communicate with PostgreSQL?</H4><P>
|
||||
|
||||
We have:
|
||||
|
@ -563,7 +576,7 @@ We have:
|
|||
<H2><CENTER>Administrative Questions</CENTER></H2><P>
|
||||
|
||||
|
||||
<H4><A NAME="3.1">3.1</A>) Why does initdb fail?</H4><P>
|
||||
<H4><A NAME="3.1">3.1</A>) Why does initdb fail?</H4><P>
|
||||
|
||||
<UL>
|
||||
<LI> check that you don't have any of the previous version's binaries in
|
||||
|
@ -574,7 +587,7 @@ your path (If you see the message <CODE>WARN:heap_modifytuple: repl is
|
|||
</UL><P>
|
||||
|
||||
|
||||
<H4><A NAME="3.2">3.2</A>) How do I install PostgreSQL somewhere
|
||||
<H4><A NAME="3.2">3.2</A>) How do I install PostgreSQL somewhere
|
||||
other than /usr/local/pgsql?</H4><P>
|
||||
|
||||
The simplest way is to specify the --prefix option when running configure.
|
||||
|
@ -582,7 +595,7 @@ If you forgot to do that, you can edit Makefile.global and change POSTGRESDIR
|
|||
accordingly, or create a Makefile.custom and define POSTGRESDIR there.<P>
|
||||
|
||||
|
||||
<H4><A NAME="3.3">3.3</A>) When I start the postmaster, I get a <I>Bad
|
||||
<H4><A NAME="3.3">3.3</A>) When I start the postmaster, I get a <I>Bad
|
||||
System Call</I> or core dumped message. Why?</H4><P>
|
||||
|
||||
It could be a variety of problems, but first check to see that you
|
||||
|
@ -590,7 +603,7 @@ have system V extensions installed in your kernel. PostgreSQL requires
|
|||
kernel support for shared memory and semaphores.<P>
|
||||
|
||||
|
||||
<H4><A NAME="3.4">3.4</A>) When I try to start the postmaster, I
|
||||
<H4><A NAME="3.4">3.4</A>) When I try to start the postmaster, I
|
||||
get <I>IpcMemoryCreate</I> errors. Why?</H4><P>
|
||||
|
||||
You either do not have shared memory configured properly in kernel or
|
||||
|
@ -600,7 +613,7 @@ and backend processes you configure postmaster to run with.
|
|||
For most systems, with default numbers of buffers and processes, you
|
||||
need a minimum of ~1MB.<P>
|
||||
|
||||
<H4><A NAME="3.5">3.5</A>) When I try to start the postmaster, I
|
||||
<H4><A NAME="3.5">3.5</A>) When I try to start the postmaster, I
|
||||
get <I>IpcSemaphoreCreate</I> errors. Why?</H4><P>
|
||||
|
||||
If the error message is <I>IpcSemaphoreCreate: semget failed (No space
|
||||
|
@ -615,7 +628,7 @@ If the error message is something else, you might not have semaphore
|
|||
support configured in your kernel at all.<P>
|
||||
|
||||
|
||||
<H4><A NAME="3.6">3.6</A>) How do I prevent other hosts from
|
||||
<H4><A NAME="3.6">3.6</A>) How do I prevent other hosts from
|
||||
accessing my PostgreSQL database?</H4><P>
|
||||
|
||||
By default, PostgreSQL only allows connections from the local machine
|
||||
|
@ -625,7 +638,7 @@ unless you add the <I>-i</I> flag to the <I>postmaster,</I>
|
|||
<I>$PGDATA/pg_hba.conf</I> accordingly. This will allow TCP/IP connections.
|
||||
<P>
|
||||
|
||||
<H4><A NAME="3.7">3.7</A>) Why can't I connect to my database from
|
||||
<H4><A NAME="3.7">3.7</A>) Why can't I connect to my database from
|
||||
another machine?</H4><P>
|
||||
|
||||
The default configuration allows only unix domain socket connections
|
||||
|
@ -635,7 +648,7 @@ appropriate host entry to the file
|
|||
<I>pgsql/data/pg_hba.conf</I>. See the <I>pg_hba.conf</I> manual page.<P>
|
||||
|
||||
|
||||
<H4><A NAME="3.8">3.8</A>) Why can't I access the database as the <I>root</I>
|
||||
<H4><A NAME="3.8">3.8</A>) Why can't I access the database as the <I>root</I>
|
||||
user?</H4><P>
|
||||
|
||||
You should not create database users with user id 0 (root). They will be
|
||||
|
@ -644,14 +657,14 @@ of the ability of any user to dynamically link object modules into the
|
|||
database engine.<P>
|
||||
|
||||
|
||||
<H4><A NAME="3.9">3.9</A>) All my servers crash under concurrent
|
||||
<H4><A NAME="3.9">3.9</A>) All my servers crash under concurrent
|
||||
table access. Why?</H4><P>
|
||||
|
||||
This problem can be caused by a kernel that is not configured to support
|
||||
semaphores.<P>
|
||||
|
||||
|
||||
<H4><A NAME="3.10">3.10</A>) How do I tune the database engine for
|
||||
<H4><A NAME="3.10">3.10</A>) How do I tune the database engine for
|
||||
better performance?</H4><P>
|
||||
|
||||
Certainly, indices can speed up queries. The <SMALL>EXPLAIN</SMALL> command
|
||||
|
@ -685,7 +698,7 @@ You can also use the <SMALL>CLUSTER</SMALL> command to group data in base tables
|
|||
match an index. See the cluster(l) manual page for more details.<P>
|
||||
|
||||
|
||||
<H4><A NAME="3.11">3.11</A>) What debugging features are available in
|
||||
<H4><A NAME="3.11">3.11</A>) What debugging features are available in
|
||||
PostgreSQL?</H4><P>
|
||||
|
||||
PostgreSQL has several features that report status information that can
|
||||
|
@ -763,7 +776,7 @@ In Postgres versions prior to 6.5, the maximum number of backends was
|
|||
64, and changing it required a rebuild after altering the MaxBackendId
|
||||
constant in <I>include/storage/sinvaladt.h.</I><P>
|
||||
|
||||
<H4><A NAME="3.13">3.13</A>) What are the pg_tempNNN.NN files in my
|
||||
<H4><A NAME="3.13">3.13</A>) What are the pg_tempNNN.NN files in my
|
||||
database directory?</H4><P>
|
||||
|
||||
They are temporary files generated by the query executor. For
|
||||
|
@ -775,38 +788,12 @@ The temp files should go away automatically, but might not if a backend
|
|||
crashes during a sort. If you have no transactions running at the time,
|
||||
it is safe to delete the pg_tempNNN.NN files.<P>
|
||||
|
||||
<H4><A NAME="3.14">3.14</A>) How do I set up a pg_group?</H4><P>
|
||||
|
||||
Currently, there is no easy interface to set up user groups. You have to
|
||||
explicitly insert/update the pg_group table. For example:
|
||||
|
||||
<PRE>
|
||||
jolly=> insert into pg_group (groname, grosysid, grolist)
|
||||
jolly=> values ('posthackers', '1234', '{5443, 8261}');
|
||||
INSERT 548224
|
||||
jolly=> grant insert on foo to group posthackers;
|
||||
CHANGE
|
||||
jolly=>
|
||||
</PRE><P>
|
||||
|
||||
The fields in pg_group are:
|
||||
<UL>
|
||||
<LI>groname: the group name. This a name and should
|
||||
be purely alphanumeric. Do not include underscores
|
||||
or other punctuation.
|
||||
<LI>grosysid: the group id. This is an int4.
|
||||
This should be unique for each group.
|
||||
<LI>grolist: the list of pg_user id's that belong in the group.
|
||||
This is an int4[].
|
||||
</UL><P>
|
||||
|
||||
|
||||
<HR>
|
||||
|
||||
<H2><CENTER>Operational Questions</CENTER></H2><P>
|
||||
|
||||
|
||||
<H4><A NAME="4.1">4.1</A>) The system seems to be confused about
|
||||
<H4><A NAME="4.1">4.1</A>) The system seems to be confused about
|
||||
commas, decimal points, and date formats.</H4><P>
|
||||
|
||||
Check your locale configuration. PostgreSQL uses the locale settings of
|
||||
|
@ -815,12 +802,12 @@ SET commands to control the date format. Set those accordingly for
|
|||
your operating environment.<P>
|
||||
|
||||
|
||||
<H4><A NAME="4.2">4.2</A>) What is the exact difference between
|
||||
<H4><A NAME="4.2">4.2</A>) What is the exact difference between
|
||||
binary cursors and normal cursors?</H4><P>
|
||||
|
||||
See the <SMALL>DECLARE</SMALL> manual page for a description.<P>
|
||||
|
||||
<H4><A NAME="4.3">4.3</A>) How do I <SMALL>SELECT</SMALL> only the first few
|
||||
<H4><A NAME="4.3">4.3</A>) How do I <SMALL>SELECT</SMALL> only the first few
|
||||
rows of a query?</H4><P>
|
||||
|
||||
See the <SMALL>FETCH</SMALL> manual page, or use SELECT ... LIMIT....<P>
|
||||
|
@ -842,7 +829,7 @@ with the <I>-E</I> option so that it will print out the queries it uses
|
|||
to execute the commands you give.<P>
|
||||
|
||||
|
||||
<H4><A NAME="4.5">4.5</A>) How do you remove a column from a
|
||||
<H4><A NAME="4.5">4.5</A>) How do you remove a column from a
|
||||
table?</H4><P>
|
||||
|
||||
We do not support <SMALL>ALTER TABLE DROP COLUMN,</SMALL> but do
|
||||
|
@ -858,7 +845,7 @@ this:
|
|||
|
||||
|
||||
|
||||
<H4><A NAME="4.6">4.6</A>) What is the maximum size for a
|
||||
<H4><A NAME="4.6">4.6</A>) What is the maximum size for a
|
||||
row, table, database?</H4><P>
|
||||
|
||||
Rows are limited to 8K bytes, but this can be changed by editing
|
||||
|
@ -904,7 +891,7 @@ this data can be estimated at 14MB:
|
|||
Indexes do not contain as much overhead, but do contain the data that is
|
||||
being indexed, so they can be large also.<P>
|
||||
|
||||
<H4><A NAME="4.8">4.8</A>) How do I find out what indices or
|
||||
<H4><A NAME="4.8">4.8</A>) How do I find out what indices or
|
||||
operations are defined in the database?</H4><P>
|
||||
|
||||
<I>psql</I> has a variety of backslash commands to show such information. Use
|
||||
|
@ -915,7 +902,7 @@ illustrates many of the <SMALL>SELECT</SMALL>s needed to get information from
|
|||
the database system tables.<P>
|
||||
|
||||
|
||||
<H4><A NAME="4.9">4.9</A>) My queries are slow or don't make
|
||||
<H4><A NAME="4.9">4.9</A>) My queries are slow or don't make
|
||||
use of the indexes. Why?</H4><P>
|
||||
|
||||
PostgreSQL does not automatically maintain statistics. One has to make
|
||||
|
@ -943,12 +930,12 @@ the string. So, to use indices, <SMALL>LIKE</SMALL> searches should not
|
|||
begin with <I>%,</I> and <I>~</I>(regular expression searches) should
|
||||
start with <I>^.</I>
|
||||
|
||||
<H4><A NAME="4.10">4.10</A>) How do I see how the query optimizer is
|
||||
<H4><A NAME="4.10">4.10</A>) How do I see how the query optimizer is
|
||||
evaluating my query?</H4><P>
|
||||
|
||||
See the <SMALL>EXPLAIN</SMALL> manual page.<P>
|
||||
|
||||
<H4><A NAME="4.11">4.11</A>) What is an R-tree index?</H4><P>
|
||||
<H4><A NAME="4.11">4.11</A>) What is an R-tree index?</H4><P>
|
||||
|
||||
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
|
||||
|
@ -971,7 +958,7 @@ extending R-trees require a bit of work and we don't currently have any
|
|||
documentation on how to do it.<P>
|
||||
|
||||
|
||||
<H4><A NAME="4.12">4.12</A>) What is Genetic Query
|
||||
<H4><A NAME="4.12">4.12</A>) What is Genetic Query
|
||||
Optimization?</H4><P>
|
||||
|
||||
The GEQO module in PostgreSQL is intended to solve the query
|
||||
|
@ -983,7 +970,7 @@ For further information see the documentation.
|
|||
|
||||
|
||||
|
||||
<H4><A NAME="4.13">4.13</A>) How do I do regular expression searches and
|
||||
<H4><A NAME="4.13">4.13</A>) How do I do regular expression searches and
|
||||
case-insensitive regexp searching?</H4><P>
|
||||
|
||||
The <I>~</I> operator does regular-expression matching, and <I>~*</I>
|
||||
|
@ -994,13 +981,13 @@ effect of case-insensitive <SMALL>LIKE</SMALL> with this:
|
|||
WHERE lower(textfield) LIKE lower(pattern)
|
||||
</PRE>
|
||||
|
||||
<H4><A NAME="4.14">4.14</A>) In a query, how do I detect if a field
|
||||
<H4><A NAME="4.14">4.14</A>) In a query, how do I detect if a field
|
||||
is NULL?</H4><P>
|
||||
|
||||
You test the column with IS NULL and IS NOT NULL.<P>
|
||||
|
||||
|
||||
<H4><A NAME="4.15">4.15</A>) What is the difference between the
|
||||
<H4><A NAME="4.15">4.15</A>) What is the difference between the
|
||||
various character types?</H4>
|
||||
|
||||
<PRE>
|
||||
|
@ -1025,7 +1012,7 @@ them. Specifically, the penalty is for access to all columns after the
|
|||
first column of this type.<P>
|
||||
|
||||
|
||||
<H4><A NAME="4.16.1">4.16.1</A>) How do I create a
|
||||
<H4><A NAME="4.16.1">4.16.1</A>) How do I create a
|
||||
serial/auto-incrementing field?</H4><P>
|
||||
|
||||
PostgreSQL supports <SMALL>SERIAL</SMALL> data type. It auto-creates a
|
||||
|
@ -1054,7 +1041,7 @@ option or <SMALL>COPY WITH OIDS</SMALL> option to preserve the oids.<P>
|
|||
For more details, see Bruce Momjian's chapter on
|
||||
<A HREF="http://www.postgresql.org/docs/aw_pgsql_book/node74.html">Numbering Rows.</A>
|
||||
|
||||
<H4><A NAME="4.16.2">4.16.2</A>) How do I get the back the generated SERIAL value after an insert?</H4><P>
|
||||
<H4><A NAME="4.16.2">4.16.2</A>) How do I get the back the generated SERIAL value after an insert?</H4><P>
|
||||
Probably the simplest approach is to to retrieve the next SERIAL value from the sequence object with the <I>nextval()</I> function <I>before</I> inserting and then insert it explicitly. Using the example table in <A HREF="#4.16.1">4.16.1</A>, that might look like this:
|
||||
<PRE>
|
||||
$newSerialID = nextval('person_id_seq');
|
||||
|
@ -1069,12 +1056,12 @@ Similarly, you could retrieve the just-assigned SERIAL value with the <I>currval
|
|||
</PRE>
|
||||
Finally, you could use the <A HREF="#4.17">oid</A> returned from the INSERT statement to lookup the default value, though this is probably the least portable approach. In perl, using DBI with Edmund Mergl's DBD::Pg module, the oid value is made available via $sth->{pg_oid_status} after $sth->execute().
|
||||
|
||||
<H4><A NAME="4.16.3">4.16.3</A>) Wouldn't use of currval() and nextval() lead to a race condition with other concurrent backend processes?</H4><P>
|
||||
<H4><A NAME="4.16.3">4.16.3</A>) Wouldn't use of currval() and nextval() lead to a race condition with other concurrent backend processes?</H4><P>
|
||||
|
||||
No. That has been handled by the backends.
|
||||
|
||||
|
||||
<H4><A NAME="4.17">4.17</A>) What is an oid? What is a tid?</H4><P>
|
||||
<H4><A NAME="4.17">4.17</A>) What is an oid? What is a tid?</H4><P>
|
||||
|
||||
Oids are PostgreSQL's answer to unique row ids. Every row that is
|
||||
created in PostgreSQL gets a unique oid. All oids generated during
|
||||
|
@ -1111,7 +1098,7 @@ values. Tids change after rows are modified or reloaded. They are used
|
|||
by index entries to point to physical rows.<P>
|
||||
|
||||
|
||||
<H4><A NAME="4.18">4.18</A>) What is the meaning of some of the terms
|
||||
<H4><A NAME="4.18">4.18</A>) What is the meaning of some of the terms
|
||||
used in PostgreSQL?</H4><P>
|
||||
|
||||
Some of the source code and older documentation use terms that have more
|
||||
|
@ -1206,20 +1193,20 @@ We hope to fix this limitation in a future release.
|
|||
<H2><CENTER>Extending PostgreSQL</CENTER></H2><P>
|
||||
|
||||
|
||||
<H4><A NAME="5.1">5.1</A>) I wrote a user-defined function. When
|
||||
<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><P>
|
||||
|
||||
The problem could be a number of things. Try testing your user-defined
|
||||
function in a stand alone test program first.
|
||||
|
||||
<H4><A NAME="5.2">5.2</A>) What does the message:
|
||||
<H4><A NAME="5.2">5.2</A>) What does the message:
|
||||
<I>NOTICE:PortalHeapMemoryFree: 0x402251d0 not in alloc set!</I> mean?</H4><P>
|
||||
|
||||
You are <I>pfree'ing</I> something that was not <I>palloc'ed.</I>
|
||||
Beware of mixing <I>malloc/free</I> and <I>palloc/pfree.</I>
|
||||
|
||||
|
||||
<H4><A NAME="5.3">5.3</A>) How can I contribute some nifty new types and
|
||||
<H4><A NAME="5.3">5.3</A>) How can I contribute some nifty new types and
|
||||
functions for PostgreSQL?</H4><P>
|
||||
|
||||
|
||||
|
@ -1227,13 +1214,13 @@ Send your extensions to the pgsql-hackers mailing list, and they will
|
|||
eventually end up in the <I>contrib/</I> subdirectory.<P>
|
||||
|
||||
|
||||
<H4><A NAME="5.4">5.4</A>) How do I write a C function to return a
|
||||
<H4><A NAME="5.4">5.4</A>) How do I write a C function to return a
|
||||
tuple?</H4><P>
|
||||
|
||||
This requires wizardry so extreme that the authors have never
|
||||
tried it, though in principle it can be done.<P>
|
||||
|
||||
<H4><A NAME="5.5">5.5</A>) I have changed a source file. Why does the
|
||||
<H4><A NAME="5.5">5.5</A>) I have changed a source file. Why does the
|
||||
recompile does not see the change?</H4><P>
|
||||
|
||||
The Makefiles do not have the proper dependencies for include files. You
|
||||
|
|
|
@ -2,16 +2,17 @@
|
|||
# This utility is used to generate a compact list of changes for each
|
||||
# release, bjm 2000-02-22
|
||||
|
||||
# Usage $0 [-r 'revision pattern'] file
|
||||
# Usage $0 file
|
||||
|
||||
# no branches:
|
||||
# cvs log -d '>1999-06-14 00:00:00 GMT' . > log
|
||||
# pgcvslog -r '\.2\.[0-9]*$' log
|
||||
#
|
||||
# pre and post-branch logs:
|
||||
# cvs log -d'2000-05-08 00:00:00 GMT<2000-05-29 00:00:00 GMT'
|
||||
# cvs log -d'>2000-05-29 00:00:00 GMT' -rREL7_0_PATCHES
|
||||
#
|
||||
|
||||
if [ "X$1" = "X-r" ]
|
||||
then REV="$2"
|
||||
shift 2
|
||||
else REV=".*"
|
||||
fi
|
||||
# pgcvslog -r '\.2\.[0-9]*$' log
|
||||
|
||||
cat "$@" |
|
||||
|
||||
|
@ -21,8 +22,6 @@ cat "$@" |
|
|||
awk '
|
||||
$0 ~ /^Working file:/ {workingfile = $0}
|
||||
|
||||
$1 == "revision" && $2 !~ /'"$REV"'/ {skip = "Y"}
|
||||
|
||||
($0 ~ /^====*$/ || $0 ~ /^----*$/) && skip == "N" \
|
||||
{
|
||||
/* print blank line separating entries */
|
||||
|
|
Loading…
Reference in New Issue