[HACKERS] Big 7.4 items : table attachment

2002-12-14 Thread Jean-Michel POURE
Dear all,

Why not use libgda, Gnome-DB database provider, to be able to attach foreign 
tables inside PostgreSQL. Would it be hard to achieve?

Many users are looking for such a solution to be able to query/update tables 
outside PostgreSQL in Oracle, MS SQL Server, IBM DB2 or even MySQL databases.

Cheers,
Jean-Michel POURE

---(end of broadcast)---
TIP 3: if posting/reading through Usenet, please send an appropriate
subscribe-nomail command to [EMAIL PROTECTED] so that your
message can get through to the mailing list cleanly



Re: [HACKERS] [GENERAL] PostgreSQL Global Development Group Announces

2002-12-14 Thread mlw
Peter Eisentraut wrote:


Marc G. Fournier writes:

 

It isn't, but those working on -advocacy were asked to help come up with a
stronger release *announcement* then we've had in the past ...
   


Consider that a failed experiment.  PostgreSQL is driven by the
development group and, to some extent, by the existing user base.  The
last thing we need is a marketing department in that mix.



I am a long term user of PostgreSQL and I think it suffers from a lack 
of a marketing department.

If you have the best restaurant in town, but no one eats there, what's 
the point?

We all correspond and work on PostgreSQL to make it the best we can. To 
create something good that people can use. One of the prime parts of 
that sentence is people can use. Like it or not, that means getting 
the word out.

MySQL is an appalling database, but people use it, a lot! Why? Because 
they really market it. They push it. They craft deceptive benchmarks 
which show it is better. PostgreSQL doesn't even need to be deceptive.

My company is working on a Suite of applications and PostgreSQL is a key 
component. We will be doing our own local marketing, but it it would 
help if the PostgreSQL core understood that a clean professional looking 
website, geared toward end users would make a big difference.

Furthermore, I think it would be very rewarding for everyone involved if 
we could get some of the street cred that MySQL has. PostgreSQL *is* a 
better database in almost every way. If MySQL virtually owns the open 
source mind share for SQL databases, it is our fault.

Peter, Tom, Bruce, et al. you guys do a great job, IMHO PostgreSQL isn't 
lacking in anything technical, as of 7.2, with non-locking vacuum, I 
would consider it a viable database with no caveats. 7.3 is superior.  A 
pure Win32 version would be awesome.

I just think that if we could get people equally talented at spreading 
the word and making the noise, it would make a big difference in the 
number of users. More users eventually translates to more funding or 
development.

Wouldn't you like to say to someone: I contribute the PostgreSQL 
project and have them say Cool instead of What's that?






---(end of broadcast)---
TIP 3: if posting/reading through Usenet, please send an appropriate
subscribe-nomail command to [EMAIL PROTECTED] so that your
message can get through to the mailing list cleanly


Re: [HACKERS] [GENERAL] PostgreSQL Global Development Group

2002-12-14 Thread Devrim GÜNDÜZ
Hi,

On Sat, 2002-12-14 at 13:26, mlw wrote:

 MySQL is an appalling database, but people use it, a lot! Why? Because 
 they really market it. They push it. They craft deceptive benchmarks 
 which show it is better. PostgreSQL doesn't even need to be deceptive.
 
snip
 Furthermore, I think it would be very rewarding for everyone involved if 
 we could get some of the street cred that MySQL has. PostgreSQL *is* a 
 better database in almost every way. If MySQL virtually owns the open 
 source mind share for SQL databases, it is our fault.

I do NOT like hearing about MySQL in this (these) list(s).

PostgreSQL is not in the same category with MySQL. MySQL is for
*dummies*, not database admins. I do not even call  it a database. I
have never forgotten my data loss 2,5 years ago; when I used MySQL for
just 2 months!!! 

If we want to sell PostgreSQL, we should talk about, maybe, Oracle.
I have never took care of MySQL said. I just know that I'm running
PostgreSQL since 2,5 years and I only stopped it JUST before upgrades
of PostgreSQL. It's just *working*; which is unfamiliar to MySQL users. 

I've presented about 28 seminars in last 12 months on PostgreSQL... In
all of them, I always tried to avoid talking about MySQL. But always
hit Oracle. I'm sick of hearing such sentences : We paid  to
Oracle, we hold 1 GB of data!. Even MySQL can hold that amount of data
:-) 

Also, I have something to say about win32 port.

I'm a Linux user. I'm happy that PostgreSQL does not have win32 version.
If someone wants to use a real database server, then they should install
Linux (or *bsd,etc). This is what Oracle offers,too. Native Windows
support will cause some problems; such as some dummy windows users will
begin using it. I do not believe that PostgreSQL needs native windowz
support. 

