pg_dump: use ALTER TABLE for PKs
I've attached a patch which enhances pg_dump to use ALTER TABLE when
defining the primary keys of a table (instead of including this
information in the table definition).
This follows a suggestion by Christopher Kings-Lynne (good idea!).
The patch is pretty simple, partly because the code was already there,
just commented out ;-) I fixed a typo and added some comments.
Bruce suggested that this should get some code review, since a bug in
pg_dump would be bad news. Any comments would be welcome.
Cheers,
Neil
--
Neil Conway <neilconway@rogers.com>
PGP Key ID: DB3C29FC
Attachments:
pg_dump_pk.patchtext/x-patch; charset=ISO-8859-1Download
*** ./src/bin/pg_dump/pg_dump.c.orig Mon Feb 18 20:17:59 2002
--- ./src/bin/pg_dump/pg_dump.c Mon Feb 18 21:16:37 2002
***************
*** 4251,4257 ****
! /* put the CONSTRAINTS inside the table def */
for (k = 0; k < tblinfo[i].ncheck; k++)
{
if (actual_atts + k > 0)
--- 4251,4257 ----
! /* Put the CONSTRAINTS inside the table def */
for (k = 0; k < tblinfo[i].ncheck; k++)
{
if (actual_atts + k > 0)
***************
*** 4261,4268 ****
tblinfo[i].check_expr[k]);
}
! /* Primary Key */
! if (tblinfo[i].pkIndexOid != NULL)
{
PQExpBuffer consDef;
--- 4261,4276 ----
tblinfo[i].check_expr[k]);
}
! /*
! * Primary Key: In versions of PostgreSQL prior to 7.2, we
! * need to include the primary key in the table definition,
! * using the following code. However, this is not ideal
! * because it creates an index on the table, which slows
! * down COPYing data into the table. As of release 7.2, we
! * can add primary keys to a table after it has been
! * defined using ALTER TABLE. This is done in dumpIndexes().
! */
! if (g_fout->remoteVersion < 70200 && (tblinfo[i].pkIndexOid != NULL))
{
PQExpBuffer consDef;
***************
*** 4446,4472 ****
/* Handle PK indexes */
if (strcmp(indinfo[i].indisprimary, "t") == 0)
{
- #if 0
-
/*
! * PK: Enable this code when ALTER TABLE supports PK
! * constraints.
*/
! PQExpBuffer consDef = getPKconstraint(&tblinfo[tableInd], &indinfo[i]);
!
! resetPQExpBuffer(q);
! appendPQExpBuffer(q, "Alter Table %s Add %s;",
! fmtId(tblinfo[tableInd].relname, force_quotes),
! consDef->data);
!
! ArchiveEntry(fout, indinfo[i].oid, tblinfo[tableInd].primary_key_name,
! "CONSTRAINT", NULL, q->data, "",
! "", tblinfo[tableInd].usename, NULL, NULL);
! destroyPQExpBuffer(consDef);
! #endif
/*
* Don't need to do anything else for this system-generated
--- 4454,4480 ----
/* Handle PK indexes */
if (strcmp(indinfo[i].indisprimary, "t") == 0)
{
/*
! * As of release 7.2, ALTER TABLE supports adding PKs to a table after
! * it has been created. This is the preferred method of defining
! * primary keys.
*/
+ if (g_fout->remoteVersion >= 70200)
+ {
+ PQExpBuffer consDef = getPKconstraint(&tblinfo[tableInd], &indinfo[i]);
! resetPQExpBuffer(q);
! appendPQExpBuffer(q, "Alter Table %s Add %s;",
! fmtId(tblinfo[tableInd].relname, force_quotes),
! consDef->data);
!
! ArchiveEntry(fout, indinfo[i].indexreloid, tblinfo[tableInd].primary_key_name,
! "CONSTRAINT", NULL, q->data, "",
! "", tblinfo[tableInd].usename, NULL, NULL);
! destroyPQExpBuffer(consDef);
! }
/*
* Don't need to do anything else for this system-generated
On Mon, 2002-02-18 at 22:24, Bruce Momjian wrote:
Neil Conway wrote:
Bruce suggested that this should get some code review, since a bug in
pg_dump would be bad news. Any comments would be welcome.The issue was that the author wants it in 7.2.1.
I'm confused: which author? Where does this information come from?
I question whether a
purely performance pg_dump patch belongs in a minor release. I will let
others decide.
I agree.
Cheers,
Neil
--
Neil Conway <neilconway@rogers.com>
PGP Key ID: DB3C29FC
Import Notes
Reply to msg id not found: 200202190324.g1J3OTd10219@candle.pha.pa.usReference msg id not found: 200202190324.g1J3OTd10219@candle.pha.pa.us | Resolved by subject fallback
On Mon, 2002-02-18 at 22:35, Bruce Momjian wrote:
Neil Conway wrote:
I'm confused: which author? Where does this information come from?
I thought you were the author.
I am ;-)
Oh, I thought you wanted this in 7.2.1.
Miscommunication, I think -- in a private email to you, I wrote "I don't
think this is appropriate for 7.2.1, in any case". ;-)
it just needs the normal review, not extra special review. :-)
Okay.
Cheers,
Neil
--
Neil Conway <neilconway@rogers.com>
PGP Key ID: DB3C29FC
Import Notes
Reply to msg id not found: 200202190335.g1J3ZQ113733@candle.pha.pa.usReference msg id not found: 200202190335.g1J3ZQ113733@candle.pha.pa.us | Resolved by subject fallback
I tried going patch <pg_dump_pk.patch in the root dir of latest pgsql cvs
and got this:
Hmm... Looks like a context diff to me...
The text leading up to this was:
--------------------------
|*** ./src/bin/pg_dump/pg_dump.c.orig Mon Feb 18 20:17:59 2002
|--- ./src/bin/pg_dump/pg_dump.c Mon Feb 18 21:16:37 2002
--------------------------
Patching file ./src/bin/pg_dump/pg_dump.c using Plan A...
Hunk #1 failed at 4251.
Hunk #2 failed at 4261.
(Fascinating--this is really a new-style context diff but without
the telltale extra asterisks on the *** line that usually indicate
the new style...)
Hunk #3 failed at 4454.
3 out of 3 hunks failed--saving rejects to ./src/bin/pg_dump/pg_dump.c.rej
done
How should I apply this patch?
Chris
Show quoted text
-----Original Message-----
From: pgsql-hackers-owner@postgresql.org
[mailto:pgsql-hackers-owner@postgresql.org]On Behalf Of Neil Conway
Sent: Tuesday, 19 February 2002 10:26 AM
To: pgsql-hackers@postgresql.org
Subject: [HACKERS] pg_dump: use ALTER TABLE for PKsI've attached a patch which enhances pg_dump to use ALTER TABLE when
defining the primary keys of a table (instead of including this
information in the table definition).This follows a suggestion by Christopher Kings-Lynne (good idea!).
The patch is pretty simple, partly because the code was already there,
just commented out ;-) I fixed a typo and added some comments.Bruce suggested that this should get some code review, since a bug in
pg_dump would be bad news. Any comments would be welcome.Cheers,
Neil
--
Neil Conway <neilconway@rogers.com>
PGP Key ID: DB3C29FC
Neil Conway writes:
I've attached a patch which enhances pg_dump to use ALTER TABLE when
defining the primary keys of a table (instead of including this
information in the table definition).
I think you've got the "7.2 or later" theme in your patch mixed up. The
version number you're evaluating is the version of the database you're
dumping. The feature you're adding is dependent on the version of the
database you're restoring into. The version of the database you're
restoring into is always >= the pg_dump version. Thus, you don't need any
version checks. Plus, I think this patch is going into 7.3, no?
--
Peter Eisentraut peter_e@gmx.net
The issue was that the author wants it in 7.2.1.
I'm confused: which author? Where does this information come from?
I certainly didn't propose that it appear in 7.2.1 - I was thinking 7.3.
I question whether a
purely performance pg_dump patch belongs in a minor release. I will let
others decide.
It sure shouldn't...
Chris
On Mon, 2002-02-18 at 22:46, Peter Eisentraut wrote:
Neil Conway writes:
I've attached a patch which enhances pg_dump to use ALTER TABLE when
defining the primary keys of a table (instead of including this
information in the table definition).I think you've got the "7.2 or later" theme in your patch mixed up. The
version number you're evaluating is the version of the database you're
dumping. The feature you're adding is dependent on the version of the
database you're restoring into. The version of the database you're
restoring into is always >= the pg_dump version. Thus, you don't need any
version checks.
You're absolutely correct -- thanks for spotting that. A new version of
the patch is attached.
Cheers,
Neil
--
Neil Conway <neilconway@rogers.com>
PGP Key ID: DB3C29FC
Attachments:
pg_dump_pk-2.patchtext/x-patch; charset=ISO-8859-1Download
*** ./src/bin/pg_dump/pg_dump.c.orig Mon Feb 18 20:17:59 2002
--- ./src/bin/pg_dump/pg_dump.c Mon Feb 18 23:05:19 2002
***************
*** 4251,4257 ****
! /* put the CONSTRAINTS inside the table def */
for (k = 0; k < tblinfo[i].ncheck; k++)
{
if (actual_atts + k > 0)
--- 4251,4257 ----
! /* Put the CONSTRAINTS inside the table def */
for (k = 0; k < tblinfo[i].ncheck; k++)
{
if (actual_atts + k > 0)
***************
*** 4261,4296 ****
tblinfo[i].check_expr[k]);
}
! /* Primary Key */
! if (tblinfo[i].pkIndexOid != NULL)
! {
! PQExpBuffer consDef;
!
! /* Find the corresponding index */
! for (k = 0; k < numIndexes; k++)
! {
! if (strcmp(indinfo[k].indexreloid,
! tblinfo[i].pkIndexOid) == 0)
! break;
! }
!
! if (k >= numIndexes)
! {
! write_msg(NULL, "dumpTables(): failed sanity check, could not find index (%s) for primary key constraint\n",
! tblinfo[i].pkIndexOid);
! exit_nicely();
! }
!
! consDef = getPKconstraint(&tblinfo[i], &indinfo[k]);
!
! if ((actual_atts + tblinfo[i].ncheck) > 0)
! appendPQExpBuffer(q, ",\n\t");
!
! appendPQExpBuffer(q, "%s", consDef->data);
!
! destroyPQExpBuffer(consDef);
! }
!
appendPQExpBuffer(q, "\n)");
--- 4261,4275 ----
tblinfo[i].check_expr[k]);
}
! /*
! * Primary Key: In versions of PostgreSQL prior to 7.2, we
! * needed to include the primary key in the table definition.
! * However, this is not ideal because it creates an index
! * on the table, which makes COPY slower. As of release 7.2,
! * we can add primary keys to a table after is has been created,
! * using ALTER TABLE ; see dumpIndexes() for more information.
! * Therefore, we ignore primary keys in this function.
! */
appendPQExpBuffer(q, "\n)");
***************
*** 4446,4472 ****
/* Handle PK indexes */
if (strcmp(indinfo[i].indisprimary, "t") == 0)
{
- #if 0
-
- /*
- * PK: Enable this code when ALTER TABLE supports PK
- * constraints.
- */
-
PQExpBuffer consDef = getPKconstraint(&tblinfo[tableInd], &indinfo[i]);
resetPQExpBuffer(q);
appendPQExpBuffer(q, "Alter Table %s Add %s;",
! fmtId(tblinfo[tableInd].relname, force_quotes),
consDef->data);
! ArchiveEntry(fout, indinfo[i].oid, tblinfo[tableInd].primary_key_name,
"CONSTRAINT", NULL, q->data, "",
"", tblinfo[tableInd].usename, NULL, NULL);
destroyPQExpBuffer(consDef);
- #endif
/*
* Don't need to do anything else for this system-generated
--- 4425,4443 ----
/* Handle PK indexes */
if (strcmp(indinfo[i].indisprimary, "t") == 0)
{
PQExpBuffer consDef = getPKconstraint(&tblinfo[tableInd], &indinfo[i]);
resetPQExpBuffer(q);
appendPQExpBuffer(q, "Alter Table %s Add %s;",
! fmtId(tblinfo[tableInd].relname, force_quotes),
consDef->data);
! ArchiveEntry(fout, indinfo[i].indexreloid, tblinfo[tableInd].primary_key_name,
"CONSTRAINT", NULL, q->data, "",
"", tblinfo[tableInd].usename, NULL, NULL);
destroyPQExpBuffer(consDef);
/*
* Don't need to do anything else for this system-generated
At 21:26 18/02/02 -0500, Neil Conway wrote:
The patch is pretty simple, partly because the code was already there,
just commented out ;-) I fixed a typo and added some comments.
When I originally wrote the commented-out code, we did not have the ability
to make 'dependant' TOC Entries, so it uses the OID of the index as the PK
OID in the ArchiveEntry call.
I can't really think of a case where the index OID would be less than the
table OID, but it might be good to put the table OID in the deps list; this
will force the PK to go after the table in all cases. Did I mention I'm
paranoid?
It's also a first step in the ability to dump a 'whole table' Vs. just a
table definition - which we will need when all constraints can be dumped
via 'ALTER TABLE'.
For clarity, 'whole table' might mean the attrs, indexes, constraints,
triggers etc.
----------------------------------------------------------------
Philip Warner | __---_____
Albatross Consulting Pty. Ltd. |----/ - \
(A.B.N. 75 008 659 498) | /(@) ______---_
Tel: (+61) 0500 83 82 81 | _________ \
Fax: (+61) 0500 83 82 82 | ___________ |
Http://www.rhyme.com.au | / \|
| --________--
PGP key available upon request, | /
and from pgp5.ai.mit.edu:11371 |/
For clarity, 'whole table' might mean the attrs, indexes, constraints,
triggers etc.
Sorry, this should probably be limited to anything that can go into a
'CREATE TABLE' statement, so triggers & indexes would not be included - but
constraints, default values etc would be there.
----------------------------------------------------------------
Philip Warner | __---_____
Albatross Consulting Pty. Ltd. |----/ - \
(A.B.N. 75 008 659 498) | /(@) ______---_
Tel: (+61) 0500 83 82 81 | _________ \
Fax: (+61) 0500 83 82 82 | ___________ |
Http://www.rhyme.com.au | / \|
| --________--
PGP key available upon request, | /
and from pgp5.ai.mit.edu:11371 |/
Philip Warner <pjw@rhyme.com.au> writes:
I can't really think of a case where the index OID would be less than the
table OID, but it might be good to put the table OID in the deps list; this
will force the PK to go after the table in all cases. Did I mention I'm
paranoid?
After OID-counter wraparound it'd be quite easy to have such a case.
To the extent that pg_dump is depending on OID comparison to tell it
something about creation order, it's really broken and should be fixed.
The dependencies mechanism should eventually be extended to cover all
these relationships.
regards, tom lane
At 21:26 18/02/02 -0500, Neil Conway wrote:
Bruce suggested that this should get some code review, since a bug in
pg_dump would be bad news. Any comments would be welcome.
Part of the reason I did not implement this earlier was that ALTER
TABLE...PK did not handle child tables 'properly' (for some arbitrary
meaning of the word 'properly'). How have you covered:
CREATE TABLE PARENT(F1 INT PRIMARY KEY);
CREATE TABLE CHILD(...) INHERIT PARENT
this should create a PK on CHILD; what does pg-dump and the ALTER TABLE
implementation do? Not sure how it should work, but ultimately we need to
put the PK (and, necessarily, FK) creation at the end of the data load:
CREATE TABLE PARENT(F1 INT);
CREATE TABLE CHILD(...) INHERIT PARENT
Load PARENT
Load CHILD
ALTER TABLE PARENT...PK
ALTER TABLE CHILD...PK
This is a non-trivial issue since we also need to cater for:
CREATE TABLE PARENT(F1 INT);
CREATE TABLE CHILD1(...) INHERIT PARENT
ALTER TABLE PARENT...PK
CREATE TABLE CHILD2(...) INHERIT PARENT
Which, at least historically, resulted in CHILD1 *not* having a PK. I would
have built CVS and checked myself, but I'm relocating office (and servers)
at the moment.
----------------------------------------------------------------
Philip Warner | __---_____
Albatross Consulting Pty. Ltd. |----/ - \
(A.B.N. 75 008 659 498) | /(@) ______---_
Tel: (+61) 0500 83 82 81 | _________ \
Fax: (+61) 0500 83 82 82 | ___________ |
Http://www.rhyme.com.au | / \|
| --________--
PGP key available upon request, | /
and from pgp5.ai.mit.edu:11371 |/
On Wed, 20 Feb 2002, Philip Warner wrote:
At 21:26 18/02/02 -0500, Neil Conway wrote:
Bruce suggested that this should get some code review, since a bug in
pg_dump would be bad news. Any comments would be welcome.Part of the reason I did not implement this earlier was that ALTER
TABLE...PK did not handle child tables 'properly' (for some arbitrary
meaning of the word 'properly'). How have you covered:CREATE TABLE PARENT(F1 INT PRIMARY KEY);
CREATE TABLE CHILD(...) INHERIT PARENTthis should create a PK on CHILD; what does pg-dump and the ALTER TABLE
implementation do? Not sure how it should work, but ultimately we need to
Unless it was changed between rc2 and release, the above type of
sequence does not end up with a primary key on child(f1).
At 13:07 19/02/02 -0800, Stephan Szabo wrote:
CREATE TABLE PARENT(F1 INT PRIMARY KEY);
CREATE TABLE CHILD(...) INHERIT PARENTthis should create a PK on CHILD; what does pg-dump and the ALTER TABLE
implementation do? Not sure how it should work, but ultimately we need toUnless it was changed between rc2 and release, the above type of
sequence does not end up with a primary key on child(f1).
Interesting, - that makes pg_dumps job easier. Are any constraints ever
inherited?
----------------------------------------------------------------
Philip Warner | __---_____
Albatross Consulting Pty. Ltd. |----/ - \
(A.B.N. 75 008 659 498) | /(@) ______---_
Tel: (+61) 0500 83 82 81 | _________ \
Fax: (+61) 0500 83 82 82 | ___________ |
Http://www.rhyme.com.au | / \|
| --________--
PGP key available upon request, | /
and from pgp5.ai.mit.edu:11371 |/
On Wed, 20 Feb 2002, Philip Warner wrote:
At 13:07 19/02/02 -0800, Stephan Szabo wrote:
CREATE TABLE PARENT(F1 INT PRIMARY KEY);
CREATE TABLE CHILD(...) INHERIT PARENTthis should create a PK on CHILD; what does pg-dump and the ALTER TABLE
implementation do? Not sure how it should work, but ultimately we need toUnless it was changed between rc2 and release, the above type of
sequence does not end up with a primary key on child(f1).Interesting, - that makes pg_dumps job easier. Are any constraints ever
inherited?
Check constraints and not null I believe are inherited by default.
But I just thought of a case that won't dump and restore the same as it
was originally made because we support ONLY on alter table add constraint.
create table z(a int);
create table z2() inherits(z);
alter table only z add constraint foo1 check(a>4);
will make z have a constraint on a but not z2 and the check will get
dumped as part of z's definition which will restore with z2 having
the check.
At 14:05 19/02/02 -0800, Stephan Szabo wrote:
Check constraints and not null I believe are inherited by default.
But I just thought of a case that won't dump and restore the same as it
was originally made because we support ONLY on alter table add constraint.create table z(a int);
create table z2() inherits(z);
alter table only z add constraint foo1 check(a>4);will make z have a constraint on a but not z2 and the check will get
dumped as part of z's definition which will restore with z2 having
the check.
This brings to mind a couple of questions:
1. Do you have plans to support inhertiance of PK constraints?
2. Does/will DROP CONSTRAINT support ONLY?
----------------------------------------------------------------
Philip Warner | __---_____
Albatross Consulting Pty. Ltd. |----/ - \
(A.B.N. 75 008 659 498) | /(@) ______---_
Tel: (+61) 0500 83 82 81 | _________ \
Fax: (+61) 0500 83 82 82 | ___________ |
Http://www.rhyme.com.au | / \|
| --________--
PGP key available upon request, | /
and from pgp5.ai.mit.edu:11371 |/
The behaviour you illustrate below does not exist and therefore is not a
problem:
test=# create table parent(f1 int primary key);
NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index 'parent_pkey'
for t
able 'parent'
CREATE
test=# create table child(f2 int) inherits (parent);
CREATE
test=# \d parent
Table "parent"
Column | Type | Modifiers
--------+---------+-----------
f1 | integer | not null
Primary key: parent_pkey
test=# \d child
Table "child"
Column | Type | Modifiers
--------+---------+-----------
f1 | integer | not null
f2 | integer |
Chris
Show quoted text
-----Original Message-----
From: Philip Warner [mailto:pjw@rhyme.com.au]
Sent: Wednesday, 20 February 2002 4:53 AM
To: Neil Conway; pgsql-hackers@postgresql.org
Cc: Christopher Kings-Lynne
Subject: Re: [HACKERS] pg_dump: use ALTER TABLE for PKsAt 21:26 18/02/02 -0500, Neil Conway wrote:
Bruce suggested that this should get some code review, since a bug in
pg_dump would be bad news. Any comments would be welcome.Part of the reason I did not implement this earlier was that ALTER
TABLE...PK did not handle child tables 'properly' (for some arbitrary
meaning of the word 'properly'). How have you covered:CREATE TABLE PARENT(F1 INT PRIMARY KEY);
CREATE TABLE CHILD(...) INHERIT PARENTthis should create a PK on CHILD; what does pg-dump and the ALTER TABLE
implementation do? Not sure how it should work, but ultimately we need to
put the PK (and, necessarily, FK) creation at the end of the data load:CREATE TABLE PARENT(F1 INT);
CREATE TABLE CHILD(...) INHERIT PARENTLoad PARENT
Load CHILDALTER TABLE PARENT...PK
ALTER TABLE CHILD...PKThis is a non-trivial issue since we also need to cater for:
CREATE TABLE PARENT(F1 INT);
CREATE TABLE CHILD1(...) INHERIT PARENT
ALTER TABLE PARENT...PK
CREATE TABLE CHILD2(...) INHERIT PARENTWhich, at least historically, resulted in CHILD1 *not* having a
PK. I would
have built CVS and checked myself, but I'm relocating office (and servers)
at the moment.----------------------------------------------------------------
Philip Warner | __---_____
Albatross Consulting Pty. Ltd. |----/ - \
(A.B.N. 75 008 659 498) | /(@) ______---_
Tel: (+61) 0500 83 82 81 | _________ \
Fax: (+61) 0500 83 82 82 | ___________ |
Http://www.rhyme.com.au | / \|
| --________--
PGP key available upon request, | /
and from pgp5.ai.mit.edu:11371 |/
On Wed, 20 Feb 2002, Philip Warner wrote:
At 14:05 19/02/02 -0800, Stephan Szabo wrote:
Check constraints and not null I believe are inherited by default.
But I just thought of a case that won't dump and restore the same as it
was originally made because we support ONLY on alter table add constraint.create table z(a int);
create table z2() inherits(z);
alter table only z add constraint foo1 check(a>4);will make z have a constraint on a but not z2 and the check will get
dumped as part of z's definition which will restore with z2 having
the check.This brings to mind a couple of questions:
1. Do you have plans to support inhertiance of PK constraints?
If you mean me personally, not in the short term. I don't think
that pk over an inheritance tree means a copy of the constraint
for each table either, so it's not quite the same as some of the
other constraints.
2. Does/will DROP CONSTRAINT support ONLY?
Pretty sure it does. I also think it'll let you drop an inherited
constraint from a child table which can get you into the same state as
the create/alter above. Does dropping inherited constraints from
children or allowing constraints to be added to only the parent table
make sense? I only wonder because unless you're using only on the queries
you'll see the rows in the children that violate the constraint which
seems kinda odd to me.
Your patch has been added to the PostgreSQL unapplied patches list at:
http://candle.pha.pa.us/cgi-bin/pgpatches
I will try to apply it within the next 48 hours.
---------------------------------------------------------------------------
Neil Conway wrote:
On Mon, 2002-02-18 at 22:46, Peter Eisentraut wrote:
Neil Conway writes:
I've attached a patch which enhances pg_dump to use ALTER TABLE when
defining the primary keys of a table (instead of including this
information in the table definition).I think you've got the "7.2 or later" theme in your patch mixed up. The
version number you're evaluating is the version of the database you're
dumping. The feature you're adding is dependent on the version of the
database you're restoring into. The version of the database you're
restoring into is always >= the pg_dump version. Thus, you don't need any
version checks.You're absolutely correct -- thanks for spotting that. A new version of
the patch is attached.Cheers,
Neil
--
Neil Conway <neilconway@rogers.com>
PGP Key ID: DB3C29FC
[ Attachment, skipping... ]
---------------------------(end of broadcast)---------------------------
TIP 5: Have you checked our extensive FAQ?
--
Bruce Momjian | http://candle.pha.pa.us
pgman@candle.pha.pa.us | (610) 853-3000
+ If your life is a hard drive, | 830 Blythe Avenue
+ Christ can be your backup. | Drexel Hill, Pennsylvania 19026
One persons view, unfortunately probably shared by others
http://www.open-mag.com/42444203327.htm
Dave
One persons view, unfortunately probably shared by others
http://www.open-mag.com/42444203327.htm
Hmm. He has a few facts right imho; the last few sentences of the
article describe exactly how PostgreSQL *does* get adopted. Actual
adoption and use will precede trade press reports by several years (c.f.
Linux adoption and severely lagging trade press recognition of such).
Doesn't bother me a bit, and I am always amused by the bandwagoner
journalists changing their stories once the cat is out of the bag. It'll
happen here too ;)
- Thomas
Dave Cramer wrote:
One persons view, unfortunately probably shared by others
Yea, I shot this over to the general list. I found it an interesting
read, and may be true for very large customers. He is correct that we
are more popular with smaller customers. No question about that.
--
Bruce Momjian | http://candle.pha.pa.us
pgman@candle.pha.pa.us | (610) 853-3000
+ If your life is a hard drive, | 830 Blythe Avenue
+ Christ can be your backup. | Drexel Hill, Pennsylvania 19026
Hmm. He has a few facts right imho; the last few sentences of the
article describe exactly how PostgreSQL *does* get adopted. Actual
adoption and use will precede trade press reports by several years (c.f.
Linux adoption and severely lagging trade press recognition of such).Doesn't bother me a bit, and I am always amused by the bandwagoner
journalists changing their stories once the cat is out of the bag. It'll
happen here too ;)
Yes, Linux is an excellent parallel.
--
Bruce Momjian | http://candle.pha.pa.us
pgman@candle.pha.pa.us | (610) 853-3000
+ If your life is a hard drive, | 830 Blythe Avenue
+ Christ can be your backup. | Drexel Hill, Pennsylvania 19026