Re: [HACKERS] GSSAPI and V2 protocol

2008-02-06 Thread Kris Jurka



On Tue, 5 Feb 2008, Tom Lane wrote:


The problem seems to be that AuthenticationGSSContinue messages carry
a variable-length payload, and the V2 protocol doesn't really cope with
that because it doesn't have a message length word.

1. If the GSSContinue payload is self-identifying about its length,
qwe could teach fe-connect.c how to determine that.


The GSS data is supposed to be opaque to the caller, so this doesn't 
seem likely or a good idea.



2. We could retroactively redefine the contents of
AuthenticationGSSContinue as carrying a length word after the
authentication type code, but only in V2 protocol (so as not to break
existing working cases).  This is pretty ugly but certainly possible.


I see no harm in doing this.  What's there now can't work and the change 
is self contained.  Is there any problem with the password message taking 
a String datatype instead of Byte[n] with a null byte?


Kris Jurka

---(end of broadcast)---
TIP 1: 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] Re: [COMMITTERS] pgsql: configure tag'd 8.3.0 and built witih autoconf 2.59

2008-02-06 Thread Peter Eisentraut
Marc G. Fournier wrote:
 Actually, branch in one to two weeks has been the status quo almost since
 day one ... not that I'm against branch on release, I'm only saying that
 we've followed this same procedure on branching since ... forever.

That is incorrect.  See earlier in this thread.

-- 
Peter Eisentraut
http://developer.postgresql.org/~petere/

---(end of broadcast)---
TIP 5: don't forget to increase your free space map settings


[HACKERS] PostgreSQL 8.4 development plan

2008-02-06 Thread Dave Page
Hackers,

As you know we've finally released PostgreSQL 8.3, after a development
cycle that lasted well over a year despite our original plans for a 6
month cycle. The core team are aware that there are a number of
factors that contributed to this slippage:

- Lack of prompt and early review of patches.
- A significant rise in the number and complexity of patches submitted.
- Prioritising completion of incomplete patches over meeting the timetable.

In the 8.4 development cycle we would like to try a new style of
development, designed to keep the patch queue to a limited size and to
provide timely feedback to developers on the work they submit. To do
this we will replace the traditional 'feature freeze' with a series of
'commit fests' throughout the development cycle. The idea of commit
fests was discussed last October in -hackers, and it seemed to meet
with general approval. Whenever a commit fest is in progress, the
focus will shift from development to review, feedback and commit of
patches. Each fest will continue until all patches in the queue have
either been committed to the CVS repository, returned to the author
for additional work, or rejected outright, and until that has
happened, no new patches will be considered. Of course, individual
developers are free to continue working on their
patches throughout the fest, but we encourage everyone to do what they
can to help work through the patch queue. We feel that this idea can
only be successful if the whole development community is willing to
focus on patch review during the commit fests, in the same way that
everyone is expected to focus on testing during beta period.

The proposed timetable for the cycle is as follows:

1st March 2008 - commit fest begins
1st May 2008 - commit fest begins
1st July 2008 - commit fest begins
1st September 2008 - commit fest begins
1st November 2008 - final commit fest begins
1st January 2009 - beta 1
1st March 2009 - 8.4.0 release

Note the lack of any 'feature freeze' date as such. However, any
significant feature patches not submitted by 1st November will clearly
not make it into 8.4.

The hope here is that we will not have enormous, previously unreviewed
patches landing on us at the end of October --- if that happens, we'll
be back in the same position we were in at 8.3 feature freeze.
Although this schedule allows for the final commit fest to take a good
deal of time, we'll reserve the right to reject patches that are too
large to be reviewed in a timely fashion. We want to encourage people
to do development of large features in an incremental fashion, with a
new increment landing during each commit fest.

Regards, Dave (on behalf of the core team)

-- 
Dave Page
PostgreSQL Core Team

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

   http://archives.postgresql.org


Re: [HACKERS] GSSAPI and V2 protocol

2008-02-06 Thread Magnus Hagander
On Wed, Feb 06, 2008 at 02:57:39AM -0500, Kris Jurka wrote:
 
 
 On Tue, 5 Feb 2008, Tom Lane wrote:
 
 The problem seems to be that AuthenticationGSSContinue messages carry
 a variable-length payload, and the V2 protocol doesn't really cope with
 that because it doesn't have a message length word.
 
 1. If the GSSContinue payload is self-identifying about its length,
 qwe could teach fe-connect.c how to determine that.
 
 The GSS data is supposed to be opaque to the caller, so this doesn't 
 seem likely or a good idea.

Yeah, agreed, that seems like a very fragile idea. 


 2. We could retroactively redefine the contents of
 AuthenticationGSSContinue as carrying a length word after the
 authentication type code, but only in V2 protocol (so as not to break
 existing working cases).  This is pretty ugly but certainly possible.
 
 I see no harm in doing this.  What's there now can't work and the change 
 is self contained.  Is there any problem with the password message taking 
 a String datatype instead of Byte[n] with a null byte?

I agree that this is probabliy the best way, if we can do it. But you do
raise a good point - the message that goes the other way can certainly contain
embedded NULLs. 

//Magnus

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


Re: [HACKERS] PostgreSQL 8.4 development plan

2008-02-06 Thread Simon Riggs
On Wed, 2008-02-06 at 08:56 +, Dave Page wrote:

 Hackers,

+1  Very much in favour.

-- 
  Simon Riggs
  2ndQuadrant  http://www.2ndQuadrant.com 


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

   http://archives.postgresql.org


Re: [HACKERS] [BUGS] BUG #3909: src\tools\msvc\clean.bat clears parse.h file

2008-02-06 Thread Magnus Hagander
On Tue, Feb 05, 2008 at 09:47:16PM +, Dave Page wrote:
 On Feb 5, 2008 5:56 PM, Magnus Hagander [EMAIL PROTECTED] wrote:
 
  Dave Page wrote:
   On Feb 5, 2008 3:24 PM, Magnus Hagander [EMAIL PROTECTED] wrote:
   On Mon, Jan 28, 2008 at 06:27:05PM +, Pavel Golub wrote:
   I think a better solution is to add a parameter to clean.bat to make it
   work like make clean does. So you'd to clean when you mean make
   clean, and clean dist when you mean make distclean.
  
   Thoughts on this?
  
   Pretty sure I griped at you before about this, because when it removes
   it, it fails to rebuild it the next time round, even on in an env like
   mine which can build from CVS perfectly well. More than once I've had
   to unpack the tarball again having run a clean.
 
  Uh, that would be a different issue, and I thought that one was fixed. I
  certainly clean/rebuild a lot, and it works just fine with the stuff
  coming out of cvs.
 
  The problem comes from if you remove *one* of the files but not *all* of
  them. We only trigger on one of them (unlike the makefile which triggers
  on all). But as long as they are all removed, it should be ok.
 
  Can you confirm if you actually still have that problem with 8.3.0?
 
 Yup - run clean.bat, and then build.bat and the resulting build fails
 because parser/parse.h is missing. Thats with the 8.3.0 tarball, which
 built just fine prior to running clean. Bison and flex are in the
 path.

I've managed to reproduce this now, and it's way more broken than I
thought. In fact, clean.bat simply does not work. It seems the batch
processor falls over *badly* when dealing with so many call statements. I
put in some echo 1, echo 2 etc to see in which order i runs the bat
file. I put them in from top to bottom, but the execution order came out as
0,5,6,7,8,1,5,6,7,8,7,8,2,3,4,5,6,7,8. Which obviously is less than
perfect.

I've redone a clean.bat now that inlines the deletes, and it seems to be
working better. I'll also add the clean dist stuff so it's possible to
clean/rebuild without bison/flex, and then commit this.

//Magnus

---(end of broadcast)---
TIP 6: explain analyze is your friend


Re: [HACKERS] PostgreSQL 8.4 development plan

2008-02-06 Thread Magnus Hagander
On Wed, Feb 06, 2008 at 08:56:51AM +, Dave Page wrote:
 Hackers,

Looks great and well-thought through. Let's hope it works out!

I assume you'll be committing this info to the developer section on the
website?

//Magnus

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


[HACKERS] HeapTupleSatisfies micro tuning

2008-02-06 Thread Simon Riggs

I note that in HeapTupleSatisfies... we call
TransactionIdIsCurrentTransactionId() explicitly and then call it again
in TransactionIdIsInProgress(). Which means we also end up checking
twice whether each xid is normal also. 

It would seem easier to make a check TransactionIdIsRecent() early and
if true then check TransactionIdIsCurrentTransactionId() and then check
RecentTransactionIdIsInProgress(). That would avoid the multiple checks,
as well as save a few cycles since the IsCurrent check can be expensive
if we have many subtransactions.

-- 
  Simon Riggs
  2ndQuadrant  http://www.2ndQuadrant.com 


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

   http://archives.postgresql.org


Re: [HACKERS] Why are we waiting?

2008-02-06 Thread Staale Smedseng
On Mon, 2008-02-04 at 19:46, Simon Riggs wrote:
 We've got various facilities now for looking at LWLock waits, but I'd
 like to have more information about the *reasons* for lock waits.
 
 I know its possible to get backtraces in Dtrace at various tracepoints
 but that can be fairly hard to interpret.

Simon,

A couple of guys here at Sun have started looking at trying to improve
the scaling on Sun's T2000 Niagara servers (single core, 32 HW-threads).

We mostly use various DTrace scripts to monitor locking usage. We'd be
happy to share results, probes and DTrace scripts for monitoring if you
like.

So far we've found lock contention (especially for the ProcArrayLock) to
be the likely source for our inability to saturate the CPU with a TPC-C
like OLTP load with 1000 users.