So, hackers (I'm not a hacker) should decide whether PostgreSQL should
be used widely in real database apps, or it should be used even by dummy
users?

I prefer the first one, if we want to compete with Oracle; not MySQL.

Best regards,

--
Devrim GUNDUZ
TR.NET System Support Specialist
[EMAIL PROTECTED]


---(end of broadcast)---
TIP 5: Have you checked our extensive FAQ?

http://www.postgresql.org/users-lounge/docs/faq.html



Re: [HACKERS] [GENERAL] PostgreSQL Global Development Group

2002-12-14 Thread Igor Georgiev

- Original Message -
From: Devrim GÜNDÜZ [EMAIL PROTECTED]
To: PostgreSQL-development [EMAIL PROTECTED]
Sent: Saturday, December 14, 2002 4:58 PM
Subject: Re: [HACKERS] [GENERAL] PostgreSQL Global Development Group
 Also, I have something to say about win32 port.

 I'm a Linux user. I'm happy that PostgreSQL does not have win32 version.
 If someone wants to use a real database server, then they should install
 Linux (or *bsd,etc). This is what Oracle offers,too. Native Windows
 support will cause some problems; such as some dummy windows users will
 begin using it. I do not believe that PostgreSQL needs native windowz
 support.

Ooops.
I'm a Linux user too, but i have a SCO Openserver, UnixWare, Netware and lot
of windows boxes in my office.
Also I have Informix, Sybase ... etc.
This isn't for my entertainment.
Our customers need to use a real database server.
But what about small business?
A lot of our small customers can't spent money for dedicated linux box :(((

I spent  2 month in trying open source databases (PostgreSQL, SAP DB,
Interbase/Firebird)
finaly i choose PostgreSQL. Now we port one of our products from Sybase SQL
Anywhere to PostgreSQL.

We have more than 100 customers with small networks (2-10). Most of them
cant't aford dedicated linux box.
Another situation DHL Bulgaria and TNT Worldwide Express Bulgaria are our
customers too.
In HQ they choose windows nt (i don't comment how smart is this decision),
pay a lot of money to mr.Gates and now what - we say PostgreSQL is great ,
but ..
( and i have personal contacts with their sysadmins i don't believe they are
dummy windows users)

So if you don't want windows support just don't use it!





---(end of broadcast)---
TIP 6: Have you searched our list archives?

http://archives.postgresql.org



Re: [HACKERS] [GENERAL] PostgreSQL Global Development Group

2002-12-14 Thread Devrim GÜNDÜZ
Hi,

On Sat, 2002-12-14 at 15:31, Igor Georgiev wrote:

snip
 In HQ they choose windows nt (i don't comment how smart is this decision),
 pay a lot of money to mr.Gates and now what - we say PostgreSQL is great ,
 but ..
 ( and i have personal contacts with their sysadmins i don't believe they are
 dummy windows users)

Hey, I did not say that any windowz user is dummy. If you read my
previous post from the beginning; you'll see that my target is MySQL
users on Windows...

What I've been trying to say that is: If we have a chance to choose, I'd
prefer using PostgreSQL in *nix systems. This is what I've been doing
since 2,5 years. 

 So if you don't want windows support just don't use it!

I can't, even if I want it; since I do not have a windows installed
computer. ;-)

Anyway, this will be a windows-linux discussion; which is offtopic for
this list.

Best regards,
--
Devrim GUNDUZ
TR.NET System Support Specialist
[EMAIL PROTECTED]


---(end of broadcast)---
TIP 4: Don't 'kill -9' the postmaster



Re: [HACKERS] Big 7.4 items - Replication

2002-12-14 Thread Bruce Momjian

This sounds like two-phase commit. While it will work, it is probably
slower than Postgres-R's method.

---

Al Sutton wrote:
 For live replication could I propose that we consider the systems A,B, and C
 connected to each other independantly (i.e. A has links to B and C, B has
 links to A and C, and C has links to A and B), and that replication is
 handled by the node receiving the write based transaction.
 
 If we consider a write transaction that arrives at A (called WT(A)), system
 A will then send WT(A) to systems B and C via it's direct connections.
 System A will receive back either an OK response if there are not conflicts,
 a NOT_OK response if there are conflicts, or no response if the system is
 unavailable.
 
 If system A receives a NOT_OK response from any other node it begins the
 process of rolling back the transaction from all nodes which previously
 issued an OK, and the transaction returns a failure code to the client which
 submitted WT(A). The other systems (B and C) would track recent transactions
 and there would be a specified timeout after which the transaction is
 considered safe and could not be rolled out.
 
 Any system not returning an OK or NOT_OK state is assumed to be down, and
 error messages are logged to state that the transaction could not be sent to
 the system due it it's unavailablility, and any monitoring system would
 alter the administrator that a replicant is faulty.
 
 There would also need to be code developed to ensure that a system could be
 brought into sync with the current state of other systems within the group
 in order to allow new databases to be added, and faulty databases to be
 re-entered to the group. This code could also be used for non-realtime
 replication to allow databases to be syncronised with the live master.
 
 This would give a multi-master solution whereby a write transaction to any
 one node would guarentee that all available replicants would also hold the
 data once it is completed, and would also provide the code to handle
 scenarios where non-realtime data replication is required.
 
 This system assumes that a majority of transactions will be sucessful (which
 should be the case for a well designed system).
 
 Comments?
 
 Al.
 
 
 
 
 
 
 - Original Message -
 From: Darren Johnson [EMAIL PROTECTED]
 To: Jan Wieck [EMAIL PROTECTED]
 Cc: Bruce Momjian [EMAIL PROTECTED];
 [EMAIL PROTECTED]; PostgreSQL-development
 [EMAIL PROTECTED]
 Sent: Saturday, December 14, 2002 1:28 AM
 Subject: [mail] Re: [HACKERS] Big 7.4 items
 
 
  
  
  
  Lets say we have systems A, B and C.  Each one has some
  changes and sends a writeset to the group communication
  system (GSC).  The total order dictates WS(A), WS(B), and
  WS(C) and the writes sets are recieved in that order at
  each system.  Now C gets WS(A) no conflict, gets WS(B) no
  conflict, and receives WS(C).  Now C can commit WS(C) even
  before the commit messages C(A) or C(B), because there is no
  conflict.
  
  
  And that is IMHO not synchronous. C does not have to wait for A and B to
  finish the same tasks. If now at this very moment two new transactions
  query system A and system C (assuming A has not yet committed WS(C)
  while C has), they will get different data back (thanks to non-blocking
  reads). I think this is pretty asynchronous.
  
 
  So if we hold WS(C) until we receive commit messages for WS(A) and
  WS(B), will that meet
  your synchronous expectations, or do all the systems need to commit the
  WS in the same order
  and at the same exact time.
 
  
  
  It doesn't lead to inconsistencies, because the transaction on A cannot
  do something that is in conflict with the changes made by WS(C), since
  it's WS(A)2 will come back after WS(C) arrived at A and thus WS(C)
  arriving at A will cause WS(A)2 to rollback (WS used synonymous to Xact
  in this context).
  
  Right
 
  
  Hope this doesn't add too much confusion :-)
  
  No, however I guess I need to adjust my slides to include your
  definition of synchronous
  replication.  ;-)
 
  Darren
 
  
 
 
 
  ---(end of broadcast)---
  TIP 6: Have you searched our list archives?
 
  http://archives.postgresql.org
 
 
 
 
 ---(end of broadcast)---
 TIP 6: Have you searched our list archives?
 
 http://archives.postgresql.org
 

-- 
  Bruce Momjian|  http://candle.pha.pa.us
  [EMAIL PROTECTED]   |  (610) 359-1001
  +  If your life is a hard drive, |  13 Roberts Road
  +  Christ can be your backup.|  Newtown Square, Pennsylvania 19073

---(end of broadcast)---
TIP 2: you can get off all lists at once with the unregister command
(send unregister YourEmailAddressHere to [EMAIL PROTECTED])



Re: [HACKERS] Big 7.4 items - Replication

2002-12-14 Thread Mathieu Arnold


--En cette belle journée de samedi 14 décembre 2002 11:59 -0500,
-- Bruce Momjian écrivait avec ses petits doigts :
 
 This sounds like two-phase commit. While it will work, it is probably
 slower than Postgres-R's method.

What exactly is Postgres-R's method ?

-- 
Mathieu Arnold

---(end of broadcast)---
TIP 2: you can get off all lists at once with the unregister command
(send unregister YourEmailAddressHere to [EMAIL PROTECTED])



Re: [mail] Re: [HACKERS] Big 7.4 items - Replication

2002-12-14 Thread Al Sutton
I see it as very difficult to avoid a two stage process because there will
be the following two parts to any transaction;

1) All databases must agree upon the acceptability of a transaction before
the client can be informed of it's success. 2) All databases must be
informed as to whether or not the transaction was accepted by the entire
replicant set, and thus whether it should be written to the database.

If stage1 is missed then the client application may be informed of a
sucessful transaction which may fail when it is replicated to other
databases.

If stage 2 is missed then databases may become out of sync because they have
accepted transactions that were rejected by other databases.

From reading the PDF on Postgres-R I can see that either one of two things
will occur;

a) There will be a central point of synchronization where conflicts will be
tested and delt with. This is not desirable because it will leave the
synchronization and replication processing load concentrated in one place
which will limit scaleability as well as leaving a single point of failure.

or

b) The Group Communication blob will consist of a number of processes which
need to talk to all of the others to interrogate them for changes which may
conflict with the current write that being handled and then issue the
transaction response. This is basically the two phase commit solution with
phases moved into the group communication process.

I can see the possibility of using solution b and having less group
communication processes than databases as attempt to simplify things, but
this would mean the loss of a number of databases if the machine running the
group communication process for the set of databases is lost.

Al.

- Original Message -
From: Bruce Momjian [EMAIL PROTECTED]
To: Al Sutton [EMAIL PROTECTED]
Cc: Darren Johnson [EMAIL PROTECTED]; Jan Wieck
[EMAIL PROTECTED]; [EMAIL PROTECTED];
PostgreSQL-development [EMAIL PROTECTED]
Sent: Saturday, December 14, 2002 4:59 PM
Subject: [mail] Re: [HACKERS] Big 7.4 items - Replication



 This sounds like two-phase commit. While it will work, it is probably
 slower than Postgres-R's method.

 --