The following shows average time spent in and waiting for exclusive
ProcArrayLock vs the time used in the transaction through commit, (i.e.,
up until the exclusive ProcArrayLock acquire to update the PGPROC
setting transaction no longer running):

  # ./pg-lwlock-procarray.d $(pgrep -n postgres)

  postgres`LWLockAcquire
  postgres`ProcArrayEndTransaction+0x10
  postgres`CommitTransaction+0xf0
  postgres`CommitTransactionCommand+0x90
  postgres`finish_xact_command+0x60
  postgres`exec_execute_message+0x3b4
  postgres`PostgresMain+0x13a0
  postgres`BackendRun+0x27c
  postgres`BackendStartup+0xe0
  postgres`ServerLoop+0x1a0
  postgres`PostmasterMain+0xcbc
  postgres`main+0x1d8
  postgres`_start+0x108
   23
  avg lwlock acquire service time [ns] 193051989
  transaction-commit [count]  23
  transaction-start [count]   23
  avg transaction time [ns] 12763079

The stack trace shows that the only time the lock is acquired
exclusively is from the call to ProcArrayEndTransaction() in
CommitTransaction().

Also, an interesting observation is that the hot locks seem to have
changed from v8.2 to v8.3, making the ProcArrayLock more contended. See
the following outputs:

PostgreSQL 8.2 (32-bit):

  -bash-3.00# ./825_lwlock_wait.d

 Lock IdMode   Count
FirstLockMgrLock  Shared   2
   ProcArrayLock  Shared 209
  XidGenLock   Exclusive1030
  XidGenLock  Shared1215
   WALInsertLock   Exclusive3942
 CLogControlLock  Shared4113
   ProcArrayLock   Exclusive6929
WALWriteLock   Exclusive   17155
 CLogControlLock   Exclusive  128182

 Lock Id   Combined Time (ns)
FirstLockMgrLock24705
   WALInsertLock 79644210
  XidGenLock179886846
   ProcArrayLock   1486950738
WALWriteLock  18425400504
 CLogControlLock1507388036453



PostgreSQL 8.3 (64-bit):

  -bash-3.00# ./83_lwlock_wait.d

 Lock IdMode   Count
  SInvalLock   Exclusive   1
WALWriteLock   Exclusive   1
  SInvalLock  Shared  20
 CLogControlLock  Shared 534
 CLogControlLock   Exclusive 845
  XidGenLock   Exclusive1140
   ProcArrayLock  Shared1821
   WALInsertLock   Exclusive   17043
   ProcArrayLock   Exclusive   49762

 Lock IdMode   Combined Time (ns)
  SInvalLock   Exclusive17216
  SInvalLock  Shared   531129
WALWriteLock   Exclusive  2003064
 CLogControlLock  Shared 61325819
 CLogControlLock   Exclusive 73509195
  XidGenLock   Exclusive929477929
   WALInsertLock   Exclusive  17941476941
   ProcArrayLock  Shared  31114676303
   ProcArrayLock   Exclusive 888356047549



Regards,
Staale Smedseng
Database Technology Group, Sun Microsystems



---(end of broadcast)---
TIP 6: explain analyze is your friend


Re: [HACKERS] PostgreSQL 8.4 development plan

2008-02-06 Thread Dave Page
On Feb 6, 2008 1:49 PM, Magnus Hagander [EMAIL PROTECTED] wrote:
 On Wed, Feb 06, 2008 at 08:56:51AM +, Dave Page wrote:
  Hackers,

 Looks great and well-thought through. Let's hope it works out!

 I assume you'll be committing this info to the developer section on the
 website?

It's on the developer wiki.

/D

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

   http://archives.postgresql.org


Re: [HACKERS] PostgreSQL 8.4 development plan

2008-02-06 Thread Magnus Hagander
On Wed, Feb 06, 2008 at 02:42:35PM +, Dave Page wrote:
 On Feb 6, 2008 1:49 PM, Magnus Hagander [EMAIL PROTECTED] wrote:
  On Wed, Feb 06, 2008 at 08:56:51AM +, Dave Page wrote:
   Hackers,
 
  Looks great and well-thought through. Let's hope it works out!
 
  I assume you'll be committing this info to the developer section on the
  website?
 
 It's on the developer wiki.

Good start. /me thinks it should be on the website. We've usually announced
our feature freeze dates there... (in less details, sure, but something
there)

//Magnus

---(end of broadcast)---
TIP 6: explain analyze is your friend


Re: [HACKERS] Why are we waiting?

2008-02-06 Thread Simon Riggs
On Wed, 2008-02-06 at 15:30 +0100, Staale Smedseng wrote:
 On Mon, 2008-02-04 at 19:46, Simon Riggs wrote:
  We've got various facilities now for looking at LWLock waits, but I'd
  like to have more information about the *reasons* for lock waits.
  
  I know its possible to get backtraces in Dtrace at various tracepoints
  but that can be fairly hard to interpret.

Thanks for this Staale.

  Lock IdMode   Count
ProcArrayLock  Shared1821
ProcArrayLock   Exclusive   49762
 
  Lock IdMode   Combined Time (ns)
ProcArrayLock  Shared  31114676303
ProcArrayLock   Exclusive 888356047549

Which looks like a mean service time of 17ms for X lock waiters.

What is the frequency distribution of lock wait time on ProcArrayLock?
Does the distribution vary over time?

-- 
  Simon Riggs
  2ndQuadrant  http://www.2ndQuadrant.com 


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

   http://archives.postgresql.org


Re: [HACKERS] PostgreSQL 8.4 development plan

2008-02-06 Thread Dave Page
On Feb 6, 2008 2:44 PM, Magnus Hagander [EMAIL PROTECTED] wrote:

 Good start. /me thinks it should be on the website. We've usually announced
 our feature freeze dates there... (in less details, sure, but something
 there)

Feel free - you've been hacking that recently!

/D

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

   http://archives.postgresql.org


Re: [HACKERS] Why are we waiting?

2008-02-06 Thread Gregory Stark
Staale Smedseng [EMAIL PROTECTED] writes:

 The stack trace shows that the only time the lock is acquired
 exclusively is from the call to ProcArrayEndTransaction() in
 CommitTransaction().

I'm not sure but I think that's only true in 8.3. As I understood it in 8.2
transaction start also needed the exclusive lock.

 Also, an interesting observation is that the hot locks seem to have
 changed from v8.2 to v8.3, making the ProcArrayLock more contended. See
 the following outputs:

 PostgreSQL 8.2 (32-bit):
...
 PostgreSQL 8.3 (64-bit):
...

I'm not sure 32-bit and 64-bit cases are going to be directly comparable. We
could have a problem with cache line aliasing on only one or the other for
example.

But that is a pretty striking difference. Does the 8.3 run complete more
transactions in that time?

-- 
  Gregory Stark
  EnterpriseDB  http://www.enterprisedb.com
  Ask me about EnterpriseDB's 24x7 Postgres support!

---(end of broadcast)---
TIP 5: don't forget to increase your free space map settings


[HACKERS] pg_dump additional options for performance

2008-02-06 Thread Simon Riggs
pg_dump allows you to specify -s --schema-only, or -a --data-only.

The -s option creates the table, as well as creating constraints and
indexes. These objects need to be dropped prior to loading, if we are to
follow the performance recommendations in the docs. But the only way to
do that is to manually edit the script to produce a cut down script.

So it would be good if we could dump objects in 3 groups
1. all commands required to re-create table
2. data
3. all commands required to complete table after data load

My proposal is to provide two additional modes:
--schema-pre-load corresponding to (1) above
--schema-post-load corresponding to (3) above

This would then allow this sequence of commands 

pg_dump --schema-pre-load
pg_dump --data-only
pg_dump --schema-post-load

to be logically equivalent, but faster than

pg_dump --schema-only
pg_dump --data-only

both forms of which are equivalent to just

pg_dump


[Assuming data isn't changing between invocations...]

-- 
  Simon Riggs
  2ndQuadrant  http://www.2ndQuadrant.com 


---(end of broadcast)---
TIP 5: don't forget to increase your free space map settings


Re: [HACKERS] [BUGS] BUG #3909: src\tools\msvc\clean.bat clears parse.h file

2008-02-06 Thread Magnus Hagander
On Tue, Feb 05, 2008 at 09:47:16PM +, Dave Page wrote:
 On Feb 5, 2008 5:56 PM, Magnus Hagander [EMAIL PROTECTED] wrote:
 
  Dave Page wrote:
   On Feb 5, 2008 3:24 PM, Magnus Hagander [EMAIL PROTECTED] wrote:
   On Mon, Jan 28, 2008 at 06:27:05PM +, Pavel Golub wrote:
   I think a better solution is to add a parameter to clean.bat to make it
   work like make clean does. So you'd to clean when you mean make
   clean, and clean dist when you mean make distclean.
  
   Thoughts on this?
  
   Pretty sure I griped at you before about this, because when it removes
   it, it fails to rebuild it the next time round, even on in an env like
   mine which can build from CVS perfectly well. More than once I've had
   to unpack the tarball again having run a clean.
 
  Uh, that would be a different issue, and I thought that one was fixed. I
  certainly clean/rebuild a lot, and it works just fine with the stuff
  coming out of cvs.
 
  The problem comes from if you remove *one* of the files but not *all* of
  them. We only trigger on one of them (unlike the makefile which triggers
  on all). But as long as they are all removed, it should be ok.
 
  Can you confirm if you actually still have that problem with 8.3.0?
 
 Yup - run clean.bat, and then build.bat and the resulting build fails
 because parser/parse.h is missing. Thats with the 8.3.0 tarball, which
 built just fine prior to running clean. Bison and flex are in the
 path.

Fixed version applied to HEAD.

//Magnus

---(end of broadcast)---
TIP 5: don't forget to increase your free space map settings


[HACKERS] Segment Visibility Map for VACUUM

2008-02-06 Thread Simon Riggs
Earlier, I proposed a Segment Visibility Map as part of my design of new
partitioning feature proposals. This idea has been spun-off into a
completely **separate** proposal because SVM has merit enough to be
worthy of implementation on its own:

http://developer.postgresql.org/index.php/Segment_Visibility_Map
(full text of this is copied below also)

This then allows it to be compared directly with other proposals
- Dead Space Map (Itagaki)
- Visibility Maps (Heikki)
and everybody else down the years with a variant on this idea

ISTM that SVM would offer many of the advantages of the other
approaches, with a less invasive, lower contention design. The
implementation is fairly straightforward also.

I'd like to get this sorted out as one of the first things in 8.4
development, so that all of the other *potential* uses of the visibility
information can also be considered and possibly implemented in the same
release. 



SEGMENT VISIBILITY MAP

= Use Case =

Larger tables frequently need VACUUMing, but only over a small range of
blocks. It is common for much a table to be read-only, so if we can
identify which parts are read-only then we can improve performance of
VACUUM, as we as other utilities.

= Segment Visibility Map =

We would keep a dynamic visibility map at *segment* level, showing which
segments have all rows as 100% visible. 
This is known as the Segment Visibility Map (SVM).

We have at least two bits for each segment in the table, rather than
each block. 
The two bits allow us to represent four states:
* read_write
* read_only
* read_only_pending (explained later)
* read_only_frozen

Some additional states that have been discussed are

* explicitly marked read only
* clustered
* compressed
* off-line (indicates high cost to access)

We should allow for 1 byte (8 bits) per segment.

That's possibly small enough to store directly on pg_class, even for
fairly large tables. However we want to avoid bloat when the SVM
changes, plus we may need to handle some very big tables. So we would
store SVM as a single column, in a table pg_svm with storage attribute
MAIN, so it is inline, compressible.

A segment is a range of blocks, size of which can be altered as
required. Initial suggestion is that a segment would be 1GB in size,
same as a physical data segment. We might allow this to be user
settable, or we might automatically adjust it to minimise the overhead
and maximise the usefulness.

It would be possible to change the SVM segment size dynamically,
recalculating the bit positions accordingly. If that was desirable to
optimise the overhead and benefit from this approach.



= Access to the SVM =

Since the map is very small and hardly ever changes for a table we can
cache it easily on each backend. 

If the map does change we can perform a relcache invalidation to make
everybody re-read the map. (Few improvements needed there also, but not
relevant here).

No dynamic shared memory cache is required because any concurrent
changes to the table would be ignored by a scan anyway, so it doesn't
matter if an INSERT, UPDATE or DELETE occurs while we are scanning. Any
new scans that start will attempt to lock the table and then perform a
rel cache check before continuing. So the visibility will be set
correctly for *that* scan at least.

In most cases the visibility map can be summarised as a single boolean
to show whether *any* 100% visible segments exist. That makes accessing
the map very cheap in the common, unset case. This would be an
additional boolean entry on the Relation struct.

The check to see if the rel cache has changed is essentially free, since
we do it already when we grab a lock. Since INSERT, UPDATE and DELETE
only spoil the cache, they don't need to have a completely up-to-date
picture. (That aspect may change).

If we want backends running non-utility commands to see the SVM then
we would need to check the rel cache each time we access the table,
not just each time we lock a table. We need not do that in all cases,
only those that would benefit from knowing SVM information.



= UnSetting the Segment Visibility Map =

The SVM will be unset, i.e. set to read_write if an INSERT, UPDATE or 
DELETE occurs within a segment marked read_only or read_only_pending.
This catalog change can be handled with a non-transactional overwrite 
- the bit always exists already, so the overwritten data is always same
size. That's pessimistic, since it resets the state even if the
UPDATE/DELETE aborts, but its better than holding the row locked until
the transaction completes, which might prevent other things from
happening. Or maybe we could do that at transaction commit.

DML commands would first check the boolean rel.has_read_only_segments to
see if any non read_write segments exist. If so, then we would calculate
the segment being written to by the DML operation then set the state
accordingly.

The relcache invalidation caused by making a segment read_only_pending
can flush the rd_targBlock for the 

Re: [HACKERS] pg_dump additional options for performance

2008-02-06 Thread Andrew Dunstan



Simon Riggs wrote:

My proposal is to provide two additional modes:
--schema-pre-load corresponding to (1) above
--schema-post-load corresponding to (3) above

This would then allow this sequence of commands 


pg_dump --schema-pre-load
pg_dump --data-only
pg_dump --schema-post-load

to be logically equivalent, but faster than

pg_dump --schema-only
pg_dump --data-only
  


It would actually be better, as well as faster, because it will be 
guaranteed to work :-) There are known cases where schema-only followed 
by data-only fails.



One more note: we need to make sure the corresponding new modes are also 
added to pg_restore.


cheers

andrew

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

  http://archives.postgresql.org


Re: [HACKERS] pg_dump additional options for performance

2008-02-06 Thread Simon Riggs
On Wed, 2008-02-06 at 16:41 +0100, Magnus Hagander wrote:

 Where would you load primary keys and such contrants? Pre- or post dump? I
 think the case could be made for either one...

Post dump. If the constraint was successfully in place when we performed
the dump then it should work successfully after the load.

I like your syntax/idea as well. I think that would be worth doing in
addition for when you want fine grained control. (I'd add the ability to
dump any named object, allowing you to dump individual indexes,
functions, etc..)

I don't think the two syntaxes compete. I want to be able to say
everything before, data and everything after without having to
remember to specify --what=tables,views,sequences,kitchensink etc.
Especially since you probably won't notice you've missed out an object
type (e.g. sequences) until you try to run an application. Too late!

-- 
  Simon Riggs
  2ndQuadrant  http://www.2ndQuadrant.com 


---(end of broadcast)---
TIP 1: 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] pg_dump additional options for performance

2008-02-06 Thread Zeugswetter Andreas ADI SD
Simon wrote:
 My proposal is to provide two additional modes:
 --schema-pre-load corresponding to (1) above
 --schema-post-load corresponding to (3) above

Sounds nice. 
For a large schema we might rather want one switch that dumps 2 files,
no ?
Probably also better from a mvcc perspective.

Andreas

---(end of broadcast)---
TIP 7: You can help support the PostgreSQL project by donating at

http://www.postgresql.org/about/donate


Re: [HACKERS] PostgreSQL 8.4 development plan

2008-02-06 Thread Peter Eisentraut
Am Mittwoch, 6. Februar 2008 schrieb Andrew Dunstan:
 I would like to see this tied down some more. The time for the commit
 fests is too open ended. I think we should say something like All
 commit fests will run no more than two weeks, except for the final
 commit fest which can run for one month.

Something along those lines was discussed, but we feel that because we have no 
experience with how commit fests will run, it is unwise to specify that much 
detail already.  It is quite possible that as we gain experience with the 
process the timeline will be clarified.

-- 
Peter Eisentraut
http://developer.postgresql.org/~petere/

---(end of broadcast)---
TIP 9: In versions below 8.0, the planner will ignore your desire to
   choose an index scan if your joining column's datatypes do not
   match


Re: [HACKERS] PostgreSQL 8.4 development plan

2008-02-06 Thread Brendan Jurd
This all sounds very promising.

On Feb 6, 2008 7:56 PM, Dave Page [EMAIL PROTECTED] wrote:
 Each fest will continue until all patches in the queue have
 either been committed to the CVS repository, returned to the author
 for additional work, or rejected outright, and until that has
 happened, no new patches will be considered.

So does this mean we will have a new patches awaiting the next review
cycle queue alongside the patches awaiting review queue?

Just thinking that we'll need somewhere to park the new patches which
roll in during a commit fest.

Or, you know, start using an actual development tracker =)

Cheers
BJ

---(end of broadcast)---
TIP 7: You can help support the PostgreSQL project by donating at

http://www.postgresql.org/about/donate


Re: [HACKERS] PostgreSQL 8.4 development plan

2008-02-06 Thread Andrew Dunstan



Dave Page wrote:

On Feb 6, 2008 3:57 PM, Andrew Dunstan [EMAIL PROTECTED] wrote:
  

I would like to see this tied down some more. The time for the commit
fests is too open ended. I think we should say something like All
commit fests will run no more than two weeks, except for the final
commit fest which can run for one month.



I think thats one of the problems - without knowing what patches are
going to come in, or how many there will be, we have no way of knowing
how long each fest will take. What this does mean though is that we
continuously feedback to developers and keep the patch queue down -
kinda like checkpoint smoothing I guess.

  


I would rather set a target and modify it if necessary based on 
experience than have none at all.


The danger of not doing so is that we'll be in almost constant 'commit 
fest' mode.


cheers

andrew

---(end of broadcast)---
TIP 5: don't forget to increase your free space map settings


Re: [HACKERS] pg_dump additional options for performance

2008-02-06 Thread Richard Huxton

Simon Riggs wrote:

On Wed, 2008-02-06 at 16:41 +0100, Magnus Hagander wrote:

I don't think the two syntaxes compete. I want to be able to say
everything before, data and everything after without having to
remember to specify --what=tables,views,sequences,kitchensink etc.
Especially since you probably won't notice you've missed out an object
type (e.g. sequences) until you try to run an application. Too late!


Is this not a job for the -l / -L mode of pg_restore, but ported to pg_dump?

With a bit of tweaking ti the format you could do something like:

pg_dump -l mydb | grep BEFORE  obj_list.txt
pg_dump -L obj_list.txt mydb  mydb.before.schema

--
  Richard Huxton
  Archonet Ltd

---(end of broadcast)---
TIP 9: In versions below 8.0, the planner will ignore your desire to
  choose an index scan if your joining column's datatypes do not
  match


Re: [HACKERS] PostgreSQL 8.4 development plan

2008-02-06 Thread Andrew Dunstan



Dave Page wrote:

Hackers,

As you know we've finally released PostgreSQL 8.3, after a development
cycle that lasted well over a year despite our original plans for a 6
month cycle. The core team are aware that there are a number of
factors that contributed to this slippage:

- Lack of prompt and early review of patches.
- A significant rise in the number and complexity of patches submitted.
- Prioritising completion of incomplete patches over meeting the timetable.

In the 8.4 development cycle we would like to try a new style of
development, designed to keep the patch queue to a limited size and to
provide timely feedback to developers on the work they submit. To do
this we will replace the traditional 'feature freeze' with a series of
'commit fests' throughout the development cycle. The idea of commit
fests was discussed last October in -hackers, and it seemed to meet
with general approval. Whenever a commit fest is in progress, the
focus will shift from development to review, feedback and commit of
patches. Each fest will continue until all patches in the queue have
either been committed to the CVS repository, returned to the author
for additional work, or rejected outright, and until that has
happened, no new patches will be considered. Of course, individual
developers are free to continue working on their
patches throughout the fest, but we encourage everyone to do what they
can to help work through the patch queue. We feel that this idea can
only be successful if the whole development community is willing to
focus on patch review during the commit fests, in the same way that
everyone is expected to focus on testing during beta period.

The proposed timetable for the cycle is as follows:

1st March 2008 - commit fest begins
1st May 2008 - commit fest begins
1st July 2008 - commit fest begins
1st September 2008 - commit fest begins
1st November 2008 - final commit fest begins
1st January 2009 - beta 1
1st March 2009 - 8.4.0 release

Note the lack of any 'feature freeze' date as such. However, any
significant feature patches not submitted by 1st November will clearly
not make it into 8.4.

The hope here is that we will not have enormous, previously unreviewed
patches landing on us at the end of October --- if that happens, we'll
be back in the same position we were in at 8.3 feature freeze.
Although this schedule allows for the final commit fest to take a good
deal of time, we'll reserve the right to reject patches that are too
large to be reviewed in a timely fashion. We want to encourage people
to do development of large features in an incremental fashion, with a
new increment landing during each commit fest.

Regards, Dave (on behalf of the core team)

  


I would like to see this tied down some more. The time for the commit 
fests is too open ended. I think we should say something like All 
commit fests will run no more than two weeks, except for the final 
commit fest which can run for one month.


If we can't make that work then the whole idea is probably in trouble 
anyway.


Another possibility which might help allocating reviewers to projects 
(especially large projects) earlier in the process.


cheers

andrew

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

  http://archives.postgresql.org


Re: [HACKERS] PostgreSQL 8.4 development plan

2008-02-06 Thread Dave Page
On Feb 6, 2008 3:57 PM, Andrew Dunstan [EMAIL PROTECTED] wrote:

 I would like to see this tied down some more. The time for the commit
 fests is too open ended. I think we should say something like All
 commit fests will run no more than two weeks, except for the final
 commit fest which can run for one month.

I think thats one of the problems - without knowing what patches are
going to come in, or how many there will be, we have no way of knowing
how long each fest will take. What this does mean though is that we
continuously feedback to developers and keep the patch queue down -
kinda like checkpoint smoothing I guess.

/D

---(end of broadcast)---
TIP 7: You can help support the PostgreSQL project by donating at

http://www.postgresql.org/about/donate


Re: [HACKERS] pg_dump additional options for performance

2008-02-06 Thread Magnus Hagander
On Wed, Feb 06, 2008 at 03:13:24PM +, Simon Riggs wrote:
 pg_dump allows you to specify -s --schema-only, or -a --data-only.
 
 The -s option creates the table, as well as creating constraints and
 indexes. These objects need to be dropped prior to loading, if we are to
 follow the performance recommendations in the docs. But the only way to
 do that is to manually edit the script to produce a cut down script.
 
 So it would be good if we could dump objects in 3 groups
 1. all commands required to re-create table
 2. data
 3. all commands required to complete table after data load
 
 My proposal is to provide two additional modes:
 --schema-pre-load corresponding to (1) above
 --schema-post-load corresponding to (3) above
 
 This would then allow this sequence of commands 
 
 pg_dump --schema-pre-load
 pg_dump --data-only
 pg_dump --schema-post-load
 
 to be logically equivalent, but faster than
 
 pg_dump --schema-only
 pg_dump --data-only
 
 both forms of which are equivalent to just
 
 pg_dump
 
 
 [Assuming data isn't changing between invocations...]

I've been considering just this. Another otpion I came up with was a more
generic switch where you'd have:
pg_dump --what=tables
pg_dump --what=indexes,constraints

or something like that. Would give more flexibility, but I'm not sure if
that's worthwhile.

Having the ability to just this filtering that you're talking about would
be very handy - I've needed it more than once.

Where would you load primary keys and such contrants? Pre- or post dump? I
think the case could be made for either one...

//Magnus

---(end of broadcast)---
TIP 1: 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] Page-at-a-time Locking Considerations

2008-02-06 Thread Zdenek Kotala

Gregory Stark napsal(a):

Simon Riggs [EMAIL PROTECTED] writes:




I wonder how hard it would be to shove the clog into regular shared memory
pages and let the clock sweep take care of adjusting the percentage of shared
mem allocated to the clog versus data pages.


I tried to use memory mapped files (mmap) for clog and I think it should be also 
possible way. I got about 2% better performance, but it needs more testing.


Zdenek

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

  http://www.postgresql.org/docs/faq


Re: [HACKERS] PostgreSQL 8.4 development plan

2008-02-06 Thread Tom Lane
Andrew Dunstan [EMAIL PROTECTED] writes:
 I would rather set a target and modify it if necessary based on 
 experience than have none at all.

We felt that we'd like to get a couple of fests under our belts before
trying to nail down very many rules.  The process will get more
formalized later, no doubt, but let's see what the actual problems are
before guessing about how to fix them.

The original draft listed the first commit fest as being in May, but
we added a March fest in part to have a practice run without too much
stuff being on the plate.

regards, tom lane

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

   http://archives.postgresql.org


Re: [HACKERS] PostgreSQL 8.4 development plan

2008-02-06 Thread Tom Lane
Brendan Jurd [EMAIL PROTECTED] writes:
 Just thinking that we'll need somewhere to park the new patches which
 roll in during a commit fest.

Bruce has always kept two patch queues, one for the current version and
one for the stuff held for the next version.  This won't change anything
except the labels on the queues.

regards, tom lane

---(end of broadcast)---
TIP 1: 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] PostgreSQL 8.4 development plan

2008-02-06 Thread Dave Page
On Feb 6, 2008 4:24 PM, Andrew Dunstan [EMAIL PROTECTED] wrote:



 I would rather set a target and modify it if necessary based on
 experience than have none at all.

 The danger of not doing so is that we'll be in almost constant 'commit
 fest' mode.

Yes, that is something we discussed, and the reason why we used the
wording 'proposed timetable for the cycle'. We will adjust the timing
if need be, but wanted to start out on a confident note :-)

/D

---(end of broadcast)---
TIP 1: 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] PostgreSQL 8.4 development plan

2008-02-06 Thread Andrew Dunstan



Dave Page wrote:

On Feb 6, 2008 4:24 PM, Andrew Dunstan [EMAIL PROTECTED] wrote:
  


I would rather set a target and modify it if necessary based on
experience than have none at all.

The danger of not doing so is that we'll be in almost constant 'commit
fest' mode.



Yes, that is something we discussed, and the reason why we used the
wording 'proposed timetable for the cycle'. We will adjust the timing
if need be, but wanted to start out on a confident note :-)


  


Sometimes I wish we could decide if we want to be wishy or washy ;-)

cheers

andrew

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

  http://www.postgresql.org/docs/faq


Re: [HACKERS] PostgreSQL 8.4 development plan

2008-02-06 Thread Andrew Dunstan



Tom Lane wrote:

Andrew Dunstan [EMAIL PROTECTED] writes:
  
I would rather set a target and modify it if necessary based on 
experience than have none at all.



We felt that we'd like to get a couple of fests under our belts before
trying to nail down very many rules.  The process will get more
formalized later, no doubt, but let's see what the actual problems are
before guessing about how to fix them.

The original draft listed the first commit fest as being in May, but
we added a March fest in part to have a practice run without too much
stuff being on the plate.


  


OK, that makes some sense, although I don't know about the not much 
stuff on the plate. We presumably have quite a lot of stuff in the 
queue from the last 7  months or so.


cheers

andrew



---(end of broadcast)---
TIP 1: 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


[HACKERS] build environment: a different makefile

2008-02-06 Thread Paul van den Bogaard


Currently trying to enhance the way we can make binaries that run  
on Solaris.  One thing I found was a scalability bottleneck in the  
use of the ProcArrayLock. (this one has also been reported by a  
couple of my colleagues).
One big user of this lock is GetSnapshotData.  After it has taken  
this lock it does its work and releases it again. While it is holding  
the lock it is not doing any system calls and the lock holding  
process is barely preempted.


The only way to make this code faster is making the code use less CPU  
cycles to achieve its goal. One way is having the compiler do some  
strong code in-lining.
The SunStudio compiler we are using fortunately has an option for  
this. Unfortunately there are restrictions. One restriction I face is  
its inability to deal with ld -rs. These are used in the build  
environment to create all the SUBSYS.o object files.


I was hoping someone in the community already has a makefile that  
just creates object files from C-sources directly that I can use to  
try out the effect of in-lining to the performance of postgres.
Any other hints to achieve my goal are welcome too, of-course. Please  
note that in-lining is done in both the compiler and the linker.


Thanks,
Paul


 
-
Paul van den Bogaard
[EMAIL PROTECTED]

ISV-E  -- ISV Engineering, Opensource Engineering group

Sun Microsystems, Inc  phone:+31  
334 515 918
Saturnus 1  
extentsion: x (70)15918
3824 ME Amersfoort mobile:   +31  
651 913 354
The Netherlands 
fax:+31 334 515 001



---(end of broadcast)---
TIP 5: don't forget to increase your free space map settings


Re: [HACKERS] PostgreSQL 8.4 development plan

2008-02-06 Thread Tom Lane
Andrew Dunstan [EMAIL PROTECTED] writes:
 Tom Lane wrote:
 we added a March fest in part to have a practice run without too much
 stuff being on the plate.

 OK, that makes some sense, although I don't know about the not much 
 stuff on the plate. We presumably have quite a lot of stuff in the 
 queue from the last 7  months or so.

There is, although I think a large fraction of it will get bounced as
needs more work, which should reduce the pressure.  We'll just be
trying to give feedback to let the patch authors move forward, which
will not take as much time as actually committing would take.

The current queue is
http://momjian.postgresql.org/cgi-bin/pgpatches_hold
Note that a lot of the bulk is discussion of things that aren't
anywhere near committable anyway.

regards, tom lane

---(end of broadcast)---
TIP 9: In versions below 8.0, the planner will ignore your desire to
   choose an index scan if your joining column's datatypes do not
   match


Re: [HACKERS] Page-at-a-time Locking Considerations

2008-02-06 Thread Tom Lane
Zdenek Kotala [EMAIL PROTECTED] writes:
 I tried to use memory mapped files (mmap) for clog and I think it should be 
 also 
 possible way. I got about 2% better performance, but it needs more testing.

If you only got 2% out of it, it's not even worth thinking about how to
fix the serious bugs that approach would create (primarily, lack of
control over when pages can get flushed to disk).

regards, tom lane

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


Re: [HACKERS] Why are we waiting?

2008-02-06 Thread Staale Smedseng
 What is the frequency distribution of lock wait time on ProcArrayLock?

See below for wait time distributions for ProcArrayLock (both shared and
exclusive). The time measured is from entry into LWLockAcquire() until
return. I've recorded the same data in two different resolutions (ms,
and us for the lower part of the distribution). The DTrace script is at
the bottom.

These results are for 1000 TPC-C like clients, and measured over the
1000 PostgreSQL processes over a period of 10 seconds.

 Does the distribution vary over time?

Hmm... I will have to get back to you on that one.

Staale

CPU IDFUNCTION:NAME
  6  71245  :tick-10sec 

  Total LW_EXCLUSIVE25178
  Total Transaction Starts  25679
  Total LW_SHARED  107211
  LW_SHARED [ms]
   value  - Distribution - count
  0 | 0
   0 |@@   100565   
  10 | 1
  20 | 0
  30 | 0
  40 | 0
  50 | 0
  60 | 0
  70 | 6
  80 | 304  
  90 |@1370 
 100 |@2685 
 110 |@1731 
 120 | 307  
 130 | 13   
 140 | 0
 150 | 0
 160 | 5
 170 | 4
 180 | 26   
 190 | 36   
 200 | 24   
 210 | 61   
 220 | 49   
 230 | 15   
 240 | 0
 250 | 0
 260 | 0
 270 | 0
 280 | 2
 290 | 2
 300 | 0
 310 | 2
 320 | 1
 330 | 1
 340 | 0
 350 | 0
 360 | 0
 370 | 0
 380 | 0
 390 | 0
 400 | 1
 410 | 0

  LW_EXCLUSIVE [ms] 
   value  - Distribution - count
  0 | 0
   0 |@@   1565 
  10 | 0
  20 | 0
  30 | 0
  40 | 0
  50 | 0
  60 | 0
  70 | 16   
  80 |@894  
  90 |@@@  4108 
 100 |@8090 
 110 | 4863 

Re: [HACKERS] Why are we waiting?

2008-02-06 Thread Simon Riggs
On Wed, 2008-02-06 at 18:44 +0100, Staale Smedseng wrote:
  What is the frequency distribution of lock wait time on ProcArrayLock?
 
 See below for wait time distributions for ProcArrayLock (both shared and
 exclusive). The time measured is from entry into LWLockAcquire() until
 return. I've recorded the same data in two different resolutions (ms,
 and us for the lower part of the distribution). The DTrace script is at
 the bottom.
 
 These results are for 1000 TPC-C like clients, and measured over the
 1000 PostgreSQL processes over a period of 10 seconds.

Thanks! Interesting resonance pattern.

-- 
  Simon Riggs
  2ndQuadrant  http://www.2ndQuadrant.com 


---(end of broadcast)---
TIP 5: don't forget to increase your free space map settings


Re: [HACKERS] PostgreSQL 8.4 development plan

2008-02-06 Thread Josh Berkus
On Wednesday 06 February 2008 09:09, Tom Lane wrote:
 Brendan Jurd [EMAIL PROTECTED] writes:
  Just thinking that we'll need somewhere to park the new patches which
  roll in during a commit fest.

 Bruce has always kept two patch queues, one for the current version and
 one for the stuff held for the next version.  This won't change anything
 except the labels on the queues.

I think we might want to do something along the lines of what Stefan set up 
(at least I think it was he) for the end of 8.4 on developer.postgresql.org.  
Bruce's patch list is easy to update, but hard to read.  I'll put some effort 
into it.

-- 
Josh Berkus
PostgreSQL @ Sun
San Francisco

---(end of broadcast)---
TIP 7: You can help support the PostgreSQL project by donating at

http://www.postgresql.org/about/donate


Re: [HACKERS] Why are we waiting?

2008-02-06 Thread Staale Smedseng
I'm not sure 32-bit and 64-bit cases are going to be directly  
comparable. We
could have a problem with cache line aliasing on only one or the  
other for

example.


Agreed, this is likely comparing apples and oranges. I'll see if I can  
get a one-to-one comparison done (these were the numbers I had close  
by when writing the email).


But that is a pretty striking difference. Does the 8.3 run complete  
more

transactions in that time?


I'll make sure to include those numbers as well. :)

Staale

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

  http://www.postgresql.org/docs/faq


Re: [HACKERS] GSSAPI and V2 protocol

2008-02-06 Thread Tom Lane
Magnus Hagander [EMAIL PROTECTED] writes:
 On Wed, Feb 06, 2008 at 02:57:39AM -0500, Kris Jurka wrote:
 On Tue, 5 Feb 2008, Tom Lane wrote:
 2. We could retroactively redefine the contents of
 AuthenticationGSSContinue as carrying a length word after the
 authentication type code, but only in V2 protocol (so as not to break
 existing working cases).  This is pretty ugly but certainly possible.
 
 I see no harm in doing this.  What's there now can't work and the change 
 is self contained.  Is there any problem with the password message taking 
 a String datatype instead of Byte[n] with a null byte?

 I agree that this is probabliy the best way, if we can do it. But you do
 raise a good point - the message that goes the other way can certainly contain
 embedded NULLs. 

I hadn't thought about the response side of the problem, but yeah, it is
equally broken.  To fix that would have to mean that V2 has two
different password message formats for GSS vs other cases, which I think
is starting to exceed my threshold of ugliness --- we are now talking at
least four places needing weird special cases for V2 vs V3 protocol, two
each in the server and (each) client library.  I also quite dislike the
idea that a password message couldn't even be parsed without context
knowledge about which auth method it was for.

In retrospect it was a serious error to use the PasswordMessage format
for GSS responses, but with 8.3 already out the door I'm afraid we
are stuck with that decision.

I vote we just decide that GSS isn't going to be supported on protocol
V2, and put a suitable error message into the server for that.  It
doesn't seem to me that this combination is worth the amount of
contortions it would require to support.

regards, tom lane

---(end of broadcast)---
TIP 6: explain analyze is your friend


Re: [HACKERS] PostgreSQL 8.4 development plan

2008-02-06 Thread Gevik Babakhani
The plan looks great. I am +1

 -Original Message-
 From: [EMAIL PROTECTED] 
 
 ---(end of 
 broadcast)---
 TIP 4: Have you searched our list archives?
 
http://archives.postgresql.org
 


---(end of broadcast)---
TIP 1: 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


[HACKERS] crash / data recovery issues

2008-02-06 Thread Robert Treat
I'm trying to do some data recovery on an 8.1.9 system.  The brief history is 
the system crashed, attempted to do xlog replay but that failed.   I did a 
pg_resetxlog to get something that would startup, and it looks as if the 
indexes on pg_class have become corrupt. (ie. reindex claimes duplicate rows, 
which do not show up when doing count() manipulations on the data).  As it 
turns out, I can't drop these indexes either (system refuses with message 
indexes are needed by the system).  This has kind of let the system in an 
unworkable state.  

I've tried to do a pg_dump, but get schema with OID 96568 does not exist 
error.  The database has a number (~100) temp schemas in it, so I was 
suspecting that the problem was with some object referencing a temp schema 
with broken dependencies, but I looked through pg_depend for any referencing 
objects but found none. I also looked through  pg_type, pg_proc, pg_class, 
pg_constraint, pg_operator, pg_opclass, pg_conversion at their respective 
*namespace fields and also found no matches.   Any suggestions on what else 
might cause this, or how to get past it?  

I also did some digging to find the original error on xlog replay and it 
was  failed to re-find parent key in 763769 for split pages 21032/21033. 
I'm wondering if this is actually something you can push past with 
pg_resetxlog, or if I need to do a pg_resetxlog and pass in values prior to 
that error point (i guess essentially letting pg_resetxlog do a lookup)... 
thoughts? 

-- 
Robert Treat
Build A Brighter LAMP :: Linux Apache {middleware} PostgreSQL

---(end of broadcast)---
TIP 6: explain analyze is your friend


Re: [HACKERS] PostgreSQL 8.4 development plan

2008-02-06 Thread Alvaro Herrera
Josh Berkus escribió:

 I think we might want to do something along the lines of what Stefan set up 
 (at least I think it was he) for the end of 8.4 on developer.postgresql.org.  
 Bruce's patch list is easy to update, but hard to read.  I'll put some effort 
 into it.

Easy to update for Bruce -- for anyone else it is impossible to update
AFAIK.

-- 
Alvaro Herrerahttp://www.CommandPrompt.com/
The PostgreSQL Company - Command Prompt, Inc.

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

   http://www.postgresql.org/docs/faq


Re: [HACKERS] Why are we waiting?

2008-02-06 Thread Tom Lane
Gregory Stark [EMAIL PROTECTED] writes:
 Staale Smedseng [EMAIL PROTECTED] writes:
 Also, an interesting observation is that the hot locks seem to have
 changed from v8.2 to v8.3, making the ProcArrayLock more contended. See
 the following outputs:
 
 PostgreSQL 8.2 (32-bit):
 ...
 PostgreSQL 8.3 (64-bit):
 ...

 I'm not sure 32-bit and 64-bit cases are going to be directly comparable. We
 could have a problem with cache line aliasing on only one or the other for
 example.

Yeah, I find these numbers highly dubious.  AFAIR we didn't do anything
that would have reduced CLogControlLock contention, and we definitely
did work to reduce ProcArrayLock contention, so the claimed results seem
directly opposite to expectation.  I am wondering if the waits are being
attributed to the right locks --- I remember such an error in a previous
set of dtrace results, and some of the other details such as claiming
shared lock delays but no exclusive lock delays for FirstLockMgrLock
seem less than credible as well.

regards, tom lane

---(end of broadcast)---
TIP 5: don't forget to increase your free space map settings


Re: [HACKERS] crash / data recovery issues

2008-02-06 Thread Alvaro Herrera
Robert Treat wrote:
 I'm trying to do some data recovery on an 8.1.9 system.  The brief history is 
 the system crashed, attempted to do xlog replay but that failed.   I did a 
 pg_resetxlog to get something that would startup, and it looks as if the 
 indexes on pg_class have become corrupt. (ie. reindex claimes duplicate rows, 
 which do not show up when doing count() manipulations on the data).  As it 
 turns out, I can't drop these indexes either (system refuses with message 
 indexes are needed by the system).  This has kind of let the system in an 
 unworkable state.  

You can work out of it by starting a standalone server with system
indexes disabled (postgres -O -P, I think) and do a REINDEX on it (the
form of it that reindexes all system indexes -- I think it's REINDEX
DATABASE).

 I also did some digging to find the original error on xlog replay and it 
 was  failed to re-find parent key in 763769 for split pages 21032/21033. 
 I'm wondering if this is actually something you can push past with 
 pg_resetxlog, or if I need to do a pg_resetxlog and pass in values prior to 
 that error point (i guess essentially letting pg_resetxlog do a lookup)... 
 thoughts? 

You should be able to get out of that by reindexing that index.
(Actually, after you do a pg_resetxlog I think the best is to pg_dump
the whole thing and reload it.  That gives you at least the assurance
that your FKs are not b0rked)

-- 
Alvaro Herrerahttp://www.CommandPrompt.com/
PostgreSQL Replication, Consulting, Custom Development, 24x7 support

---(end of broadcast)---
TIP 5: don't forget to increase your free space map settings


Re: [HACKERS] Why are we waiting?

2008-02-06 Thread Simon Riggs
On Wed, 2008-02-06 at 13:55 -0500, Tom Lane wrote:
 Gregory Stark [EMAIL PROTECTED] writes:
  Staale Smedseng [EMAIL PROTECTED] writes:
  Also, an interesting observation is that the hot locks seem to have
  changed from v8.2 to v8.3, making the ProcArrayLock more contended. See
  the following outputs:
  
  PostgreSQL 8.2 (32-bit):
  ...
  PostgreSQL 8.3 (64-bit):
  ...
 
  I'm not sure 32-bit and 64-bit cases are going to be directly comparable. We
  could have a problem with cache line aliasing on only one or the other for
  example.
 
 Yeah, I find these numbers highly dubious.  AFAIR we didn't do anything
 that would have reduced CLogControlLock contention, and we definitely
 did work to reduce ProcArrayLock contention, so the claimed results seem
 directly opposite to expectation.  I am wondering if the waits are being
 attributed to the right locks --- I remember such an error in a previous
 set of dtrace results, and some of the other details such as claiming
 shared lock delays but no exclusive lock delays for FirstLockMgrLock
 seem less than credible as well.

There were only 2 lock delays for FirstLockMgrLock in SHARED mode, so it
seems believable that there were 0 lock delays in EXCLUSIVE mode.

I assumed that Staale is running with clog buffers tweaked? Can you
confirm Staale?

-- 
  Simon Riggs
  2ndQuadrant  http://www.2ndQuadrant.com 


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

   http://archives.postgresql.org


Re: [HACKERS] crash / data recovery issues

2008-02-06 Thread Tom Lane
Robert Treat [EMAIL PROTECTED] writes:
 I'm trying to do some data recovery on an 8.1.9 system.
 ...
 I also did some digging to find the original error on xlog replay and it 
 was  failed to re-find parent key in 763769 for split pages 21032/21033. 

Hmm, the only known cause of that was fixed in 8.1.6.  Don't suppose you made
a copy of everything before destroying the evidence with pg_resetxlog?
If you did, any chance I could get access to it?

regards, tom lane

---(end of broadcast)---
TIP 5: don't forget to increase your free space map settings


Re: [HACKERS] crash / data recovery issues

2008-02-06 Thread Robert Treat
On Wednesday 06 February 2008 13:56, Alvaro Herrera wrote:
 Robert Treat wrote:
  it looks as if the indexes on pg_class have become corrupt. (ie. reindex
  claimes duplicate rows, which do not show up when doing count()
  manipulations on the data).  As it turns out, I can't drop these indexes
  either (system refuses with message indexes are needed by the system). 
  This has kind of let the system in an unworkable state.

 You can work out of it by starting a standalone server with system
 indexes disabled (postgres -O -P, I think) and do a REINDEX on it (the
 form of it that reindexes all system indexes -- I think it's REINDEX
 DATABASE).


Sorry, I should have mentioned I tried the above was under postgres -d 
1 -P -O -D /path/to/data, but the reindex complains (doing reindex directly 
on the pg_class indexes, or doing reindex system).  

Personally I was surprised to find out it wouldn't let me drop the indexes 
under this mode,  but thats a different story.  Oh, probably worth noting I 
am able to reindex other system tables this way, just not pg_class. 

-- 
Robert Treat
Build A Brighter LAMP :: Linux Apache {middleware} PostgreSQL

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


Re: [HACKERS] Page-at-a-time Locking Considerations

2008-02-06 Thread Zdenek Kotala

Tom Lane wrote:

Zdenek Kotala [EMAIL PROTECTED] writes:
I tried to use memory mapped files (mmap) for clog and I think it should be also 
possible way. I got about 2% better performance, but it needs more testing.


If you only got 2% out of it, it's not even worth thinking about how to
fix the serious bugs that approach would create (primarily, lack of
control over when pages can get flushed to disk).


You can flush a pages by msync() function which writes dirty pages on 
disk. I don't see any other problem. Originally I tried to fix problem 
with a lot of parallel issues reported by Jignesh. However, it needs 
more testing if it really helps.


Zdenek


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

  http://www.postgresql.org/docs/faq


Re: [HACKERS] Why are we waiting?

2008-02-06 Thread Tom Lane
Simon Riggs [EMAIL PROTECTED] writes:
 There were only 2 lock delays for FirstLockMgrLock in SHARED mode, so it
 seems believable that there were 0 lock delays in EXCLUSIVE mode.

Not really, considering the extremely limited use of LW_SHARED in lock.c
(GetLockConflicts is used only by CREATE INDEX CONCURRENTLY, and
GetLockStatusData only by the pg_locks view).  For the type of benchmark
that I gather this is, there should be *zero* LW_SHARED acquisitions at
all.  And even if there are some, they could only be blocking against
the (undoubtedly much more frequent) LW_EXCLUSIVE acquisitions; it's not
very credible that there is zero contention among the LW_EXCLUSIVE locks
yet a few shared acquirers manage to get burnt.

regards, tom lane

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

   http://www.postgresql.org/docs/faq


Re: [HACKERS] Why are we waiting?

2008-02-06 Thread Simon Riggs
On Wed, 2008-02-06 at 14:42 -0500, Tom Lane wrote:
 Simon Riggs [EMAIL PROTECTED] writes:
  There were only 2 lock delays for FirstLockMgrLock in SHARED mode, so it
  seems believable that there were 0 lock delays in EXCLUSIVE mode.
 
 Not really, considering the extremely limited use of LW_SHARED in lock.c
 (GetLockConflicts is used only by CREATE INDEX CONCURRENTLY, and
 GetLockStatusData only by the pg_locks view).  For the type of benchmark
 that I gather this is, there should be *zero* LW_SHARED acquisitions at
 all.  And even if there are some, they could only be blocking against
 the (undoubtedly much more frequent) LW_EXCLUSIVE acquisitions; it's not
 very credible that there is zero contention among the LW_EXCLUSIVE locks
 yet a few shared acquirers manage to get burnt.

...but the total wait time on those lock waits was 24 microseconds. I
hardly call that burnt.

-- 
  Simon Riggs
  2ndQuadrant  http://www.2ndQuadrant.com 


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


Re: [HACKERS] GSSAPI and V2 protocol

2008-02-06 Thread Magnus Hagander

Tom Lane wrote:

Magnus Hagander [EMAIL PROTECTED] writes:

On Wed, Feb 06, 2008 at 02:57:39AM -0500, Kris Jurka wrote:

On Tue, 5 Feb 2008, Tom Lane wrote:

2. We could retroactively redefine the contents of
AuthenticationGSSContinue as carrying a length word after the
authentication type code, but only in V2 protocol (so as not to break
existing working cases).  This is pretty ugly but certainly possible.
I see no harm in doing this.  What's there now can't work and the change 
is self contained.  Is there any problem with the password message taking 
a String datatype instead of Byte[n] with a null byte?



I agree that this is probabliy the best way, if we can do it. But you do
raise a good point - the message that goes the other way can certainly contain
embedded NULLs. 


I hadn't thought about the response side of the problem, but yeah, it is
equally broken.  To fix that would have to mean that V2 has two
different password message formats for GSS vs other cases, which I think
is starting to exceed my threshold of ugliness --- we are now talking at
least four places needing weird special cases for V2 vs V3 protocol, two
each in the server and (each) client library.  I also quite dislike the
idea that a password message couldn't even be parsed without context
knowledge about which auth method it was for.

In retrospect it was a serious error to use the PasswordMessage format
for GSS responses, but with 8.3 already out the door I'm afraid we
are stuck with that decision.

I vote we just decide that GSS isn't going to be supported on protocol
V2, and put a suitable error message into the server for that.  It
doesn't seem to me that this combination is worth the amount of
contortions it would require to support.


Agreed. The cost is rapidly becoming too high. But we certainly can't 
change the protocol for the stuff that actually does work.


//Magnus

---(end of broadcast)---
TIP 6: explain analyze is your friend


Re: [HACKERS] Page-at-a-time Locking Considerations

2008-02-06 Thread Tom Lane
Zdenek Kotala [EMAIL PROTECTED] writes:
 Tom Lane wrote:
 If you only got 2% out of it, it's not even worth thinking about how to
 fix the serious bugs that approach would create (primarily, lack of
 control over when pages can get flushed to disk).

 You can flush a pages by msync() function which writes dirty pages on 
 disk. I don't see any other problem.

Then you need to learn more.  The side of the problem that is hard to
fix is that sometimes we need to prevent pages from being flushed to
disk until some other data (typically WAL entries) has reached disk.
With mmap'd data we have no control over early writes.

regards, tom lane

---(end of broadcast)---
TIP 1: 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] Why are we waiting?

2008-02-06 Thread Tom Lane
Simon Riggs [EMAIL PROTECTED] writes:
 On Wed, 2008-02-06 at 14:42 -0500, Tom Lane wrote:
 Not really, considering the extremely limited use of LW_SHARED in lock.c
 (GetLockConflicts is used only by CREATE INDEX CONCURRENTLY, and
 GetLockStatusData only by the pg_locks view).  For the type of benchmark
 that I gather this is, there should be *zero* LW_SHARED acquisitions at
 all.  And even if there are some, they could only be blocking against
 the (undoubtedly much more frequent) LW_EXCLUSIVE acquisitions; it's not
 very credible that there is zero contention among the LW_EXCLUSIVE locks
 yet a few shared acquirers manage to get burnt.

 ...but the total wait time on those lock waits was 24 microseconds. I
 hardly call that burnt.

What you are failing to grasp is that the data is simply not credible
(unless perhaps Staale fesses up that his benchmark includes a whole lot
of pg_locks monitoring, in which case I'd want to see it redone without
anyway).

regards, tom lane

---(end of broadcast)---
TIP 9: In versions below 8.0, the planner will ignore your desire to
   choose an index scan if your joining column's datatypes do not
   match


Re: [HACKERS] PostgreSQL 8.4 development plan

2008-02-06 Thread Peter Eisentraut
Alvaro Herrera wrote:
 Josh Berkus escribió:
  I think we might want to do something along the lines of what Stefan set
  up (at least I think it was he) for the end of 8.4 on
  developer.postgresql.org. Bruce's patch list is easy to update, but hard
  to read.  I'll put some effort into it.

 Easy to update for Bruce -- for anyone else it is impossible to update
 AFAIK.

Yes, I feel we could use a group writeable patch queue of some sort.  Perhaps 
an IMAP server setup could do the job.

-- 
Peter Eisentraut
http://developer.postgresql.org/~petere/

---(end of broadcast)---
TIP 9: In versions below 8.0, the planner will ignore your desire to
   choose an index scan if your joining column's datatypes do not
   match


Re: [HACKERS] PostgreSQL 8.4 development plan

2008-02-06 Thread Guillaume Smet
On Feb 6, 2008 9:56 AM, Dave Page [EMAIL PROTECTED] wrote:
 Whenever a commit fest is in progress, the
 focus will shift from development to review, feedback and commit of
 patches. Each fest will continue until all patches in the queue have
 either been committed to the CVS repository, returned to the author
 for additional work, or rejected outright, and until that has
 happened, no new patches will be considered.

If we don't have a bench farm anytime soon, I think we should consider
planning a set of benchmarks after each commit fest to prevent
performance regressions on different workloads. I don't expect them to
be comprehensive but it could allow us to prevent the most obvious
regressions.

--
Guillaume

---(end of broadcast)---
TIP 1: 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] PostgreSQL 8.4 development plan

2008-02-06 Thread Tom Lane
Peter Eisentraut [EMAIL PROTECTED] writes:
 Josh Berkus escribió:
 I think we might want to do something along the lines of what Stefan set
 up (at least I think it was he) for the end of 8.4 on
 developer.postgresql.org. Bruce's patch list is easy to update, but hard
 to read.  I'll put some effort into it.

 Yes, I feel we could use a group writeable patch queue of some sort.  Perhaps
 an IMAP server setup could do the job.

Seems like a wiki page with links to pgsql-patches archive entries would
be easy.  But an issue for any of this is who has permissions to edit
the queue?  I concur that Bruce only is the wrong answer, but I'm not
sure anyone with a wiki account is the right answer.

regards, tom lane

---(end of broadcast)---
TIP 1: 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] PostgreSQL 8.4 development plan

2008-02-06 Thread Joshua D. Drake
On Wed, 06 Feb 2008 15:46:22 -0500
Tom Lane [EMAIL PROTECTED] wrote:
 
 Seems like a wiki page with links to pgsql-patches archive entries
 would be easy.  But an issue for any of this is who has permissions
 to edit the queue?  I concur that Bruce only is the wrong answer,
 but I'm not sure anyone with a wiki account is the right answer.

The Wiki accounts are controlled to a degree. If the page gets abused
we remove the privilege. Remember we can always rollback changes. This
is no different than email moderation imo.

Joshua D. Drake
-- 
The PostgreSQL Company since 1997: http://www.commandprompt.com/ 
PostgreSQL Community Conference: http://www.postgresqlconference.org/
Donate to the PostgreSQL Project: http://www.postgresql.org/about/donate
PostgreSQL SPI Liaison | SPI Director |  PostgreSQL political pundit



signature.asc
Description: PGP signature


Re: [HACKERS] PostgreSQL 8.4 development plan

2008-02-06 Thread Magnus Hagander

Joshua D. Drake wrote:

On Wed, 06 Feb 2008 15:46:22 -0500
Tom Lane [EMAIL PROTECTED] wrote:
 

Seems like a wiki page with links to pgsql-patches archive entries
would be easy.  But an issue for any of this is who has permissions
to edit the queue?  I concur that Bruce only is the wrong answer,
but I'm not sure anyone with a wiki account is the right answer.


The Wiki accounts are controlled to a degree. If the page gets abused
we remove the privilege. Remember we can always rollback changes. This
is no different than email moderation imo.


Is it technically possible to set permissions on a per-page basis?

//Magnus

---(end of broadcast)---
TIP 5: don't forget to increase your free space map settings


Re: [HACKERS] Page-at-a-time Locking Considerations

2008-02-06 Thread Zdenek Kotala

Tom Lane wrote:

Zdenek Kotala [EMAIL PROTECTED] writes:

Tom Lane wrote:

If you only got 2% out of it, it's not even worth thinking about how to
fix the serious bugs that approach would create (primarily, lack of
control over when pages can get flushed to disk).


You can flush a pages by msync() function which writes dirty pages on 
disk. I don't see any other problem.


Then you need to learn more.  The side of the problem that is hard to
fix is that sometimes we need to prevent pages from being flushed to
disk until some other data (typically WAL entries) has reached disk.
With mmap'd data we have no control over early writes.


I see. Thanks for explanation.

Zdenek

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

  http://www.postgresql.org/docs/faq


Re: [HACKERS] PostgreSQL 8.4 development plan

2008-02-06 Thread Dimitri Fontaine
Le Wednesday 06 February 2008 21:35:54 Peter Eisentraut, vous avez écrit :
 Alvaro Herrera wrote:
  Easy to update for Bruce -- for anyone else it is impossible to update
  AFAIK.

 Yes, I feel we could use a group writeable patch queue of some sort. 
 Perhaps an IMAP server setup could do the job.

I've read some developers appreciating the way review board works:
  http://review-board.org/
  http://code.google.com/p/reviewboard/
  http://code.google.com/p/reviewboard/wiki/UserBasics

This last link present the expected workflow when using the tool, and maybe 
you'll find this matches the project needs... I don't know if such a tool can 
help the project, but mentioning its existence certainly can't arm...

Hope this helps,
-- 
dim


signature.asc
Description: This is a digitally signed message part.


Re: [HACKERS] PostgreSQL 8.4 development plan

2008-02-06 Thread Joshua D. Drake
On Wed, 06 Feb 2008 22:07:06 +0100
Magnus Hagander [EMAIL PROTECTED] wrote:

 Joshua D. Drake wrote:
  On Wed, 06 Feb 2008 15:46:22 -0500
  Tom Lane [EMAIL PROTECTED] wrote:
   
  Seems like a wiki page with links to pgsql-patches archive entries
  would be easy.  But an issue for any of this is who has permissions
  to edit the queue?  I concur that Bruce only is the wrong answer,
  but I'm not sure anyone with a wiki account is the right answer.
  
  The Wiki accounts are controlled to a degree. If the page gets
  abused we remove the privilege. Remember we can always rollback
  changes. This is no different than email moderation imo.
 
 Is it technically possible to set permissions on a per-page basis?

That I can't answer but consider that the people that are putting info
on the wiki are mostly people we trust. We just make it clear that if
you are a jack ass you will have your account removed.

IMO, we are putting entirely too much energy into controlling flow of
text here. You have to log in to change the text, the text is
revertible as is the ability to log in in the first place.

Sincerely,

Joshua D. Drake


 
 //Magnus
 


-- 
The PostgreSQL Company since 1997: http://www.commandprompt.com/ 
PostgreSQL Community Conference: http://www.postgresqlconference.org/
Donate to the PostgreSQL Project: http://www.postgresql.org/about/donate
PostgreSQL SPI Liaison | SPI Director |  PostgreSQL political pundit



signature.asc
Description: PGP signature


Re: [HACKERS] PostgreSQL 8.4 development plan

2008-02-06 Thread Stefan Kaltenbrunner

Tom Lane wrote:

Peter Eisentraut [EMAIL PROTECTED] writes:

Josh Berkus escribió:

I think we might want to do something along the lines of what Stefan set
up (at least I think it was he) for the end of 8.4 on
developer.postgresql.org. Bruce's patch list is easy to update, but hard
to read.  I'll put some effort into it.



Yes, I feel we could use a group writeable patch queue of some sort.  Perhaps
an IMAP server setup could do the job.


Seems like a wiki page with links to pgsql-patches archive entries would
be easy.  But an issue for any of this is who has permissions to edit
the queue?  I concur that Bruce only is the wrong answer, but I'm not
sure anyone with a wiki account is the right answer.


this is basically what I did during the 8.3 cycle on the wiki - I would 
be willing to maintain a similiar thing for 8.4 if people think it is a 
good idea.



Stefan

---(end of broadcast)---
TIP 9: In versions below 8.0, the planner will ignore your desire to
  choose an index scan if your joining column's datatypes do not
  match


Re: [HACKERS] NULL OR ZERO

2008-02-06 Thread Rodrigo E. De León Plicet
On Feb 3, 2008 7:41 PM, Jaime Casanova [EMAIL PROTECTED] wrote:
 On Feb 3, 2008 7:26 PM, Omar Bettin [EMAIL PROTECTED] wrote:
  Probably I am on the wrong place but for me NULL on numbers means 0 or ZERO.
  I know about standards...
 

 NULL means unknown value, ZERO is a known value

NULL represents absence of a value. You get the UNKNOWN truth value if
you compare NULL with any data value or another NULL (damn you, 3VL!).

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

   http://www.postgresql.org/docs/faq


Re: [HACKERS] build environment: a different makefile

2008-02-06 Thread Peter Eisentraut
Paul van den Bogaard wrote:
 The SunStudio compiler we are using fortunately has an option for  
 this. Unfortunately there are restrictions. One restriction I face is  
 its inability to deal with ld -rs. These are used in the build  
 environment to create all the SUBSYS.o object files.

 I was hoping someone in the community already has a makefile that  
 just creates object files from C-sources directly that I can use to  
 try out the effect of in-lining to the performance of postgres.

I don't know if anyone has a makefile for it, but the following seems to work
for me:

pgsql/src/backend$ cc -O2 -Wall -Wmissing-prototypes -Wpointer-arith -Winline 
-Wdeclaration-after-statement -Wendif-labels -fno-strict-aliasing -g 
-L../../src/port  -Wl,-rpath,'/home/peter/devel/pg83/pg-install/lib' -Wl,-E 
$(find -name *.o | grep -v SUBSYS | grep -v conversion_procs) 
../../src/timezone/SUBSYS.o ../../src/port/libpgport_srv.a -lxslt -lxml2 -lpam 
-lssl -lcrypto -lgssapi_krb5 -lcrypt -ldl -lm -lldap -o postgres

If you find that the optimizations you are hoping for are useful, I'm sure
we could put an option of that sort somewhere in the makefiles.

-- 
Peter Eisentraut
http://developer.postgresql.org/~petere/

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

   http://www.postgresql.org/docs/faq


Re: [HACKERS] PostgreSQL 8.4 development plan

2008-02-06 Thread Greg Smith

On Wed, 6 Feb 2008, Magnus Hagander wrote:


Is it technically possible to set permissions on a per-page basis?


Technically possible?  Of course.  It's sure not easy to do, though; the 
Mediawiki team considers having any real ACL structure added onto their 
code a non-feature and last time I checked you had to patch the source.


I'd say it's really more trouble than it's worth here.  It's not like the 
developer site is open to the whole world or something.  The number of 
people capable of noticing and reverting bad changes in a critical, 
popular page vastly outnumbers those likely to do something stupid (with 
all the stuff I've done on the developer's wiki I don't think I've had to 
revert a change bigger than a grammatical error so far).


--
* Greg Smith [EMAIL PROTECTED] http://www.gregsmith.com Baltimore, MD

---(end of broadcast)---
TIP 1: 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] build environment: a different makefile

2008-02-06 Thread Tom Lane
Peter Eisentraut [EMAIL PROTECTED] writes:
 I don't know if anyone has a makefile for it, but the following seems to work
 for me:

 pgsql/src/backend$ cc -O2 -Wall -Wmissing-prototypes -Wpointer-arith -Winline 
 -Wdeclaration-after-statement -Wendif-labels -fno-strict-aliasing -g 
 -L../../src/port  -Wl,-rpath,'/home/peter/devel/pg83/pg-install/lib' -Wl,-E 
 $(find -name *.o | grep -v SUBSYS | grep -v conversion_procs) 
 ../../src/timezone/SUBSYS.o ../../src/port/libpgport_srv.a -lxslt -lxml2 
 -lpam -lssl -lcrypto -lgssapi_krb5 -lcrypt -ldl -lm -lldap -o postgres

 If you find that the optimizations you are hoping for are useful, I'm sure
 we could put an option of that sort somewhere in the makefiles.

I've sometimes wondered whether the SUBSYS.o files really offer any
advantage compared to just linking all the individual .o files.  They
certainly eat disk space, but perhaps they save some time ... or perhaps
not, especially in a one-off build.

I suppose that we might fall foul of command line length limits on
some platforms :-(.  The output of your find command amounts to nearly
11000 characters in HEAD.

regards, tom lane

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


Re: [HACKERS] PostgreSQL 8.4 development plan

2008-02-06 Thread Tom Lane
Dimitri Fontaine [EMAIL PROTECTED] writes:
 Le Wednesday 06 February 2008 21:35:54 Peter Eisentraut, vous avez écrit :
 Yes, I feel we could use a group writeable patch queue of some sort. 
 Perhaps an IMAP server setup could do the job.

 I've read some developers appreciating the way review board works:
   http://review-board.org/
   http://code.google.com/p/reviewboard/
   http://code.google.com/p/reviewboard/wiki/UserBasics

Hmm, the info on that last page might be out of date, but what it says is
that the only SCMS they really support 100% is SVN.  The other ones they
claim support for don't work [well/at all] with the post-review tool.

It looks interesting though, and would alleviate a few of the problems
people have mentioned with reviewing stuff that's posted as diffs.
Has anyone here got any direct experience with it?

regards, tom lane

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


Re: [HACKERS] PostgreSQL 8.4 development plan

2008-02-06 Thread Joshua D. Drake
On Wed, 06 Feb 2008 18:50:34 -0500
Tom Lane [EMAIL PROTECTED] wrote:
 
  I've read some developers appreciating the way review board works:
http://review-board.org/
http://code.google.com/p/reviewboard/
http://code.google.com/p/reviewboard/wiki/UserBasics
 
 Hmm, the info on that last page might be out of date, but what it
 says is that the only SCMS they really support 100% is SVN.  The

O.k. I am not too interested in starting a whole war here (again) but
for the record, we have what appears to be a perfectly working
capability to move from cvs to svn. So *if* review board is something
we really like, the SCM should not be the barrier.

Sincerely,

Joshua D. Drake
 

-- 
The PostgreSQL Company since 1997: http://www.commandprompt.com/ 
PostgreSQL Community Conference: http://www.postgresqlconference.org/
Donate to the PostgreSQL Project: http://www.postgresql.org/about/donate
PostgreSQL SPI Liaison | SPI Director |  PostgreSQL political pundit



signature.asc
Description: PGP signature


Re: [HACKERS] Page-at-a-time Locking Considerations

2008-02-06 Thread Gregory Stark
Zdenek Kotala [EMAIL PROTECTED] writes:

 Tom Lane wrote:
 Zdenek Kotala [EMAIL PROTECTED] writes:
 Tom Lane wrote:
 If you only got 2% out of it, it's not even worth thinking about how to
 fix the serious bugs that approach would create (primarily, lack of
 control over when pages can get flushed to disk).

 You can flush a pages by msync() function which writes dirty pages on disk.
 I don't see any other problem.

 Then you need to learn more.  The side of the problem that is hard to
 fix is that sometimes we need to prevent pages from being flushed to
 disk until some other data (typically WAL entries) has reached disk.
 With mmap'd data we have no control over early writes.

 I see. Thanks for explanation.

In theory mlock() ought to provide that facility. The kernel people know it's
used by crypto software to avoid having disk copies of sensitive keys, so
there's at least a fighting chance it actually works for this too. But I
wouldn't put too much money on it working this purpose on every platform that
has it. 

It's entirely conceivably that some platforms have mlock avoid swapping out
pages but not avoid syncing them but leaving them in RAM. Or that some might
sync mlocked pages when the process which had the page locked dies, especially
if it crashes. Or that some versions of some OSes are simply buggy. It's not
like it's a case that would ever be tested or even noticed if it failed.

-- 
  Gregory Stark
  EnterpriseDB  http://www.enterprisedb.com
  Ask me about EnterpriseDB's 24x7 Postgres support!

---(end of broadcast)---
TIP 9: In versions below 8.0, the planner will ignore your desire to
   choose an index scan if your joining column's datatypes do not
   match


Re: [HACKERS] PostgreSQL 8.4 development plan

2008-02-06 Thread Tom Lane
Joshua D. Drake [EMAIL PROTECTED] writes:
 O.k. I am not too interested in starting a whole war here (again) but
 for the record, we have what appears to be a perfectly working
 capability to move from cvs to svn. So *if* review board is something
 we really like, the SCM should not be the barrier.

I believe the compromise that's been reached for the moment is that
the core SCM will remain CVS, because everybody's favorite other SCM
can import from CVS but not necessarily from somebody else's favorite
other SCM.  So a diff tool that doesn't work with CVS isn't going to be
especially useful for us.

I would imagine that the problem is mostly a lack of round tuits,
and that if we really fell in love with review board we could probably
teach it to handle diffs against CVS (especially seeing that the rest
of it besides post-review already works with CVS, supposedly).

So, again, the question is has anyone really used it?  Is it the
best thing since sliced bread, or not so much?

regards, tom lane

---(end of broadcast)---
TIP 6: explain analyze is your friend


Re: [HACKERS] PostgreSQL 8.4 development plan

2008-02-06 Thread Mark Mielke

Tom Lane wrote:

Joshua D. Drake [EMAIL PROTECTED] writes:
  

O.k. I am not too interested in starting a whole war here (again) but
for the record, we have what appears to be a perfectly working
capability to move from cvs to svn. So *if* review board is something
we really like, the SCM should not be the barrier.



I believe the compromise that's been reached for the moment is that
the core SCM will remain CVS, because everybody's favorite other SCM
can import from CVS but not necessarily from somebody else's favorite
other SCM.  So a diff tool that doesn't work with CVS isn't going to be
especially useful for us.

I would imagine that the problem is mostly a lack of round tuits,
and that if we really fell in love with review board we could probably
teach it to handle diffs against CVS (especially seeing that the rest
of it besides post-review already works with CVS, supposedly).

So, again, the question is has anyone really used it?  Is it the
best thing since sliced bread, or not so much?

regards, tom lane


My official role at my place of work is configuration management 
software architect. We primarily use ClearCase and I am responsible for 
the software side of the tooling around it. We have several thousands 
users and terrabytes of data stored from millions of change sets. Not 
that roles or anything matter, but where your job is PostgreSQL, my job 
is SCM.


Probably because I am spoiled - I don't understand how your teams get 
along so well with CVS. From my perspective, nearly everything available 
is better than CVS. If it works good for you, and you don't ever have 
merging problems, or history tracking problems, then great - any move is 
going to be a hassle and will cause pain wasting at least some time in 
the next development cycle.


If you do want to see the benefit of change - here is my experience with 
Subversion:


I have been playing with Subversion for just almost two years now in a 
small group of people with 3 people on a small project. While working on 
the main branch (trunk) submissions were generally smooth.  Conflict 
resolution is poor without graphical tool support, but with only three 
people and co-ordinated work this was rarely an issue. Atomic 
submissions were a pleasant relief and performance was adequate. Commits 
are not at the level of functionality that I am accustomed to though. 
First, commits are not registered until a person is complete their work 
and the work is submitted. Second, merging of commits is very weak in 
every production version of Subversion available today (1.4 and before) 
because Subversion does not perform merge tracking. As soon as one 
begins using multiple branches, it becomes very difficult to keep track 
of where things are, and the people who support Subversion are satisfied 
writing commit numbers in their comments to keep track of completed 
merges. Finally, because the concept of directories, branches, and tags 
have all been blurred into one muddle, horrible things happen if you try 
to do anything clever. In my case, I had a web project that I intended 
to break into web, lib, and source. I renamed trunk to trunk/www and 
created trunk/lib, and trunk/source. For this point forwards, I was 
completely unable to merge changes from other branches to trunk. 
Subversion became completely confused. It was at this point that my 
frustration acceptance level was passed, and I switched to GIT. This was 
last December. Subversion 1.5 was supposed to be out to address many of 
these issues, but it was a hollow promise as it was still not released 
the last time I checked, and a review of their discussions on the matter 
show that many of the promises they made were likely premature.


Since then, I have been consistently impressed with GIT. I have 
completed complex merges and extensive parallel development that would 
have been painful or impossible with Subversion. I am not a fan of 
de-centralization as most GIT supporters are - but I am a fan of full 
feature change sets. In GIT I can merge a change set back and forth 
between branches and it will track it. I can rebase the change set to a 
later baseline and continue manipulating it. I can save my work space 
aside, or use the same work space to switch to another branch and have 
my uncommitted work automatically three-way merged to the new context. 
Our team on this outside work project is now up to 5 people and 
everybody likes GIT better than Subversion.


My story is that Subversion is cute - but it does not scale in terms of 
flexible parallel development models, nor does it provide sufficient 
functionality over CVS to be considered the best thing since sliced 
bread. It is an improvement over CVS, but it is not a great tool. If 
you are going to go through the effort of migrating to another system, I 
would seriously consider the benefits of other systems out there before 
believing that Subversion is the answer to all problems. GIT is one good 

Re: [HACKERS] PostgreSQL 8.4 development plan

2008-02-06 Thread Bruce Momjian
Tom Lane wrote:
 Brendan Jurd [EMAIL PROTECTED] writes:
  Just thinking that we'll need somewhere to park the new patches which
  roll in during a commit fest.
 
 Bruce has always kept two patch queues, one for the current version and
 one for the stuff held for the next version.  This won't change anything
 except the labels on the queues.

Sure, I can do that.  One is already called the _hold_ patch queue.

-- 
  Bruce Momjian  [EMAIL PROTECTED]http://momjian.us
  EnterpriseDB http://postgres.enterprisedb.com

  + If your life is a hard drive, Christ can be your backup. +

---(end of broadcast)---
TIP 1: 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] Page-at-a-time Locking Considerations

2008-02-06 Thread Bruce Momjian
Zdenek Kotala wrote:
 Tom Lane wrote:
  Zdenek Kotala [EMAIL PROTECTED] writes:
  Tom Lane wrote:
  If you only got 2% out of it, it's not even worth thinking about how to
  fix the serious bugs that approach would create (primarily, lack of
  control over when pages can get flushed to disk).
  
  You can flush a pages by msync() function which writes dirty pages on 
  disk. I don't see any other problem.
  
  Then you need to learn more.  The side of the problem that is hard to
  fix is that sometimes we need to prevent pages from being flushed to
  disk until some other data (typically WAL entries) has reached disk.
  With mmap'd data we have no control over early writes.
 
 I see. Thanks for explanation.

This is mentioned in the TODO list:

* Consider mmap()'ing files into a backend?

  Doing I/O to large tables would consume a lot of address space or
  require frequent mapping/unmapping.  Extending the file also causes
  mapping problems that might require mapping only individual pages,
  leading to thousands of mappings.  Another problem is that there is no
  way to _prevent_ I/O to disk from the dirty shared buffers so changes
  could hit disk before WAL is written.

-- 
  Bruce Momjian  [EMAIL PROTECTED]http://momjian.us
  EnterpriseDB http://postgres.enterprisedb.com

  + If your life is a hard drive, Christ can be your backup. +

---(end of broadcast)---
TIP 7: You can help support the PostgreSQL project by donating at

http://www.postgresql.org/about/donate


Re: [HACKERS] patch queue needs update was:(PostgreSQL 8.4 development plan)

2008-02-06 Thread Jaime Casanova
On Feb 6, 2008 1:52 PM, Alvaro Herrera [EMAIL PROTECTED] wrote:
 Josh Berkus escribió:

  I think we might want to do something along the lines of what Stefan set up
  (at least I think it was he) for the end of 8.4 on developer.postgresql.org.
  Bruce's patch list is easy to update, but hard to read.  I'll put some 
  effort
  into it.

 Easy to update for Bruce -- for anyone else it is impossible to update
 AFAIK.


and, of course, will be things that escape from Bruce's eyes... for
example, the Add GUC temp_tablespaces toprovide a default location
for patch was actually committed  in 8.3 and it's still on the patch
queue
http://momjian.us/mhonarc/patches_hold/msg0.html

i think a depuration will be needed to keep the first commit fests simple...

-- 
regards,
Jaime Casanova

Programming today is a race between software engineers striving to
build bigger and better idiot-proof programs and the universe trying
to produce bigger and better idiots.
So far, the universe is winning.
   Richard Cook

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

   http://www.postgresql.org/docs/faq


[HACKERS] 8.3 / 8.2.6 restore comparison

2008-02-06 Thread Joshua D. Drake
Hello,

I have been testing a migration for a week now trying to get it into a
reasonable state. This is what we have:

Restore file 220G

8.2.6 and 8.3.0 are configured identically:

shared_buffers = 8000MB
work_mem = 32MB
maintenance_work_mem = 512MB
fsync = off
full_page_writes = off
checkpoint_segments = 300
synchronous_commit = off (8.3)
wal_writer_delay = off (8.3)
autovacuum = off

8.2.6 after 2 hours has restored 41GB.
8.3.0 after 2.5 hours had restored 38GB.

Originally I was thinking that 8.2.6 was stomping 8.3. However I am
thinking that the reduction in the tuple header sizes for 8.3 means
that yes I restored 38GB, it is actually *more* data than 8.2.6. Does
that seem accurate to everyone else? If so what can we do to speed this
up? We are certainly *not* saturating the disk (16 spindles SCSI). 

I am thinking the way we are going to need to do this is to have an
extended outage and write a custom script to do a concurrent dump and
load. (no in this case slony is not an option).

Sincerely,

Joshua D. Drake


-- 
The PostgreSQL Company since 1997: http://www.commandprompt.com/ 
PostgreSQL Community Conference: http://www.postgresqlconference.org/
Donate to the PostgreSQL Project: http://www.postgresql.org/about/donate
PostgreSQL SPI Liaison | SPI Director |  PostgreSQL political pundit



signature.asc
Description: PGP signature


Re: [HACKERS] PostgreSQL 8.4 development plan

2008-02-06 Thread James Mansion

Tom Lane wrote:

There is, although I think a large fraction of it will get bounced as
needs more work, which should reduce the pressure.  We'll just be
trying to give feedback to let the patch authors move forward, which
will not take as much time as actually committing would take.

The current queue is
http://momjian.postgresql.org/cgi-bin/pgpatches_hold
Note that a lot of the bulk is discussion of things that aren't
anywhere near committable anyway.

  
Wouldn't it make sense try to catch up a bit and fix as much of this as 
is feasible (including
return and resubmit) for things where the desire is uncontroversial, 
even if the implementation
is flawed, and accept other things that are fully acceptable in the time 
it takes to do that, and

then call it a wrap?

The curre nt *plan* is for a 14 month cycle.  And it will probably 
slip.  Some of the
queued items are going to be very old by the time you go to 8.4 on this 
program,
which seems a shame.  That sort of plan looks to me more like a 'major 
refactoring

to get to 9.0' sort of plan, than an incremental release.

James


---(end of broadcast)---
TIP 6: explain analyze is your friend