-

 Al Sutton wrote:
  For live replication could I propose that we consider the systems A,B,
and C
  connected to each other independantly (i.e. A has links to B and C, B
has
  links to A and C, and C has links to A and B), and that replication is
  handled by the node receiving the write based transaction.
 
  If we consider a write transaction that arrives at A (called WT(A)),
system
  A will then send WT(A) to systems B and C via it's direct connections.
  System A will receive back either an OK response if there are not
conflicts,
  a NOT_OK response if there are conflicts, or no response if the system
is
  unavailable.
 
  If system A receives a NOT_OK response from any other node it begins the
  process of rolling back the transaction from all nodes which previously
  issued an OK, and the transaction returns a failure code to the client
which
  submitted WT(A). The other systems (B and C) would track recent
transactions
  and there would be a specified timeout after which the transaction is
  considered safe and could not be rolled out.
 
  Any system not returning an OK or NOT_OK state is assumed to be down,
and
  error messages are logged to state that the transaction could not be
sent to
  the system due it it's unavailablility, and any monitoring system would
  alter the administrator that a replicant is faulty.
 
  There would also need to be code developed to ensure that a system could
be
  brought into sync with the current state of other systems within the
group
  in order to allow new databases to be added, and faulty databases to be
  re-entered to the group. This code could also be used for non-realtime
  replication to allow databases to be syncronised with the live master.
 
  This would give a multi-master solution whereby a write transaction to
any
  one node would guarentee that all available replicants would also hold
the
  data once it is completed, and would also provide the code to handle
  scenarios where non-realtime data replication is required.
 
  This system assumes that a majority of transactions will be sucessful
(which
  should be the case for a well designed system).
 
  Comments?
 
  Al.
 
 
 
 
 
 
  - Original Message -
  From: Darren Johnson [EMAIL PROTECTED]
  To: Jan Wieck [EMAIL PROTECTED]
  Cc: Bruce Momjian [EMAIL PROTECTED];
  [EMAIL PROTECTED]; PostgreSQL-development
  [EMAIL PROTECTED]
  Sent: Saturday, December 14, 2002 1:28 AM
  Subject: [mail] Re: [HACKERS] Big 7.4 items
 
 
   
   
   
   Lets say we have systems A, B and C.  Each one has some
   changes and sends a writeset to the group communication
   system (GSC).  The total order dictates WS(A), WS(B), and
   WS(C) and the writes sets are recieved in that order at
   each system.  Now C gets WS(A) 

Re: [mail] Re: [HACKERS] Big 7.4 items - Replication

2002-12-14 Thread Darren Johnson



b) The Group Communication blob will consist of a number of processes which
need to talk to all of the others to interrogate them for changes which may
conflict with the current write that being handled and then issue the
transaction response. This is basically the two phase commit solution with
phases moved into the group communication process.

I can see the possibility of using solution b and having less group
communication processes than databases as attempt to simplify things, but
this would mean the loss of a number of databases if the machine running the
group communication process for the set of databases is lost.


The group communication system doesn't just run on one system.  For 
postgres-r using spread
there is actually a spread daemon that runs on each database server.  It 
has nothing to do with
detecting the conflicts.  Its job is to deliver messages in a total 
order for writesets or simple order
for commits, aborts, joins, etc.  

The detection of conflicts will be done at the database level, by a 
backend processes.  The basic
concept is if all databases get the writesets (changes) in the exact 
same order, apply them in a
consistent order, avoid conflicts, then one copy serialization is 
achieved.  (one copy of the database
replicated across all databases in the replica)

I hope that explains the group communication system's responsibility.

Darren







---(end of broadcast)---
TIP 5: Have you checked our extensive FAQ?

http://www.postgresql.org/users-lounge/docs/faq.html



Re: [HACKERS] PQnotifies() in 7.3 broken?

2002-12-14 Thread Bruce Momjian

OK, I have updated the libpq major number in 7.3.X, and updated major
and minor in HEAD. Do I need to increment the other interfaces that
_use_ libpq, like ecpg?  I think so.

---

Oliver Elphick wrote:
 On Fri, 2002-12-13 at 19:13, Bruce Momjian wrote:
  OK, let me see if I understand the ramifications.
  
  If you install 7.3.1 _on_top_of 7.3, both major versions will exist, and
  you your old binaries will continue to work.  However, if you delete the
  old libraries, then install, anything compiled against 7.3 will not work
  until it is recompiled.
 
 Yes.  You will have libpq.so.3.0 in 7.3.1; and you have libpq.so.2.2
 from 7.3 (and also from 7.2.x, though in fact they are different).  If
 you have installed 7.3.1 on top of 7.3, you will have libpq.so.3
 (symlinked to libpq.so.3.0) from 7.3.1, and libpq.so.2 (symlinked to
 libpq.so.2.2) from an earlier release.
 
  
  Also, any new linking against a 7.3.1 that has both major version
  numbers will use the newer major?  Is that right?
 
 7.3.1 will only have the new major version number; the old one will have
 come from 7.3 or earlier.  The library chosen by the linker is the one
 linked to libpq.so.
 
 
 -- 
 Oliver Elphick [EMAIL PROTECTED]
 LFIX Limited
 
 

-- 
  Bruce Momjian|  http://candle.pha.pa.us
  [EMAIL PROTECTED]   |  (610) 359-1001
  +  If your life is a hard drive, |  13 Roberts Road
  +  Christ can be your backup.|  Newtown Square, Pennsylvania 19073

---(end of broadcast)---
TIP 4: Don't 'kill -9' the postmaster



Re: [HACKERS] Information schema now available

2002-12-14 Thread Hannu Krosing
Peter Eisentraut kirjutas L, 14.12.2002 kell 05:32:
 A basic version of the SQL information schema is now available in newly
 initdb'ed database installations.

Could you also post it somewhere as a plain SQL script for 7.3 ?

IMHO this should become the default way for \d, ODBC, JDBC, and other
similar interfaces for getting at this information and making it
available for 7.3 would give the implementors of those a head start.

   There's still a bunch of work to do to
 create all the views that the spec defines.

I'm sure you will get more help if it is available as add-on for 7.3.

-- 
Hannu Krosing [EMAIL PROTECTED]

---(end of broadcast)---
TIP 5: Have you checked our extensive FAQ?

http://www.postgresql.org/users-lounge/docs/faq.html



Re: [HACKERS] Library Versions (was: PQnotifies() in 7.3 broken?)

2002-12-14 Thread Bruce Momjian

OK, I have added this to tools/RELEASE_CHANGES. New file attached.

---

Lee Kindness wrote:
 Guys, can I take this chance to summarise the thread and when the
 major and minor versions should be updated, perhaps could be added to
 the developers FAQ if everyone is in agreement?
 
 Major Version
 =
 
 The major version number should be updated whenever the source of the
 library changes to make it binary incompatible. Such changes include,
 but limited to:
 
 1. Removing a public function or structure (or typedef, enum, ...)
 
 2. Modifying a public functions arguments.
 
 3. Removing a field from a public structure.
 
 3. Adding a field to a public structure, unless steps have been
 previously taken to shield users from such a change, for example by
 such structures only ever being allocated/instantiated by a library
 function which would give the new field a suitable default value.
 
 Adding a new function would NOT force an increase in the major version
 number. When the major version is increased all applications which
 link to the library MUST be recompiled - this is not desirable. When
 the major version is updated the minor version gets reset.
 
 Minor Version
 =
 
 The minor version number should be updated whenever the functionality
 of the library has changed, typically and change in source code
 between releases would mean an increase in the minor version number so
 long as it does not require a major version increase.
 
 Thanks, Lee.
 
 ---(end of broadcast)---
 TIP 5: Have you checked our extensive FAQ?
 
 http://www.postgresql.org/users-lounge/docs/faq.html
 

-- 
  Bruce Momjian|  http://candle.pha.pa.us
  [EMAIL PROTECTED]   |  (610) 359-1001
  +  If your life is a hard drive, |  13 Roberts Road
  +  Christ can be your backup.|  Newtown Square, Pennsylvania 19073

* Version numbers
configure.in and configure
bump interface version numbers
  o src/interfaces/*/Makefile
  o src/interfaces/libpq/libpq.rc
  o src/include/pg_config.h.win32

* Release notes
update HISTORY and later doc/src/sgml/release.sgml 

* Documentation
document all new features
update help output from inside the programs
doc/src/sgml/ref manual pages

* Ports
update ports list in doc/src/sgml/installation.sgml 
platform-specific FAQ's, if needed

* Miscellaneous files
doc/bug.template

* Update pg_upgrade to handle new version, or disable

* Update copyright year?


---

Major Version
=

The major version number should be updated whenever the source of the
library changes to make it binary incompatible. Such changes include,
but are not limited to:

1. Removing a public function or structure (or typedef, enum, ...)

2. Modifying a public functions arguments.

3. Removing a field from a public structure.

3. Adding a field to a public structure, unless steps have been
previously taken to shield users from such a change, for example by
such structures only ever being allocated/instantiated by a library
function which would give the new field a suitable default value.

Adding a new function would NOT force an increase in the major version
number. When the major version is increased all applications which
link to the library MUST be recompiled - this is not desirable. When
the major version is updated the minor version gets reset.

Minor Version
=

The minor version number should be updated whenever the functionality
of the library has changed, typically and change in source code
between releases would mean an increase in the minor version number so
long as it does not require a major version increase.

Minimizing Changes
==

When modifying public functions arguments, steps should be taken to
maintain binary compatibility across minor PostgreSQL releases (e.g. the
7.2 series, the 7.3 series, the 7.4/8.0 series). Consider the following
function:

void print_stuff(int arg1, int arg2)
{
printf(stuff: %d %d\n, arg1, arg2);
}

If we wanted to add a third argument:

void print_stuff(int arg1, int arg2, int arg3)
{
printf(stuff: %d %d %d\n, arg1, arg2, arg3);
}

Then doing it like this:

void print_stuff2(int arg1, int arg2, int arg3)
{
printf(stuff: %d %d %d\n, arg1, arg2, arg3);
}

void print_stuff(int arg1, int arg2)
{
print_stuff(arg1, arg2, 0);
}

would maintain binary compatibility. Obviously this would add a fair
bit of cruft if used extensively, but considering the changes between
minor versions would probably be worthwhile to avoid bumping library
major version. Naturally in the next major version print_stuff() would
assume the 

Re: [HACKERS] Library Versions (was: PQnotifies() in 7.3 broken?)

2002-12-14 Thread Bruce Momjian

I have added this info too.

---

Lee Kindness wrote:
 Guys,
 
 Some further comments on bumbing the major version number which aren't
 so cut-n-dry...
 
 Lee Kindness writes:
   The major version number should be updated whenever the source of the
   library changes to make it binary incompatible. Such changes include,
   but limited to:
   
   1. Removing a public function or structure (or typedef, enum, ...)
   
   2. Modifying a public functions arguments.
   
   3. Removing a field from a public structure.
   
   3. Adding a field to a public structure, unless steps have been
   previously taken to shield users from such a change, for example by
   such structures only ever being allocated/instantiated by a library
   function which would give the new field a suitable default value.
 
 For #2 steps could be taken to maintain binary compatibility across
 minor PostgreSQL releases (e.g. the 7.2 series, the 7.3 series, the
 7.4/8.0 series). Consider the following function
 
  void print_stuff(int arg1, int arg2)
  {
printf(stuff: %d %d\n, arg1, arg2);
  }
 
 If we wanted to add a third argument:
 
  void print_stuff(int arg1, int arg2, int arg3)
  {
printf(stuff: %d %d %d\n, arg1, arg2, arg3);
  }
 
 Then doing it like this:
 
  void print_stuff2(int arg1, int arg2, int arg3)
  {
printf(stuff: %d %d %d\n, arg1, arg2, arg3);
  }
 
  void print_stuff(int arg1, int arg2)
  {
print_stuff(arg1, arg2, 0);
  }
 
 would maintain binary compatibility. Obviously this would add a fair
 bit of cruft if used extensively, but considering the changes between
 minor versions would probably be worthwhile to avoid bumping library
 major version. Naturally in the next major version print_stuff() would
 assume the functionality and arguments of print_stuff2().
 
 Lee.
 
 ---(end of broadcast)---
 TIP 4: Don't 'kill -9' the postmaster
 

-- 
  Bruce Momjian|  http://candle.pha.pa.us
  [EMAIL PROTECTED]   |  (610) 359-1001
  +  If your life is a hard drive, |  13 Roberts Road
  +  Christ can be your backup.|  Newtown Square, Pennsylvania 19073

---(end of broadcast)---
TIP 3: if posting/reading through Usenet, please send an appropriate
subscribe-nomail command to [EMAIL PROTECTED] so that your
message can get through to the mailing list cleanly



Re: [HACKERS] PQnotifies() in 7.3 broken?

2002-12-14 Thread Bruce Momjian

I figured out why I forgot to update the minor number for 7.3.  The old
RELEASE_CHANGES file had:

bump interface version numbers
  o src/interfaces/libpq/libpq.rc
  o src/include/pg_config.h.win32

I had forgotten to explicitly list the Makefile changes.

The new list is:

bump interface version numbers
  o src/interfaces/*/Makefile
  o src/interfaces/libpq/libpq.rc
  o src/include/pg_config.h.win32

Of course, incrementing the minor number may not have even helped us
because we needed a major increase, which I didn't understand at the
time.

---

Oliver Elphick wrote:
 On Fri, 2002-12-13 at 19:13, Bruce Momjian wrote:
  OK, let me see if I understand the ramifications.
  
  If you install 7.3.1 _on_top_of 7.3, both major versions will exist, and
  you your old binaries will continue to work.  However, if you delete the
  old libraries, then install, anything compiled against 7.3 will not work
  until it is recompiled.
 
 Yes.  You will have libpq.so.3.0 in 7.3.1; and you have libpq.so.2.2
 from 7.3 (and also from 7.2.x, though in fact they are different).  If
 you have installed 7.3.1 on top of 7.3, you will have libpq.so.3
 (symlinked to libpq.so.3.0) from 7.3.1, and libpq.so.2 (symlinked to
 libpq.so.2.2) from an earlier release.
 
  
  Also, any new linking against a 7.3.1 that has both major version
  numbers will use the newer major?  Is that right?
 
 7.3.1 will only have the new major version number; the old one will have
 come from 7.3 or earlier.  The library chosen by the linker is the one
 linked to libpq.so.
 
 
 -- 
 Oliver Elphick [EMAIL PROTECTED]
 LFIX Limited
 
 

-- 
  Bruce Momjian|  http://candle.pha.pa.us
  [EMAIL PROTECTED]   |  (610) 359-1001
  +  If your life is a hard drive, |  13 Roberts Road
  +  Christ can be your backup.|  Newtown Square, Pennsylvania 19073

---(end of broadcast)---
TIP 1: subscribe and unsubscribe commands go to [EMAIL PROTECTED]



Re: [HACKERS] PQnotifies() in 7.3 broken?

2002-12-14 Thread Oliver Elphick
On Sat, 2002-12-14 at 18:59, Bruce Momjian wrote:
 OK, I have updated the libpq major number in 7.3.X, and updated major
 and minor in HEAD. Do I need to increment the other interfaces that
 _use_ libpq, like ecpg?  I think so.

I don't think so.

$ ldd /usr/lib/postgresql/lib/libecpg.so
libpq.so.2 = /usr/lib/libpq.so.2 (0x40019000)
libc.so.6 = /lib/libc.so.6 (0x4002e000)
libssl.so.0.9.6 = /usr/lib/i686/libssl.so.0.9.6 (0x40141000)
libcrypto.so.0.9.6 = /usr/lib/i686/libcrypto.so.0.9.6 (0x4016e000)
libkrb5.so.17 = /usr/lib/libkrb5.so.17 (0x40226000)
libcrypt.so.1 = /lib/libcrypt.so.1 (0x4025c000)
libresolv.so.2 = /lib/libresolv.so.2 (0x40289000)
libnsl.so.1 = /lib/libnsl.so.1 (0x4029a000)
/lib/ld-linux.so.2 = /lib/ld-linux.so.2 (0x8000)
libdl.so.2 = /lib/libdl.so.2 (0x402ad000)
libcom_err.so.1 = /usr/lib/libcom_err.so.1 (0x402b)
libasn1.so.5 = /usr/lib/libasn1.so.5 (0x402b2000)
libroken.so.9 = /usr/lib/libroken.so.9 (0x402d2000)
libdb3.so.3 = /usr/lib/libdb3.so.3 (0x402e3000)


Here libecpg will look for libpq.so.2.  When 7.3.1 is released, this
libecpg will be replaced by one that looks for libpq.so.3.  But I think
that, unless the API of libecpg changes, its version should stay the
same.

If you change it with libpq, you must also change it with all the other
libraries it links in, like libkrb5 and libdb3.  That is clearly
impracticable.

-- 
Oliver Elphick[EMAIL PROTECTED]
Isle of Wight, UK http://www.lfix.co.uk/oliver
GPG: 1024D/3E1D0C1C: CA12 09E0 E8D5 8870 5839  932A 614D 4C34 3E1D 0C1C
 
 But I will hope continually, and will yet praise thee 
  more and more.  Psalms 71:14 


---(end of broadcast)---
TIP 4: Don't 'kill -9' the postmaster



Re: [HACKERS] [GENERAL] PostgreSQL Global Development Group

2002-12-14 Thread Kevin Brown
Devrim G?ND?Z wrote:
 I do NOT like hearing about MySQL in this (these) list(s).
 
 PostgreSQL is not in the same category with MySQL. MySQL is for
 *dummies*, not database admins. I do not even call  it a database. I
 have never forgotten my data loss 2,5 years ago; when I used MySQL for
 just 2 months!!! 

I think you're on to something here, but it's obscured by the way you
said it.

There's no question in my mind that PostgreSQL is superior in almost
every way to MySQL.  For those of us who are technically minded, it
boggles the mind that people would choose MySQL over PostgreSQL.  Yet
they do.  And it's important to understand why.

Simply saying MySQL has better marketing isn't enough.  It's too
simple an answer and obscures some issues that should probably be
addressed.

People use MySQL because it's very easy to set up, relatively easy to
maintain (when something doesn't go wrong, that is), is very well
documented and supported, and is initially adequate for the task they
have in mind (that the task may change significantly such that MySQL
is no longer adequate is something only those with experience will
consider).

PostgreSQL has come a long way and, with the exception of a few minor
things (the need to VACUUM, for instance.  The current version makes
the VACUUM requirement almost a non-issue as regards performance and
availability, but it really should be something that the database
takes care of itself), is equivalent to MySQL in the above things
except for documentation and support.

MySQL's documentation is very, very good.  My experience with it is
that it's possible, and relatively easy, to find information about
almost anything you might need to know.

PostgreSQL's documentation is good, but not quite as good as MySQL's.
It's not quite as complete.  For instance, I didn't find any
documentation at all in the User's Guide or Administrator's Guide on
creating tables (if I missed it, then that might illustrate that the
documentation needs to be organized slightly differently).  I did find
a little in the tutorial (about the amount that you'd want in a
tutorial), but to find out more I had to go to the SQL statement
reference (in my case I was looking for the means by which one could
create a constraint on a column during table creation time).

The reason this is important is that the documentation is *the* way
people are going to learn the database.  If it's too sparse or too
disorganized, people who don't have a lot of time to spend searching
through the documentation for something may well decide that a
different product (such as MySQL) would suit their needs better.

The documentation for PostgreSQL improves all the time, largely in
response to comments such as this one, and that's a very good thing.
My purpose in bringing this up is to show you what PostgreSQL is up
against in terms of widespread adoption.

 If we want to sell PostgreSQL, we should talk about, maybe, Oracle.
 I have never took care of MySQL said. I just know that I'm running
 PostgreSQL since 2,5 years and I only stopped it JUST before upgrades
 of PostgreSQL. It's just *working*; which is unfamiliar to MySQL
 users. 

The experience people have with MySQL varies a lot, and much of it has
to do with the load people put on it.  If MySQL were consistently bad
and unreliable it would have a much smaller following (since it's not
in a monopoly position the way Microsoft is).

But you're mistaken if you believe that MySQL isn't competition for
PostgreSQL.  It is, because it serves the same purpose: a means of
storing information in an easily retrievable way.

Selling potential MySQL users on PostgreSQL should be easier than
doing the same for Oracle users because potential MySQL users have at
least already decided that a free database is worthy of consideration.
As their needs grow beyond what MySQL offers, they'll look for a more
capable database engine.  It's a target market that we'd be idiots to
ignore, and we do so at our peril (the more people out there using
MySQL, the fewer there are using PostgreSQL).

 I'm a Linux user. I'm happy that PostgreSQL does not have win32 version.
 If someone wants to use a real database server, then they should install
 Linux (or *bsd,etc). This is what Oracle offers,too. Native Windows
 support will cause some problems; such as some dummy windows users will
 begin using it. I do not believe that PostgreSQL needs native windowz
 support. 

I hate to break it to you (assuming that I didn't misunderstand what
you said), but Oracle offers a native Windows port of their database
engine, and has done so for some time.  It's *stupid* to ignore the
native Windows market.  There are a lot of people who need a database
engine to store their data and who would benefit from a native Windows
implementation of PostgreSQL, but aren't interested in the additional
burden of setting up a Linux server because they lack the money, time,
or expertise.

 So, hackers (I'm not a hacker) should decide whether