Re: [HACKERS] Query progress indication - an implementation

2009-06-30 Thread Scara Maccai

 +1.  Especially if I run it a few times and I can see
 which counters
 are still moving.

Per-node percentage is easy to do (given the perfect estimates, of course).
The problem comes when you want to give an overall percentage.

I wouldn't know where to put that explain-like output though: in a column in 
pg_stat_get_activity??? (and it would be available only if the proper variable 
was on before sending the query)

 -1.    A counter that slowly goes from 99% to
 99.5% done is
 much worse than a counter that takes the same much time
 going from 1000% of estimated rows done to 2000% of
 estimated rows done.

It's not just about estimates.
Even with 100% correct estimates, IMHO there's no way to get the perfect amount 
of work done so far.
And this is even without considering multiple queries running at the same 
time...

If someone has some time to read those papers let me know what he thinks about 
them... because I think their methods couldn't give them those results...






-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers


[HACKERS] [PATCH 0/2 v3] SIGPIPE masking in local socket connections

2009-06-30 Thread Jeremy Kerr
A new approach to avioding manipulating the signal mask during for every
send - this time round, use SO_NOSIGPIPE and MSG_NOSIGNAL if available.

The patches have been tested on Linux and OSX, and I've confirmed that
'struct foo { };' will compile with a MSVC compiler. I'd still like a
little more testing though, is there a machine that allows both
SO_NOSIGPIPE and MSG_NOSIGNAL?

v3: respin as context diffs

Again, comments most welcome,


Jeremy

---
Jeremy Kerr (2):
  [libpq] rework sigpipe-handling macros
  [libpq] Try to avoid manually masking SIGPIPEs on every send()


-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers


[HACKERS] [PATCH 2/2 v3] [libpq] Try to avoid manually masking SIGPIPEs on every send()

2009-06-30 Thread Jeremy Kerr
Currently, libpq will wrap each send() call on the connection with
two system calls to mask SIGPIPEs. This results in 3 syscalls instead
of one, and (on Linux) can lead to high contention on the signal
mask locks in threaded apps.

We have a couple of other methods to avoid SIGPIPEs:
sockopt(SO_NOSIGPIPE) and the MSG_NOSIGNAL flag to send().

This change attempts to use these if they're available at compile-
and run-time. If not, we drop back to manipulating the signal mask as
before.

Signed-off-by: Jeremy Kerr j...@ozlabs.org

---
 src/interfaces/libpq/fe-connect.c |   40 ++
 src/interfaces/libpq/fe-secure.c  |   83 +-
 src/interfaces/libpq/libpq-int.h  |2 
 3 files changed, 107 insertions(+), 18 deletions(-)

*** a/src/interfaces/libpq/fe-connect.c
--- b/src/interfaces/libpq/fe-connect.c
***
*** 1085,1090  keep_going:  /* We 
will come back to here until there is
--- 1085,1091 
while (conn-addr_cur != NULL)
{
struct addrinfo *addr_cur = 
conn-addr_cur;
+   int optval;
  
/* Remember current address for 
possible error msg */
memcpy(conn-raddr.addr, 
addr_cur-ai_addr,
***
*** 1149,1154  keep_going:  /* We 
will come back to here until there is
--- 1150,1194 
}
  #endif   /* F_SETFD */
  
+   /* We have three methods of blocking 
sigpipe during
+* send() calls to this socket:
+*
+*  - setsockopt(sock, SO_NOSIGPIPE)
+*  - send(sock, ..., MSG_NOSIGNAL)
+*  - setting the signal mask to 
SIG_IGN during send()
+*
+* The first two reduce the number of 
syscalls (for the
+* third, we require three syscalls to 
implement a send()),
+* so use them if they're available. 
Their availability is
+* flagged in the following members of 
PGconn:
+*
+* conn-sigpipe_so - we 
have set up SO_NOSIGPIPE
+* conn-sigpipe_flag   - we're 
specifying MSG_NOSIGNAL
+*
+* If we can use SO_NOSIGPIPE, then set 
sigpipe_so here and
+* we don't need to care about anything 
else. Otherwise,
+* try MSG_NOSIGNAL by setting 
sigpipe_flag. If we get an
+* error with MSG_NOSIGNAL, we clear 
the flag and revert
+* to manual masking.
+*/
+   conn-sigpipe_so = false;
+ #ifdef MSG_NOSIGNAL
+   conn-sigpipe_flag = true;
+ #else /* !MSG_NOSIGNAL */
+   conn-sigpipe_flag = false;
+ #endif /* MSG_NOSIGNAL */
+ 
+ #ifdef SO_NOSIGPIPE
+   optval = 1;
+   if (!setsockopt(conn-sock, SOL_SOCKET, 
SO_NOSIGPIPE,
+   (char *)optval, 
sizeof(optval)))
+   {
+   conn-sigpipe_so = true;
+   conn-sigpipe_flag = false;
+   }
+ #endif /* SO_NOSIGPIPE */
+ 
+ 
/*
 * Start/make connection.  This should 
not block, since we
 * are in nonblock mode.  If it does, 
well, too bad.
*** a/src/interfaces/libpq/fe-secure.c
--- b/src/interfaces/libpq/fe-secure.c
***
*** 122,127  static long win32_ssl_create_mutex = 0;
--- 122,139 
   */
  
  #ifndef WIN32
+ 
+ static inline int sigpipe_masked(PGconn *conn)
+ {
+   /* If we're on an SSL connection, we can only use SO_NOSIGPIPE masking.
+* Otherwise, we can handle SO_NOSIGPIPE or the MSG_NOSIGNAL flag */
+ #ifdef USE_SSL
+   if (conn-ssl)
+   return conn-sigpipe_so;
+ #endif
+   return conn-sigpipe_so || conn-sigpipe_flag;
+ }
+ 
  #ifdef ENABLE_THREAD_SAFETY
  
  struct sigpipe_info {
***
*** 130,137 

[HACKERS] [PATCH 1/2 v3] [libpq] rework sigpipe-handling macros

2009-06-30 Thread Jeremy Kerr
Currently, the sigpipe-masking code in libpq is implemented as
a set of macros, which depend on declaring local variables.

This change adds a (private) struct sigpipe_info to contain the
compile-dependent data required for sigpipe masking and restoring.
The caller can then declare a struct sigpipe info explicitly, and
pass this to the subsequent sigpipe-masking code.

This allows us to separate the variable declarations from the code,
and gives the caller more flexibility for controlling the scope of
these variables.

Also, since we don't need to declare variables in the macros, we
can change the code to be implemented as static inlines.

Signed-off-by: Jeremy Kerr j...@ozlabs.org

---
 src/interfaces/libpq/fe-secure.c |   88 ---
 1 file changed, 55 insertions(+), 33 deletions(-)

*** a/src/interfaces/libpq/fe-secure.c
--- b/src/interfaces/libpq/fe-secure.c
***
*** 119,163  static long win32_ssl_create_mutex = 0;
  
  /*
   * Macros to handle disabling and then restoring the state of SIGPIPE 
handling.
-  * Note that DISABLE_SIGPIPE() must appear at the start of a block.
   */
  
  #ifndef WIN32
  #ifdef ENABLE_THREAD_SAFETY
  
! #define DISABLE_SIGPIPE(failaction) \
!   sigset_tosigmask; \
!   boolsigpipe_pending; \
!   boolgot_epipe = false; \
! \
!   if (pq_block_sigpipe(osigmask, sigpipe_pending)  0) \
!   failaction
  
! #define REMEMBER_EPIPE(cond) \
!   do { \
!   if (cond) \
!   got_epipe = true; \
!   } while (0)
  
! #define RESTORE_SIGPIPE() \
!   pq_reset_sigpipe(osigmask, sigpipe_pending, got_epipe)
  
  #else /* !ENABLE_THREAD_SAFETY */
  
! #define DISABLE_SIGPIPE(failaction) \
!   pqsigfunc   oldsighandler = pqsignal(SIGPIPE, SIG_IGN)
  
! #define REMEMBER_EPIPE(cond)
  
! #define RESTORE_SIGPIPE() \
!   pqsignal(SIGPIPE, oldsighandler)
  
  #endif/* ENABLE_THREAD_SAFETY */
  #else /* WIN32 */
  
! #define DISABLE_SIGPIPE(failaction)
! #define REMEMBER_EPIPE(cond)
! #define RESTORE_SIGPIPE()
  
  #endif/* WIN32 */
  
--- 119,180 
  
  /*
   * Macros to handle disabling and then restoring the state of SIGPIPE 
handling.
   */
  
  #ifndef WIN32
  #ifdef ENABLE_THREAD_SAFETY
  
! struct sigpipe_info {
!   sigset_toldsigmask;
!   boolsigpipe_pending;
!   boolgot_epipe;
! };
  
! static inline int disable_sigpipe(struct sigpipe_info *info)
! {
!   info-got_epipe = false;
!   return pq_block_sigpipe(info-oldsigmask, info-sigpipe_pending)  0;
! }
  
! static inline void remember_epipe(struct sigpipe_info *info, bool cond)
! {
!   if (cond)
!   info-got_epipe = true;
! }
! 
! static inline void restore_sigpipe(struct sigpipe_info *info)
! {
!   pq_reset_sigpipe(info-oldsigmask, info-sigpipe_pending, 
info-got_epipe);
! }
  
  #else /* !ENABLE_THREAD_SAFETY */
  
! struct sigpipe_info {
!   pqsigfunc   oldhandler;
! };
  
! static inline int disable_sigpipe(struct sigpipe_info *info)
! {
!   info-oldhandler = pqsignal(SIGPIPE, SIG_IGN);
!   return 0;
! }
! 
! static inline void remember_epipe(struct sigpipe_info *info, bool cond)
! {
! }
  
! static inline void restore_sigpipe(struct sigpipe_info *info)
! {
!   pqsignal(SIGPIPE, info-oldhandler);
! }
  
  #endif/* ENABLE_THREAD_SAFETY */
  #else /* WIN32 */
  
! struct sigpipe_info { };
! static inline int disable_sigpipe(struct sigpipe_info *info) { return 0; }
! static inline void remember_epipe(struct sigpipe_info *info, bool cond) { }
! static inline void restore_sigpipe(struct sigpipe_info *info) { }
  
  #endif/* WIN32 */
  
***
*** 286,294  pqsecure_read(PGconn *conn, void *ptr, size_t len)
if (conn-ssl)
{
int err;
  
/* SSL_read can write to the socket, so we need to disable 
SIGPIPE */
!   DISABLE_SIGPIPE(return -1);
  
  rloop:
n = SSL_read(conn-ssl, ptr, len);
--- 303,313 
if (conn-ssl)
{
int err;
+   struct sigpipe_info info;
  
/* SSL_read can write to the socket, so we need to disable 
SIGPIPE */
!   if (disable_sigpipe(info))
!   return -1;
  
  rloop:
n = SSL_read(conn-ssl, ptr, len);
***
*** 315,321  rloop:
  
if (n == -1)
{
!   REMEMBER_EPIPE(SOCK_ERRNO == 
EPIPE);

printfPQExpBuffer(conn-errorMessage,

libpq_gettext(SSL SYSCALL error: %s\n),

SOCK_STRERROR(SOCK_ERRNO, sebuf, 

Re: [HACKERS] foreign.h is not installed

2009-06-30 Thread Peter Eisentraut
On Tuesday 30 June 2009 07:36:36 Itagaki Takahiro wrote:
 Header file include/foreign/foreign.h is not installed in 8.4.0.

 Did we forget to add subdir foreign to Makefile?

So it seems.


-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers


[HACKERS] Hello to all postgresql developers :)

2009-06-30 Thread Sergej Galkin
Hello,
I am Oracle developer for 2 years, and I have a magister work - to realize
TPR index on RDBMS :) I desided to realize TPR index on PostgreSql RDBMS. I
am really new programmer in C language.
what I done
1 Installed Xubuntu on my computer.
2 build and installed PostgreSql.
3 Installed Anjuta on my computer.

Can anybody advise what I need to do next.

Grateful,
Sergej


[HACKERS] [PATCH v3] Avoid manual shift-and-test logic in AllocSetFreeIndex

2009-06-30 Thread Jeremy Kerr
Move the shift-and-test login into a separate fls() function, which
can use __builtin_clz() if it's available.

This requires a new check for __builtin_clz in the configure script.

Results in a ~2% performance increase on PowerPC.

Signed-off-by: Jeremy Kerr j...@ozlabs.org

---
v3: respin as context diff

---
 configure.in  |   13 +
 src/backend/utils/mmgr/aset.c |   34 +++---
 2 files changed, 40 insertions(+), 7 deletions(-)

*** a/configure.in
--- b/configure.in
***
*** 1361,1366  case $host_os in
--- 1361,1379 
AC_FUNC_FSEEKO;;
  esac
  
+ # GCC builtins
+ #
+ # We need AC_TRY_LINK here, as the prototype generated by AC_CHECK_FUNC
+ # will cause gcc to try to reference a non-builtin symbol.
+ 
+ AC_MSG_CHECKING([for __builtin_clz])
+ AC_TRY_LINK([],
+   [__builtin_clz(0);],
+   [AC_DEFINE(HAVE_BUILTIN_CLZ, 1,
+   [Define to 1 if you have __builtin_clz().])
+   AC_MSG_RESULT(yes)],
+   [AC_MSG_RESULT(no)])
+ 
  
  #
  # Pthreads
*** a/src/backend/utils/mmgr/aset.c
--- b/src/backend/utils/mmgr/aset.c
***
*** 255,260  static MemoryContextMethods AllocSetMethods = {
--- 255,285 
  #define AllocAllocInfo(_cxt, _chunk)
  #endif
  
+ /*
+  * fls: find last set bit.
+  *
+  * Returns the 1-based index of the most-significant bit in x. The MSB
+  * is bit number 32, the LSB is bit number 1. If x is zero, the result is
+  * undefined.
+  */
+ static inline int
+ fls(unsigned int x)
+ {
+ #ifdef HAVE_BUILTIN_CLZ
+   return 32 - __builtin_clz(x);
+ #else
+   int ls = 0;
+ 
+   while (x != 0)
+   {
+   ls++;
+   x = 1;
+   }
+ 
+   return ls;
+ #endif
+ }
+ 
  /* --
   * AllocSetFreeIndex -
   *
***
*** 268,281  AllocSetFreeIndex(Size size)
  {
int idx = 0;
  
!   if (size  0)
{
!   size = (size - 1)  ALLOC_MINBITS;
!   while (size != 0)
!   {
!   idx++;
!   size = 1;
!   }
Assert(idx  ALLOCSET_NUM_FREELISTS);
}
  
--- 293,301 
  {
int idx = 0;
  
!   if (size  (1  ALLOC_MINBITS))
{
!   idx = fls((size - 1)  ALLOC_MINBITS);
Assert(idx  ALLOCSET_NUM_FREELISTS);
}
  

-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers


Re: [HACKERS] [PATCH] [v8.5] Security checks on largeobjects

2009-06-30 Thread KaiGai Kohei
I concluded that the following issues should be solved when we apply
largeobject-like interfaces on the big toasted data within general
relations, not only pg_largeobject system catalog.

At first, we need to add a new strategy to store the given varlena data
on the external toast relation.
If we try to seek and fetch a certain data chunk, it is necessary to be
computable what chunk stores the required data specified by offset and
length. So, the external chunks should be uncompressed always. It is a
common requirement for both of read and write operations.
If we try to update a part of the toasted data chunks, it should not be
inlined independent from length of the datum, because we need to update
whole the tuple which contains inlined toasted chunks in this case.
If we open the toasted varlena with read-only mode, inlined one does not
prevent anything. It is an issue for only write operation.

I would like to add a new strategy on pg_type.typstorage with the following
characteristics:
 1. It always stores the given varlena data without any compression.
So, the given data is stored as a set of fixed-length chunks.
 2. It always stores the given varlena data on external toast relation.

I suggest a new built-in type named BLOB which has an identical definition
to BYTEA type, expect for its attstorage.

Next, a different version of lo_open() should be provided to accept
BLOB type as follows:

  SELECT pictname, lo_open(pictdata, x'2'::int) FROM my_picture;

It will allocate a largeobject descriptor for the given BLOB data,
and user can read and write using loread() and lowrite() interfaces.

issue:
  In this case, should it hold the relation handler and locks on the
  my_picture relation, not only its toast relation?
issue:
  Should the lo_open() with read-only mode be available on the existing
  TEXT or BYTEA types? I could not find any reason to deny them.

Next, pg_largeobject system catalog can be redefined using the BLOB
type as follows:

  CATALOG(pg_largeobject,2613)
  {
  Oid loowner;/* OID of the largeobject owner */
  Oid lonsp;  /* OID of the largeobject namespace */
  aclitem loacl[1];   /* access permissions */
  bloblodata; /* contents of the largeobject */
  } FormData_pg_largeobject;

The existing largeobject interfaces perform on pg_largeobject.lodata
specified by largeobject identifier.
Rest of metadata can be used for access control purpose.

Thanks,

KaiGai Kohei wrote:
 Tom Lane wrote:
 Bernd Helmle maili...@oopsware.de writes:
 It might be interesting to dig into your proposal deeper in conjunction 
 with TOAST (you've already mentioned this TODO). Having serial access with 
 a nice interface into TOAST would be eliminating the need for 
 pg_largeobject completely (i'm not a big fan of this one-big-system-table 
 approach the old LO interface currently is).
 Yeah, it would be more useful probably to fix that than to add
 decoration to the LO facility.  Making LO more usable is just going to
 encourage people to bump into its other limitations (32-bit OIDs,
 32-bit object size, finite maximum size of pg_largeobject, lack of
 dead-object cleanup, etc etc).
 
 The reason why I tried to mention the named largeobject feature is
 that dac security checks on largeobject require them to belong to
 a certain schema, so I thought it is quite natural to have a string
 name. However, obviously, it is not a significant theme for me.
 
 I can also agree your opinion that largeobject interfaces should be
 redefined to access partial stuff of TOAST'ed verlena data structure,
 not only pg_largeobject.
 
 In this case, we will need a new pg_type.typstorage option which
 force to put the given verlena data on external relation without
 compression, because we cannot estimate the data offset in inlined
 or compressed external verlena data.
 
 I'll try to submit a design within a few days.
 Thanks,


-- 
OSS Platform Development Division, NEC
KaiGai Kohei kai...@ak.jp.nec.com

-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers


Re: [HACKERS] Hello to all postgresql developers :)

2009-06-30 Thread Peter Eisentraut
On Tuesday 30 June 2009 10:06:49 Sergej Galkin wrote:
 Hello,
 I am Oracle developer for 2 years, and I have a magister work - to realize
 TPR index on RDBMS :) I desided to realize TPR index on PostgreSql RDBMS. I
 am really new programmer in C language.
 what I done
 1 Installed Xubuntu on my computer.
 2 build and installed PostgreSql.
 3 Installed Anjuta on my computer.

 Can anybody advise what I need to do next.

I suggest you start perusing the information here:

http://wiki.postgresql.org/wiki/Development_information

-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers


Re: [HACKERS] Query progress indication - an implementation

2009-06-30 Thread Simon Riggs

On Tue, 2009-06-30 at 07:04 +0200, Dimitri Fontaine wrote:
 Le 30 juin 2009 à 01:34, Greg Stark gsst...@mit.edu a écrit :
  Basically I disagree that imperfect progress reports annoy users. I
  think we can do better than reporting 250% done or having a percentage
  that goes backward though. It would be quite tolerable (though perhaps
  for no logical reason) to have a progress indicator which slows done
  as it gets closer to 100% and never seems to make it to 100%.
 
 I guess bad stats are such an important problem in planning queries  
 that a 250% progress is doing more good than harm in showing users how  
 badly they need to review their analyze related settings.

Yeh, I agree. We can define it as planned work, rather than actual. So
if the progress bar says 250% and query is still going at least you know
it is doing more work, rather than just being slow at doing the planned
work.

-- 
 Simon Riggs   www.2ndQuadrant.com
 PostgreSQL Training, Services and Support


-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers


Re: [HACKERS] Query progress indication - an implementation

2009-06-30 Thread Simon Riggs

On Mon, 2009-06-29 at 18:49 -0400, Tom Lane wrote:
 Simon Riggs si...@2ndquadrant.com writes:
  On Mon, 2009-06-29 at 14:07 -0400, Tom Lane wrote:
  I think this is pretty much nonsense --- most queries run all their plan
  nodes concurrently to some extent.  You can't usefully say that a query
  is on some node, nor measure progress by whether some node is done.
 
  The requirement is not nonsense, even if the detail was slightly off.
 
 I was applying the word nonsense to the proposed implementation,
 not the desire to have query progress indications ...

Understood, just trying to limit the blast radius.

  We can regard plans as acting in phases with each blocking node
  separating the plan. We know which nodes those are, so we can report
  that.
 
 [ shrug... ] You can regard them that way, but you won't get
 particularly helpful results for a large fraction of real queries.
 The system is generally set up to prefer streaming evaluation
 as much as it can.  Even in nominally blocking nodes like Sort and Hash,
 there are operational modes that look more like streaming, or at least
 chunking.

It's not always useful, though many large queries do have multiple
phases. The concept and the name come from ETL tools and it is of real
practical use in those environments. We can put the phase number on the
EXPLAIN easily, and it is very simple to calculate the total number of
phases and the current phase - e.g. 2 of 5 phases complete.

-- 
 Simon Riggs   www.2ndQuadrant.com
 PostgreSQL Training, Services and Support


-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers


Re: [HACKERS] [PATCH] user mapping extension to pg_ident.conf

2009-06-30 Thread Lars Kanis
Am Montag, 29. Juni 2009 18:12:13 schrieben Sie:
 Lars Kanis ka...@comcard.de writes:
  The problem I have, is that I want to use an ordinary windows
  application, which connects to an arbitrary ODBC data source. This
  application stores a fixed username und password for the connection
  within it's own binary data file. It doesn't know anything about
  TLS-connection nor smartcard based authentication. All this is done in
  the libpg.dll.

 This seems to boil down to I'm willing to damage PG's authentication
 mechanisms to an unlimited extent to work around one broken proprietary
 windows app.  I'm not excited about it.

Oh no!  You totally misunderstood me. So please give me another try to explain 
the addition: It's NOT about one stupid or broken (it isn't) application that 
has to be corrected. It's NOT about a specific problem with ODBC connections. 
It's a much more general thing, regardless which application/programming 
language/connection-library you use. I wouldn't post a quick an dirty hack to 
work around one broken proprietary windows app!

The situation with any external single sign-on authentication method (GSSAPI, 
SSPI, Kerberos, Certificate authentication) is that you always have to 
provide a username. It is differentiated between the SYSTEM-USERNAME and the 
PG-USERNAME. The SYSTEM-USERNAME is the name the user is identified to by the 
external authentication. It is usually done with cryptographic validation of 
some tickets or certificates. So this value is the important one in terms of 
security. The PG-USERNAME is what the application tells the server the user 
wants to act as, in the database. It has no value at all in terms of 
security - it's just a wish. It is verified through the mapping of 
pg_ident.conf whether the wish can be granted with the given SYSTEM-USERNAME.

The problem arises when you want to work with 1:1 mapping of SYSTEM-USERNAME 
to PG-USERNAME. You don't want to let the user type in the PG-USERNAME he 
wants to act as (I have never seen an kerberos-enabled application to do so). 
So the application has to take into account which authentication method you 
actually use, to extract the exact username from credentials/certificate. 
That means you have to open a second channel to your SSO-System to provide 
the correct username to the PG-server. And it means you have to do some sort 
of duplicated code in the application, which is already realised within 
libpq. Currently you can not say: Dear libpq, please identify the current 
user and authenticate to the PG-server (by whatever authentication methods 
you're allowed to by pg_hba.conf), and log in to the own account of the 
user.

My addition allows to abstract the application from the used authentication 
method. It adds an level of indirection between PG-USERNAME (given by the 
application) and the EFFECTIVE-USERNAME (for actual db-role) based on the 
SYSTEM-USERNAME (given by the SSO-system). And it adds it in a way that fits 
nicely into the already existend mapping-file pg_ident.conf.

Let's show the following example-table in pg_ident.conf:
# MAPNAME  SYSTEM-USERNAMEPG-USERNAME   EFFECTIVE-USERNAME
gssapi-user/^(.*)@domain\.com$simple-role   \1
gssapi-user/^use...@domain\.com$  super-roleuser_a
gssapi-user/^use...@domain\.com$  super-roleuser_c

The first line says: Any user with an account on the PG-server and valid 
GSSAPI-credentials can log in to it's own PG-account. The application doesn't 
need to care about which user is actually working with it. It simply needs to 
say to server to use the users 'simple-role'. You can write the application 
completely independent to the authentication method to use.

For whatever security relevant action in this or another application, you can 
log in to the 'super-role' of the user. But only user_a and user_c are able 
to do so. Likewise the application don't need to care about the actually used 
SSO-method or system.

Also to mention: The addition is fully backward compatible.


 Have you even considered the 
 potential for security problems arising from this?

Yes, of course. The primary goal of the addition is to get more security. Some 
questions I considered:

Can I go around permission checks which are carried out by PG?

That's the most important question, I think. As I stated above, the 
PG-USERNAME always has an informative nature. It's just a wish with no value 
in terms of security. So it is safe to change the name, as long as all usual 
permission checks are done on the changed one. In fact they are done. The 
identification and validation of users credentials are completed, so we can 
trust the SYSTEM-USERNAME. Then the pg_ident.conf comes in action and 
determines the EFFECTIVE-USERNAME. Any further permission checks are done 
afterwards. So the EFFECTIVE-USERNAME is checked against login-permission and 
so on.

Does it get more security to give every application user it's own account 
within the database?

Yes. 

Re: [HACKERS] [PATCH] user mapping extension to pg_ident.conf

2009-06-30 Thread Lars Kanis
 # MAPNAME  SYSTEM-USERNAMEPG-USERNAME   EFFECTIVE-USERNAME
 gssapi-user/^(.*)@domain\.com$simple-role   \1
 gssapi-user/^use...@domain\.com$  super-roleuser_a
 gssapi-user/^use...@domain\.com$  super-roleuser_c

My fault. The lower lines should be:
gssapi-user/^use...@domain\.com$  super-rolesuper_user_a
gssapi-user/^use...@domain\.com$  super-rolesuper_user_c


regards
Lars Kanis



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


[HACKERS] use of pg_stat_database

2009-06-30 Thread abdelhak benmohamed
Hellow,
 
I like to track the number of committed transaction for my database
So I use the following command 
Select * from pg_stat_database;
 
The column xact_commit gives me the number of transaction committed
 
But if I execute the same command another time, the column xact_commit gives me 
an other number.
 
Between the first select and the second select I don’t execute any transaction 
on my database
 
Please, can any one help me to understanding the cause of the change?
 
Thanks very much 


  

Re: [HACKERS] 8.5 development schedule

2009-06-30 Thread Robert Haas
On Tue, Jun 30, 2009 at 1:33 AM, Peter Eisentrautpete...@gmx.net wrote:
 Now that 8.4.0 is out the door, development for 8.5devel will be opened any
 day now.  But we haven't discussed the development timeline so far.  The core
 team has several proposals:

 CommitFest      Alpha
 Aug. 1          Sept. 1
 Oct. 1          Nov. 1
 Dec. 1          Jan ~~ 5
 Feb. 1          March 4

 Release ~ May 2010

 This puts us on track for a release at the same time next year, maybe a little
 earlier.

 (Alpha is a semiformal snapshot release at the end of the commitfest, for
 those who haven't heard yet.  Details later.)

 If we want to avoid a commitfest in December, then this:

 CommitFest      Alpha
 Sept. 1         Oct. 1
 Nov. 1          Dec. 1
 Jan. 1          Feb 1
 March 1         April 2

 Release ~ June 2010

 But this has the drawback of waiting an extra month for the first commit fest,
 for no particularly good reason.  (Check the current list, if you are
 curious.)

 Or, one more commitfest:

 CommitFest      Alpha
 Aug. 1          Sept. 1
 Oct. 1          Nov. 1
 Dec. 1          Jan ~~ 5
 Feb. 1          March 3
 April 3         May 3

 Release ~ July 2010

 But that gets 8.5 out even later than this year, and past PGCon.

 Comments?

Waiting until September for the first CommitFest seems like a really
bad idea.   We already have almost 40 patches on the wiki page, and
there are some that haven't been added yet: I suspect we will have
over 50 in another week, and maybe closer to 60.  If we wait two
months, we're likely to have 100 patches or more, which will be a
reviewing effort that I don't like to think about.  It will also
increase the number of patches that collide in mid-air.  So at the
very latest, the first CommitFest should start August 1.

However, if anything, I think if anything we should go the other way
and start the first CommitFest July 15th.  That may give people a
little less time than they were expecting to finish up WIP, but I
think it's worth it to give people who have already submitted patches
feedback that much sooner, as well as to maintain reviewer and
committer sanity.

By the way, are going to switch over to the commitfest management tool
I wrote (http://coridan.postgresql.org/)?  There's room for
improvement, but it's a solid starting point, and all the comments I
have received so far have been basically positive.

Also by the way, I'd be willing to be a commitfest manager,
co-commitfest manager, or some other supporting role of that type, if
that would be helpful.

...Robert

-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers


Re: [HACKERS] use of pg_stat_database

2009-06-30 Thread A. Kretschmer
In response to abdelhak benmohamed :
 Hellow,
 
  
 
 I like to track the number of committed transaction for my database
 
 So I use the following command
 
 Select * from pg_stat_database;
 
  
 
 The column xact_commit gives me the number of transaction committed
 
  
 
 But if I execute the same command another time, the column xact_commit gives 
 me
 an other number.

I can't reproduce that:

test=*# Select sum(xact_commit) from pg_stat_database;
  sum
---
 73470
(1 row)

-- 5 minutes later:

test=*# Select sum(xact_commit) from pg_stat_database;
  sum
---
 73470
(1 row)


 
  
 
 Between the first select and the second select I don?t execute any transaction
 on my database

Autovacuum?


Andreas
-- 
Andreas Kretschmer
Kontakt:  Heynitz: 035242/47150,   D1: 0160/7141639 (mehr: - Header)
GnuPG-ID:   0x3FFF606C, privat 0x7F4584DA   http://wwwkeys.de.pgp.net

-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers


Re: [HACKERS] 8.5 development schedule

2009-06-30 Thread Greg Stark
On Tue, Jun 30, 2009 at 12:22 PM, Robert Haasrobertmh...@gmail.com wrote:
 Waiting until September for the first CommitFest seems like a really
 bad idea.   We already have almost 40 patches on the wiki page, and
 there are some that haven't been added yet: I suspect we will have
 over 50 in another week, and maybe closer to 60.

I would like to propose a different strategy. Instead of always
tackling all the smaller patches and leaving the big patches for last,
I would suggest we start with Hot Standby.

In fact I would suggest as Hot Standby has already gotten a first pass
review that we consider applying it on day 1. That gets it into
everyone's development trees so they can see any suspicious code or
effects it has in their peculiar environments. It may not be perfect
but if we apply it now there's plenty of time to make improvements.

Then we can have a regular commitfest a month or so later. Hopefully
any followon changes to Hot Standby would actually get into that
commitfest if they're relatively minor.

-- 
greg
http://mit.edu/~gsstark/resume.pdf

-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers


Re: [HACKERS] question about meaning of character varying without length

2009-06-30 Thread Andrew Dunstan



Konstantin Izmailov wrote:



Delivery to the following recipient failed permanently:

pgsql-gene...@postgresql.com mailto:pgsql-gene...@postgresql.com




should be pgsql-gene...@postgresql.org, not pgsql-gene...@postgresql.com.

cheers

andrew

--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers


Re: [HACKERS] 8.5 development schedule

2009-06-30 Thread Robert Haas
On Tue, Jun 30, 2009 at 7:53 AM, Greg Starkgsst...@mit.edu wrote:
 On Tue, Jun 30, 2009 at 12:22 PM, Robert Haasrobertmh...@gmail.com wrote:
 Waiting until September for the first CommitFest seems like a really
 bad idea.   We already have almost 40 patches on the wiki page, and
 there are some that haven't been added yet: I suspect we will have
 over 50 in another week, and maybe closer to 60.

 I would like to propose a different strategy. Instead of always
 tackling all the smaller patches and leaving the big patches for last,
 I would suggest we start with Hot Standby.

 In fact I would suggest as Hot Standby has already gotten a first pass
 review that we consider applying it on day 1. That gets it into
 everyone's development trees so they can see any suspicious code or
 effects it has in their peculiar environments. It may not be perfect
 but if we apply it now there's plenty of time to make improvements.

 Then we can have a regular commitfest a month or so later. Hopefully
 any followon changes to Hot Standby would actually get into that
 commitfest if they're relatively minor.

If Hot Standby were ready to be applied, I would be all in favor of
that, but in fact I don't believe that's the case.  There's been no
movement on Hot Standby since February, or at least nothing on the
mailing list and no changes to
http://git.postgresql.org/gitweb?p=simon.git;a=summary

My recollection is there was some discussion of whether Simon was even
prepared to put any more work into that patch or leave it others (in
particular, Heikki) to finish.  I think we had better resolve the
question of who is going to finish that patch and when they plan to do
it before we start planning our CommitFest schedule around it.

...Robert

-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers


Re: [HACKERS] 8.5 development schedule

2009-06-30 Thread Greg Stark
On Tue, Jun 30, 2009 at 1:04 PM, Robert Haasrobertmh...@gmail.com wrote:
 If Hot Standby were ready to be applied, I would be all in favor of
 that, but in fact I don't believe that's the case.  There's been no
 movement on Hot Standby since February

Well Simon was happy with it as submitted so unless people are reading
the patch and giving feedback or using it and running into problems I
wouldn't really expect him to make changes.

That's part of the problem with leaving patches outside the source
tree while they're being developed. It's part of what led us to
suddenly have a massive reviewing job and making big changes in the
final commitfest.

If we apply things earlier in the cycle we can be a lot less
conservative. We don't have to be 100% sure everything was dealt with
in a single commit.

-- 
greg
http://mit.edu/~gsstark/resume.pdf

-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers


Re: [HACKERS] Hello to all postgresql developers :)

2009-06-30 Thread Dimitri Fontaine
Sergej Galkin sergej.gal...@gmail.com writes:

 I am Oracle developer for 2 years, and I have a magister work - to realize TPR
 index on RDBMS :) I desided to realize TPR index on PostgreSql RDBMS. I am
 really new programmer in C language.

I don't know what a TPR index is, but it could be that the following
material could help you:
  http://wiki.postgresql.org/wiki/Image:Prato_2008_prefix.pdf

Regards,
-- 
dim

-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers


Re: [HACKERS] How to register my function into backend?

2009-06-30 Thread Bruce YUAN
Oh. Thanks for your instruction!

Best regards.
Bruce
2009/6/30 Robert Haas robertmh...@gmail.com

 On Mon, Jun 29, 2009 at 4:53 AM, Bruce YUANsua...@gmail.com wrote:rsd
  My function is to collect some backend information for user anlysis.
  How to register my function into backend? It make that we can called it
 via
  libpg/PQfn().
  Thanks!

 I'm not sure this is -hackers question; seems like -general might be
 more appropriate.

 I think you are looking for CREATE OR REPLACE FUNCTION.

 http://www.postgresql.org/docs/current/static/sql-createfunction.html
 http://www.postgresql.org/docs/current/static/xfunc.html

 ...Robert



[]


Re: [HACKERS] pre-proposal: permissions made easier

2009-06-30 Thread Aidan Van Dyk
* Greg Stark gsst...@mit.edu [090630 00:18]:
 
 Perhaps tieing it to the schema is wrong and we should actually
 require the user to specify the template they want explicitly which
 would be even better for that. So it would be something like WITH
 GRANTS LIKE sensitive_table.

And, not having any experience with the current permissions code, or the
code required to do that (;-]), I would *love* something like that...

*especially* if those grants remain by reference, i.e. If I change the
GRANTS/REVOKES on sensitive_table, those are automatically apply to all
tables created with the WITH GRANTS LIKE sensitive_table...

It would simplify all the work I have to do in:
make_$PERMISSION_ROLE(table)
and make it much more elegant, and save me having to re-run them all
if I want to change some permissions.

But I realize that since I'm as anal about my database schemas as I am
about my code, I'm probably not your typical DB dev shop people like
Josh are used to dealing with...

a.

-- 
Aidan Van Dyk Create like a god,
ai...@highrise.ca   command like a king,
http://www.highrise.ca/   work like a slave.


signature.asc
Description: Digital signature


Re: [HACKERS] pre-proposal: permissions made easier

2009-06-30 Thread Andrew Dunstan



Aidan Van Dyk wrote:


*especially* if those grants remain by reference, i.e. If I change the
GRANTS/REVOKES on sensitive_table, those are automatically apply to all
tables created with the WITH GRANTS LIKE sensitive_table...


  


Isn't that exactly what Tom is objecting to, namely that the permissions 
of an object would not be contained entirely in catalog entry for the 
object itself?


cheers

andrew

--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers


Re: [HACKERS] 8.5 development schedule

2009-06-30 Thread Merlin Moncure
On Tue, Jun 30, 2009 at 8:12 AM, Greg Starkgsst...@mit.edu wrote:
 On Tue, Jun 30, 2009 at 1:04 PM, Robert Haasrobertmh...@gmail.com wrote:
 If Hot Standby were ready to be applied, I would be all in favor of
 that, but in fact I don't believe that's the case.  There's been no
 movement on Hot Standby since February

 Well Simon was happy with it as submitted so unless people are reading
 the patch and giving feedback or using it and running into problems I
 wouldn't really expect him to make changes.

 That's part of the problem with leaving patches outside the source
 tree while they're being developed. It's part of what led us to
 suddenly have a massive reviewing job and making big changes in the
 final commitfest.

 If we apply things earlier in the cycle we can be a lot less
 conservative. We don't have to be 100% sure everything was dealt with
 in a single commit.

+1 (I'm all for getting HS in people's hands ASAP)

Given that there is also a lot of work on synchronous replication, is
it better to get the HS in so the SR stuff can use that as a baseline,
or to triage in both patches together?

merlin

-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers


Re: [HACKERS] pre-proposal: permissions made easier

2009-06-30 Thread Aidan Van Dyk
* Andrew Dunstan and...@dunslane.net [090630 09:08]:


 Aidan Van Dyk wrote:

 *especially* if those grants remain by reference, i.e. If I change the
 GRANTS/REVOKES on sensitive_table, those are automatically apply to all
 tables created with the WITH GRANTS LIKE sensitive_table...


   

 Isn't that exactly what Tom is objecting to, namely that the permissions  
 of an object would not be contained entirely in catalog entry for the  
 object itself?

Well, it depends on how it's done... If one of the permissions on an
object you can assign is look at $X, the you don't get the hidden
permissions problem.  The object itself still contains everything you
need to trace the permissions of an object...

I have no idea if it's something that even half-aligns with the internal
permission model/code...

a.

-- 
Aidan Van Dyk Create like a god,
ai...@highrise.ca   command like a king,
http://www.highrise.ca/   work like a slave.


signature.asc
Description: Digital signature


Re: [HACKERS] use of pg_stat_database

2009-06-30 Thread Merlin Moncure
On Tue, Jun 30, 2009 at 7:13 AM, abdelhak
benmohamedabdelhak.benmoha...@yahoo.fr wrote:
 Hellow,



 I like to track the number of committed transaction for my database

 So I use the following command

 Select * from pg_stat_database;



 The column xact_commit gives me the number of transaction committed



 But if I execute the same command another time, the column xact_commit gives
 me an other number.



 Between the first select and the second select I don’t execute any
 transaction on my database



 Please, can any one help me to understanding the cause of the change?

try turning on statement logging (log_statement='all').  please post
qa time questions to -general.

merlin

-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers


Re: [HACKERS] 8.5 development schedule

2009-06-30 Thread Robert Haas
On Tue, Jun 30, 2009 at 8:12 AM, Greg Starkgsst...@mit.edu wrote:
 On Tue, Jun 30, 2009 at 1:04 PM, Robert Haasrobertmh...@gmail.com wrote:
 If Hot Standby were ready to be applied, I would be all in favor of
 that, but in fact I don't believe that's the case.  There's been no
 movement on Hot Standby since February

 Well Simon was happy with it as submitted so unless people are reading
 the patch and giving feedback or using it and running into problems I
 wouldn't really expect him to make changes.

The last substantive email I can find on this topic is:

http://archives.postgresql.org/message-id/1235644369.16176.480.ca...@ebony.2ndquadrant

I would summarize that as saying that Simon was happy with the patch,
but Heikki was not.  Since I think it will be Heikki who ultimately
commits this, the fact that he doesn't feel that it's ready for
prime-time is a pretty important fact that we shouldn't overlook.
Now, it's possible that Heikki has changed his mind, or it's possible
that given where we are in the development cycle he'd be OK comitting
it as-is to 8.5, or it's possible that some work has been done in the
background and there's a committable version now, in which case -
great!  Or, alternatively, if Heikki wants to sit out the next
CommitFest so that he can work on (and hopefully commit) Hot Standby,
also great!  But I don't see why other patches can't be committed in
the meantime, assuming for the moment that they're not things which
are likely to create massive merge problems (then again, the pgindent
run has probably done that already).

In any case, we probably need some weigh-in from Heikki and Simon on
their plans for Hot Standby before we make any decisions...

 That's part of the problem wmith leaving patches outside the source
 tree while they're being developed. It's part of what led us to
 suddenly have a massive reviewing job and making big changes in the
 final commitfest.

Yep. Figuring out what to do about that is a hard problem.

...Robert

-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers


Re: [HACKERS] 8.5 development schedule

2009-06-30 Thread Kevin Grittner
Robert Haas robertmh...@gmail.com wrote: 
 
 Waiting until September for the first CommitFest seems like a really
 bad idea.   We already have almost 40 patches on the wiki page, and
 there are some that haven't been added yet: I suspect we will have
 over 50 in another week, and maybe closer to 60.  If we wait two
 months, we're likely to have 100 patches or more, which will be a
 reviewing effort that I don't like to think about.  It will also
 increase the number of patches that collide in mid-air.  So at the
 very latest, the first CommitFest should start August 1.
 
 However, if anything, I think if anything we should go the other way
 and start the first CommitFest July 15th.
 
I'm curious what the counter-arguments to this are.  Is it
review-fatigue from getting the release out, or is there an economy of
scale to building up a 100 patches before starting to review?  Would
reviewing these get some contributors moving again, thus boosting the
total work hours available for the 8.5 release?  Would it pull people
off of WIP?
 
-Kevin

-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers


Re: [HACKERS] 8.5 development schedule

2009-06-30 Thread Peter Eisentraut
On Tuesday 30 June 2009 16:50:55 Kevin Grittner wrote:
  However, if anything, I think if anything we should go the other way
  and start the first CommitFest July 15th.

 I'm curious what the counter-arguments to this are.  Is it
 review-fatigue from getting the release out, or is there an economy of
 scale to building up a 100 patches before starting to review?  Would
 reviewing these get some contributors moving again, thus boosting the
 total work hours available for the 8.5 release?  Would it pull people
 off of WIP?

Well, think about what could happen if we go this way.  What you basically 
have here are people who have essentially ignored the commitfest and beta 
mandates and worked on new patches.  And they now get to say, because we 
already have enough patches, let's start the commit fest early.  And then the 
same people might ignore the commitfest mandate again and produce another 100 
patches by the time this commit fest ends.  So let's start the next commit 
fest right after this one.

So, I think, the schedule should be balanced, reflective of our desired 
development method, independent of momentary circumstances, and certainly not 
unduly influenced by those who chose to ignore the very same schedule.

These points are debatable, but then you are almost debating the point of 
having a schedule at all.

-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers


Re: [HACKERS] 8.5 development schedule

2009-06-30 Thread Nikhil Sontakke
Hi,


 However, if anything, I think if anything we should go the other way
 and start the first CommitFest July 15th.

 I'm curious what the counter-arguments to this are.  Is it
 review-fatigue from getting the release out, or is there an economy of
 scale to building up a 100 patches before starting to review?  Would
 reviewing these get some contributors moving again, thus boosting the
 total work hours available for the 8.5 release?  Would it pull people
 off of WIP?


Agreed, especially for some of the largish WIP (like the partitioning
work for example) patches, a little effort being spent by our
reviewers on agreeing (or disagreeing right now!) on the
direction-implementation being pursued will go a long way in pulling
those efforts off from the WIP mode.

ISTM that identifying and quantifying a certain effort as small,
medium, large and having an appropriate review mechanism in place
might help too.

Regards,
Nikhils
-- 
http://www.enterprisedb.com

-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers


Re: [HACKERS] 8.5 development schedule

2009-06-30 Thread Kevin Grittner
Peter Eisentraut pete...@gmx.net wrote: 
 
 Well, think about what could happen if we go this way.  What you
 basically have here are people who have essentially ignored the
 commitfest and beta mandates and worked on new patches.  And they
 now get to say, because we already have enough patches, let's start
 the commit fest early.
 
Well, patches started going onto the wiki page for this commit fest
over seven months ago.  Early review takes on a different meaning in
this context.  I think the basic problem with the schedule at this
point is that we're releasing six months past the planned date; kinda
throws things off.  The question is how to get back on track and avoid
that for 8.5.
 
You probably have a point in that some of the patches came from people
who might have been able to help more in the review and commit
process, but I think some people lack the confidence to take on that
role; and with the features that dragged out the release half-way to
what would have been our next release date, there probably aren't many
who could have made useful contributions to the review process.
 
-Kevin

-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers


Re: [HACKERS] 8.5 development schedule

2009-06-30 Thread Robert Haas
On Tue, Jun 30, 2009 at 10:11 AM, Peter Eisentrautpete...@gmx.net wrote:
 On Tuesday 30 June 2009 16:50:55 Kevin Grittner wrote:
  However, if anything, I think if anything we should go the other way
  and start the first CommitFest July 15th.

 I'm curious what the counter-arguments to this are.  Is it
 review-fatigue from getting the release out, or is there an economy of
 scale to building up a 100 patches before starting to review?  Would
 reviewing these get some contributors moving again, thus boosting the
 total work hours available for the 8.5 release?  Would it pull people
 off of WIP?

 Well, think about what could happen if we go this way.  What you basically
 have here are people who have essentially ignored the commitfest and beta
 mandates and worked on new patches.

Well, the only person who has proposed this so far is me, and I don't
think there can be more than three or four people who are not
committers who put in as much work into the November CommitFest as I
did, and I've already volunteered to do more work for the next
CommitFest.  I'm not exactly sure what the beta mandate is, and I
admit that I haven't done much beta-testing, but even just in the
course of developing the patches I've submitted recently I've found
several bugs which were fixed for 8.4 (try searching your -committers
email for Robert Haas).  I probably would not have found those bugs
if I had just set out to test 8.4, because I wouldn't have thought
of those things, so I really feel that I have done as well as I can.
If you disagree, we should discuss, perhaps off-list.

At any rate, the idea that nobody is should do any development during
the seven months for which the tree has been in feature freeze doesn't
seem like a very good one.  If we accept that proposition, then
presumably nobody should also do any development during August,
October, or December, since those months are set aside for
CommitFests.  Therefore, during calendar year 2009, there will be a
total of 91 days during which people are allowed to work on their own
patches, specifically July 1-July 31, September 1-September 30, and
November 1-30.  How are we going to move this project forward by
telling people that they're only allowed to do development 25% of the
days out of the year?  And even if we do accept that proposition, my
proposal to back everything up 15 days wouldn't change the total
number of development days: it would add the second half of December
at the expense of the second half of July.

I'm of the opinion that the way that we should be striving to maximize
the amount of useful development that gets done, and I think the way
to do that is to give people prompt feedback on their patches.  A lot
of the people who have submitted patches for the next CommitFest are
first-time or occasional contributors who may already have lost
interest in the project; waiting longer to review those patches is not
going to increase the chances that those people will eventually get
more involved, either as patch authors or as patch reviewers.  Others
are people like Fujii Masao, Kevin Grittner, and Pavan Deolasee who, I
venture to say, have done enough work on this project to deserve
having their contributions reviewed in a timely fashion, regardless of
exactly when they choose to do their development.  There may be a few
people who aren't carrying the burden of contributing back to the
community, but I don't think it's anything like a majority.

 And they now get to say, because we
 already have enough patches, let's start the commit fest early.  And then the
 same people might ignore the commitfest mandate again and produce another 100
 patches by the time this commit fest ends.  So let's start the next commit
 fest right after this one.

I don't think we have enough patches; I'm not sure what that means.
Enough for what?  It would be great if we had more patches, assuming
that they were of good quality and did useful things to advance
PostgreSQL.  What I think we have is a lot of people who are waiting
for feedback, and we should try to give them some.  I also know that
reviewing 60 patches for the November CommitFest was a ton of work,
and the reviewers (including the committers) ran out of steam well
before we got done.  That, and not any desire to jump the queue, is
the reason why I would like to get the reviewing process started
before the patch list grows unmanageably large.

...Robert

-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers


Re: [HACKERS] 8.5 development schedule

2009-06-30 Thread Tom Lane
Robert Haas robertmh...@gmail.com writes:
 What I think we have is a lot of people who are waiting
 for feedback, and we should try to give them some.  I also know that
 reviewing 60 patches for the November CommitFest was a ton of work,
 and the reviewers (including the committers) ran out of steam well
 before we got done.  That, and not any desire to jump the queue, is
 the reason why I would like to get the reviewing process started
 before the patch list grows unmanageably large.

Yeah.  In core's private discussion of this, I too was arguing for
running a CommitFest ASAP, in order to have some motion on the existing
patch backlog.  I don't know that we'd actually end up committing many,
but we need to provide feedback so people can take the next steps.
People who *were* following the project calendar (like me for instance)
have been largely ignoring the 8.5 queue, so many of those patches are
just sitting out there without any substantive comment.

Right at the moment I imagine a large fraction of those patches are
broken anyway by the recent pgindent run --- has anyone checked?

regards, tom lane

-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers


Re: [HACKERS] 8.5 development schedule

2009-06-30 Thread Tom Lane
Greg Stark gsst...@mit.edu writes:
 I would like to propose a different strategy. Instead of always
 tackling all the smaller patches and leaving the big patches for last,
 I would suggest we start with Hot Standby.

 In fact I would suggest as Hot Standby has already gotten a first pass
 review that we consider applying it on day 1.

Hot Standby wasn't ready for 8.4, and it's not any more ready now,
because nothing has been done on it since then.  What Simon told us
at the developers' meeting is that he needs to find someone who will
bankroll further work on it.  I hope that will happen, but we can't
design the 8.5 schedule around the assumption that it will.

I'm also not prepared to push a large and unstable feature into the tree
on the hope that it will get fixed.  The general consensus among -core,
and I think most of -hackers as well, is that we want to try to keep CVS
HEAD pretty stable, so that developers aren't fighting each others'
bugs.  This also ties into the alpha releases concept that Peter
mentioned --- if HEAD isn't stable then we can hardly put out a testable
alpha release.

regards, tom lane

-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers


Re: [HACKERS] 8.5 development schedule

2009-06-30 Thread Tom Lane
Peter Eisentraut pete...@gmx.net writes:
 Now that 8.4.0 is out the door, development for 8.5devel will be opened any 
 day now.  But we haven't discussed the development timeline so far.  The core
 team has several proposals:
 [ details snipped ]

ISTM there are two critical decisions here: when's the first commitfest,
and when's the target release date?  There's already been considerable
chatter about the first decision, but not much about the second.

I would like to propose aiming for a release around April/May 2010 ...
in time for PGCon if you like, but the main point is to have it out
before people start disappearing for summer break.  We've already run
into problems with scheduling the 8.4 release because of that.

Or we could slide the target release date into the fall, but it seemed
to me that the spring release timeframe worked better (or would have if
we'd been able to meet it fully).

Of the schedules Peter mentioned, the only one that has a realistic
chance of releasing before June is the one with the final commitfest
starting Feb 1.  Even then, we need to do something to prevent that
fest from expanding the way the last 8.4 fest did.  The core committee
speculated a bit about instituting a rule like major patches must
be submitted into a CF before the last one; the last one will only
accept resubmissions and small patches.  But then you have to draw
the line between major and minor patches.

Actually, we did have a rule in the 8.4 cycle specifying that we
reserved the right to reject large patches during the final CF.
The problem was that in practice we failed to get up the gumption
to say no and make it stick.  This has been a persistent project
management failing for many years, and I'm not sure how we change
that dynamic.  There's always somebody cheerleading for the
latest-and-greatest patch...

regards, tom lane

-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers


Re: [HACKERS] 8.5 development schedule

2009-06-30 Thread Joshua D. Drake
On Tue, 2009-06-30 at 12:11 -0400, Tom Lane wrote:

 I'm also not prepared to push a large and unstable feature into the tree
 on the hope that it will get fixed.  The general consensus among -core,
 and I think most of -hackers as well, is that we want to try to keep CVS
 HEAD pretty stable, so that developers aren't fighting each others'
 bugs.  This also ties into the alpha releases concept that Peter
 mentioned --- if HEAD isn't stable then we can hardly put out a testable
 alpha release.

+1

Sincerely,

Joshua D. Drake

-- 
PostgreSQL - XMPP: jdr...@jabber.postgresql.org
   Consulting, Development, Support, Training
   503-667-4564 - http://www.commandprompt.com/
   The PostgreSQL Company, serving since 1997


-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers


Re: [HACKERS] 8.5 development schedule

2009-06-30 Thread Joshua D. Drake
On Tue, 2009-06-30 at 12:29 -0400, Tom Lane wrote:
 Peter Eisentraut pete...@gmx.net writes:
  Now that 8.4.0 is out the door, development for 8.5devel will be opened any 
  day now.  But we haven't discussed the development timeline so far.  The 
  core
  team has several proposals:
  [ details snipped ]
 
 ISTM there are two critical decisions here: when's the first commitfest,
 and when's the target release date?  There's already been considerable
 chatter about the first decision, but not much about the second.
 
 I would like to propose aiming for a release around April/May 2010 ...
 in time for PGCon if you like, but the main point is to have it out
 before people start disappearing for summer break.  We've already run
 into problems with scheduling the 8.4 release because of that.

I generally agree with this however why not just have a When it is
done?. Let's hit some commitfests and some time near the end of the
year start discussing Beta and release.

We are not a company. We don't have a deadline. Why can't we just
develop and say, Yeah, this looks like it would make a substantive
release.?

Joshua D. Drake

-- 
PostgreSQL - XMPP: jdr...@jabber.postgresql.org
   Consulting, Development, Support, Training
   503-667-4564 - http://www.commandprompt.com/
   The PostgreSQL Company, serving since 1997


-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers


Re: [HACKERS] 8.5 development schedule

2009-06-30 Thread Tom Lane
Joshua D. Drake j...@commandprompt.com writes:
 On Tue, 2009-06-30 at 12:29 -0400, Tom Lane wrote:
 I would like to propose aiming for a release around April/May 2010 ...
 in time for PGCon if you like, but the main point is to have it out
 before people start disappearing for summer break.  We've already run
 into problems with scheduling the 8.4 release because of that.

 I generally agree with this however why not just have a When it is
 done?. Let's hit some commitfests and some time near the end of the
 year start discussing Beta and release.

 We are not a company. We don't have a deadline. Why can't we just
 develop and say, Yeah, this looks like it would make a substantive
 release.?

Well, then you might as well not have a schedule at all.  The point of
setting up a schedule is not to have a deadline that we must meet or
die trying (and certainly not to ship whether it's ready or not, as
a certain other OS database has been accused of doing).  Rather, the
point of this exercise is to give individual developers a framework
to plan in.  Without a target date it's tough to decide what is
reasonable to work on for 8.5.

regards, tom lane

-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers


Re: [HACKERS] dependencies for generated header files

2009-06-30 Thread Alvaro Herrera
Robert Haas escribió:

 Woops.  It seems that patch generates some warnings on a vpath build
 which I failed to notice.  Corrected version that guards against same
 is attached.

Interestingly, this patch causes diffstat (at least my version of it) to
attribute the line additions to src/backend/catalog/dependency.c instead
of the new file ...

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

-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers


Re: [HACKERS] 8.5 development schedule

2009-06-30 Thread Joshua D. Drake
On Tue, 2009-06-30 at 12:37 -0400, Tom Lane wrote:

  We are not a company. We don't have a deadline. Why can't we just
  develop and say, Yeah, this looks like it would make a substantive
  release.?
 
 Well, then you might as well not have a schedule at all.  The point of
 setting up a schedule is not to have a deadline that we must meet or
 die trying (and certainly not to ship whether it's ready or not, as
 a certain other OS database has been accused of doing).  Rather, the
 point of this exercise is to give individual developers a framework
 to plan in.  Without a target date it's tough to decide what is
 reasonable to work on for 8.5.

Right, I get that. That is why I mentioned the start discussing at the
end of the year. The idea being, we really don't know what's going to
hit. So we set a review date of work being done. Say December 1st. On
December 1st we look at what is in, what appears to be coming and then
determine a potential release date.

We already push and pull our release dates based are what in the queue,
we just do so informally. Why not just make it part of the process? That
way we are being up front and saying, Yeah, we have no idea. We will
review in 6 months and that is when we decide our target.

Shrug...

Sincerely,

Joshua D. Drake


 
   regards, tom lane
 
-- 
PostgreSQL - XMPP: jdr...@jabber.postgresql.org
   Consulting, Development, Support, Training
   503-667-4564 - http://www.commandprompt.com/
   The PostgreSQL Company, serving since 1997


-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers


Re: [HACKERS] 8.5 development schedule

2009-06-30 Thread Robert Haas
On Tue, Jun 30, 2009 at 12:37 PM, Tom Lanet...@sss.pgh.pa.us wrote:
 Joshua D. Drake j...@commandprompt.com writes:
 On Tue, 2009-06-30 at 12:29 -0400, Tom Lane wrote:
 I would like to propose aiming for a release around April/May 2010 ...
 in time for PGCon if you like, but the main point is to have it out
 before people start disappearing for summer break.  We've already run
 into problems with scheduling the 8.4 release because of that.

 I generally agree with this however why not just have a When it is
 done?. Let's hit some commitfests and some time near the end of the
 year start discussing Beta and release.

 We are not a company. We don't have a deadline. Why can't we just
 develop and say, Yeah, this looks like it would make a substantive
 release.?

 Well, then you might as well not have a schedule at all.  The point of
 setting up a schedule is not to have a deadline that we must meet or
 die trying (and certainly not to ship whether it's ready or not, as
 a certain other OS database has been accused of doing).  Rather, the
 point of this exercise is to give individual developers a framework
 to plan in.  Without a target date it's tough to decide what is
 reasonable to work on for 8.5.

I agree.  On the other hand, I think all of the proposed schedules are
somewhat optimistic about how long the final release will take.  We
started the final CommitFest for 8.4 on November 1st and are set to
release July 1st.  The proposed schedule for next time involves
starting the final CommitFest three months later and releasing two
months earlier.  I'd like to think that with a little more discipline
around CommitFests we can tighten things up a little, but it seems
excessively optimistic to think that we're going to cut down from
seven months to two.

I would propose to start CommitFests July 15th, September 15th,
November 15th, and January 15th, planning all but the last to be one
month long.  The last CommitFest I would plan on closing up by March
1st, with release hopefully by June 1st.

As for thresholds, I'd propose that we measure the size of patches
using diff -u | diffstat.  If the number of insertions plus the
number of deletions is = 1000, then the patch is not eligible for the
final CommitFest unless it was submitted for the penultimate
CommitFest.  This obvious discriminates against patches with a large
footprint that are not very invasive and in favor of those with a
small footprint that are more destabilizing, but it's a clean line in
the sand, and I think having such a line is better than trying to
apply human judgment to every case.

...Robert

-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers


Re: [HACKERS] 8.5 development schedule

2009-06-30 Thread Tom Lane
Joshua D. Drake j...@commandprompt.com writes:
 We already push and pull our release dates based are what in the queue,
 we just do so informally. Why not just make it part of the process? That
 way we are being up front and saying, Yeah, we have no idea. We will
 review in 6 months and that is when we decide our target.

I think we used to do it more or less like that, but people didn't like
it because they couldn't do any long-range planning.

regards, tom lane

-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers


[HACKERS] Inconsistent Errors on Row Comparisons

2009-06-30 Thread David E. Wheeler

Howdy,

I'm working on functions to compare result sets for pgTAP. In the  
process, I found what appears to be an inconsistency in error handling  
when comparing incomparable results. I'm testing in 8.4RC2, but the  
issue may go back for all I know. Perhaps it's intentional?


This is what I see. This query:

VALUES (1, 2), (3, 4) EXCEPT VALUES (1, 'foo'), (3, 'bar');

Throws 42804 DATATYPE MISMATCH. Meanwhile, this query:

VALUES (1, 2), (3, 4) EXCEPT VALUES (1), (3);

Throws 42601 SYNTAX ERROR. It'd be nice if the error was a bit more  
specific (maybe tell me that there are different numbers of columns,  
perhaps 54011?), but at least it's distinct from the data type mismatch.


However, when I do a row-by-row comparison of rows in cursors, I get a  
different behavior. The attached test case has the details, but  
assuming a function `restults_eq(refcursor, refcursor)` that does the  
row-by-row comparison, this code:


DECLARE cwant CURSOR FOR VALUES (1, 2), (3, 4);
DECLARE chave CURSOR FOR VALUES (1, 'foo'), (3, 'bar');
SELECT results_eq( 'cwant'::refcursor, 'chave'::refcursor );

Throws 42804 DATATYPE MISMATCH, as expected. On the other hand, this  
code:


DECLARE cwant2 CURSOR FOR VALUES (1, 2), (3, 4);
DECLARE chave2 CURSOR FOR VALUES (1), (3);
SELECT results_eq( 'cwant2'::refcursor, 'chave2'::refcursor );

Also throws Throws 42804 DATATYPE MISMATCH. For consistency with the  
row comparisons done by EXCEPT and friends, should it not throw 42601  
SYNTAX ERROR?


Thanks,

David




try.sql
Description: Binary data





-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers


Re: [HACKERS] 8.5 development schedule

2009-06-30 Thread Tom Lane
Robert Haas robertmh...@gmail.com writes:
 I agree.  On the other hand, I think all of the proposed schedules are
 somewhat optimistic about how long the final release will take.  We
 started the final CommitFest for 8.4 on November 1st and are set to
 release July 1st.  The proposed schedule for next time involves
 starting the final CommitFest three months later and releasing two
 months earlier.  I'd like to think that with a little more discipline
 around CommitFests we can tighten things up a little, but it seems
 excessively optimistic to think that we're going to cut down from
 seven months to two.

Yeah.  What I think the 8.4 cycle taught us is that commitfests are a
good thing but they won't magically eliminate the need to say no at
the end.  If we are willing to be sufficiently hardnosed about saying
no, we can make the final commitfest short.  Otherwise it's going to
drag on just like this one did.

Keeping the final-CF-to-release period short is desirable for the
reasons already mentioned --- we don't want to shut down development
for a long period.  So even if it's optimistic, I think we should
write the schedule that way.  We can be certain that the period won't
last *less* time than scheduled :-(

 I would propose to start CommitFests July 15th, September 15th,
 November 15th, and January 15th, planning all but the last to be one
 month long.  The last CommitFest I would plan on closing up by March
 1st, with release hopefully by June 1st.

Hmm.  If we drop the notion that CFs have to start on month boundaries,
that's actually not a bad schedule --- in particular, it keeps us away
from expecting much of anything to get done in the last half of
December.  I'd suggest setting the target release date to May 15
(pre-PGCon), as long as we're working with ides-of-whichever dates.

 As for thresholds, I'd propose that we measure the size of patches
 using diff -u | diffstat.  If the number of insertions plus the
 number of deletions is = 1000, then the patch is not eligible for the
 final CommitFest unless it was submitted for the penultimate
 CommitFest.  This obvious discriminates against patches with a large
 footprint that are not very invasive and in favor of those with a
 small footprint that are more destabilizing, but it's a clean line in
 the sand, and I think having such a line is better than trying to
 apply human judgment to every case.

Well, in the end it will come down to committers' judgements anyway;
if someone thinks a patch is ready it will probably go in, regardless
of size.  But this gives us another tool for saying no, so I'm
agreeable ;-)

regards, tom lane

-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers


Re: [HACKERS] Inconsistent Errors on Row Comparisons

2009-06-30 Thread Tom Lane
David E. Wheeler da...@kineticode.com writes:
 This is what I see. This query:

  VALUES (1, 2), (3, 4) EXCEPT VALUES (1, 'foo'), (3, 'bar');

 Throws 42804 DATATYPE MISMATCH.

Yeah ...

 Meanwhile, this query:

  VALUES (1, 2), (3, 4) EXCEPT VALUES (1), (3);

 Throws 42601 SYNTAX ERROR.

Not for me:

regression=# VALUES (1, 2), (3, 4) EXCEPT VALUES (1), (3);
ERROR:  each EXCEPT query must have the same number of columns

regards, tom lane

-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers


Re: [HACKERS] Inconsistent Errors on Row Comparisons

2009-06-30 Thread David E. Wheeler

On Jun 30, 2009, at 10:28 AM, Tom Lane wrote:


VALUES (1, 2), (3, 4) EXCEPT VALUES (1), (3);



Throws 42601 SYNTAX ERROR.


Not for me:

regression=# VALUES (1, 2), (3, 4) EXCEPT VALUES (1), (3);
ERROR:  each EXCEPT query must have the same number of columns


Turn on verbosity:

try=# \set VERBOSITY verbose
try=# VALUES (1, 2), (3, 4) EXCEPT VALUES (1), (3);
ERROR:  42601: each EXCEPT query must have the same number of columns
LOCATION:  transformSetOperationTree, analyze.c:1502

42601 is a SYNTAX ERROR.

The inconsistency when comparing records from cursors stands, too.

Best,

David



--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers


Re: [HACKERS] foreign.h is not installed

2009-06-30 Thread Tom Lane
Itagaki Takahiro itagaki.takah...@oss.ntt.co.jp writes:
 Header file include/foreign/foreign.h is not installed in 8.4.0.
 Did we forget to add subdir foreign to Makefile?

Applied, thanks.

regards, tom lane

-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers


Re: [HACKERS] 8.5 development schedule

2009-06-30 Thread Kevin Grittner
Tom Lane t...@sss.pgh.pa.us wrote:
 
 I think we used to do it more or less like that, but people
 didn't like it because they couldn't do any long-range planning.
 
Well, obviously the 8.4 release cycle did little to help them.
 
As has already been observed, there is a crying need to say no at
some point to get a release out.
 
It might actually help to do that on big patches if we don't let too
many tiny ones accumulate.  I seem to remember the argument being tossed
about that we might as well keep working on this one because there's
all these others to wrap up.
 
-Kevin


-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers


Re: [HACKERS] 8.5 development schedule

2009-06-30 Thread Heikki Linnakangas
Robert Haas wrote:
 In any case, we probably need some weigh-in from Heikki and Simon on
 their plans for Hot Standby before we make any decisions...

I'm planning to spend considerable amount of time reviewing and helping
with hot standby and synchronous replication, but someone else will have
to take the lead.

-- 
  Heikki Linnakangas
  EnterpriseDB   http://www.enterprisedb.com

-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers


Re: [HACKERS] Inconsistent Errors on Row Comparisons

2009-06-30 Thread Tom Lane
David E. Wheeler da...@kineticode.com writes:
 On Jun 30, 2009, at 10:28 AM, Tom Lane wrote:
 Not for me:
 
 regression=# VALUES (1, 2), (3, 4) EXCEPT VALUES (1), (3);
 ERROR:  each EXCEPT query must have the same number of columns

 Turn on verbosity:

 try=# \set VERBOSITY verbose
 try=# VALUES (1, 2), (3, 4) EXCEPT VALUES (1), (3);
 ERROR:  42601: each EXCEPT query must have the same number of columns
 LOCATION:  transformSetOperationTree, analyze.c:1502

 42601 is a SYNTAX ERROR.

Oh, you're complaining about the SQLSTATE not the error text.
I guess that to the extent that any actual thought went into it
(which may not have been much) the reasoning was that you'd have to
change the syntax of your query in order to fix this.  But I guess
a case could be made for ERRCODE_DATATYPE_MISMATCH there.  I definitely
do not agree with your suggestion of ERRCODE_TOO_MANY_COLUMNS --- that's
from Program Limit Exceeded category which is 100% the wrong thing.

The other errors are coming from within record_eq(), where what it's
got is two composite values that don't match as to structure.  It
seems fairly clear that DATATYPE_MISMATCH is the right thing there.

So if we feel that these errors should match, I'd vote for changing to
DATATYPE_MISMATCH, not changing to SYNTAX_ERROR.  But I'm not entirely
convinced that there's a reason to make them match.  I'm not sure that
they really have the same cause when you look at it concretely.

regards, tom lane

-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers


Re: [HACKERS] 8.5 development schedule

2009-06-30 Thread Heikki Linnakangas
Merlin Moncure wrote:
 Given that there is also a lot of work on synchronous replication, is
 it better to get the HS in so the SR stuff can use that as a baseline,
 or to triage in both patches together?

Whichever finishes first. Although they're very useful together, there
is little if any code-level dependency between them. It would be
dangerous to have one wait for the other, as one or the other could well
be delayed for some reason. We can't even be sure that both are finished
in time for 8.5.

-- 
  Heikki Linnakangas
  EnterpriseDB   http://www.enterprisedb.com

-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers


Re: [HACKERS] Inconsistent Errors on Row Comparisons

2009-06-30 Thread David E. Wheeler

]On Jun 30, 2009, at 11:00 AM, Tom Lane wrote:


Oh, you're complaining about the SQLSTATE not the error text.
I guess that to the extent that any actual thought went into it
(which may not have been much) the reasoning was that you'd have to
change the syntax of your query in order to fix this.  But I guess
a case could be made for ERRCODE_DATATYPE_MISMATCH there.  I  
definitely
do not agree with your suggestion of ERRCODE_TOO_MANY_COLUMNS ---  
that's

from Program Limit Exceeded category which is 100% the wrong thing.


Yeah, that was just an aside. I liked that I got different errors when  
there were different numbers of columns than when the data types of  
the columns disagreed. I'm not sure that SYNTAX ERROR is a great code  
for when the count disagrees, but at least it's distinct from the  
column data type error.


And I'm going on SQLSTATE here because I'm doing exception handling in  
pl/PgSQL and want to handle the two errors differently.



The other errors are coming from within record_eq(), where what it's
got is two composite values that don't match as to structure.  It
seems fairly clear that DATATYPE_MISMATCH is the right thing there.


I see, it's thinking of the two row objects as distinct types, rather  
than complaining about different numbers of columns.



So if we feel that these errors should match, I'd vote for changing to
DATATYPE_MISMATCH, not changing to SYNTAX_ERROR.  But I'm not entirely
convinced that there's a reason to make them match.  I'm not sure that
they really have the same cause when you look at it concretely.


Okay. I'll have to see what I can do with SQLERRM then. But isn't it  
localized?


Best,

David

--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers


Re: [HACKERS] Inconsistent Errors on Row Comparisons

2009-06-30 Thread Tom Lane
David E. Wheeler da...@kineticode.com writes:
 Yeah, that was just an aside. I liked that I got different errors when  
 there were different numbers of columns than when the data types of  
 the columns disagreed. I'm not sure that SYNTAX ERROR is a great code  
 for when the count disagrees, but at least it's distinct from the  
 column data type error.

 And I'm going on SQLSTATE here because I'm doing exception handling in  
 pl/PgSQL and want to handle the two errors differently.

So really what you're wishing for is that we treat different-numbers-of-
columns as a whole new SQLSTATE inside category 42.  What's the argument
for needing to handle this differently from DATATYPE_MISMATCH?

 Okay. I'll have to see what I can do with SQLERRM then. But isn't it  
 localized?

Yeah, it is.  You don't really want code looking at that to decide what
to do, if you can possibly avoid it.  It's intended for human consumption.

regards, tom lane

-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers


Re: [HACKERS] Inconsistent Errors on Row Comparisons

2009-06-30 Thread David E. Wheeler

On Jun 30, 2009, at 11:18 AM, Tom Lane wrote:

So really what you're wishing for is that we treat different-numbers- 
of-
columns as a whole new SQLSTATE inside category 42.  What's the  
argument

for needing to handle this differently from DATATYPE_MISMATCH?


For my results_eq() in pgTAP, it could output different diagnostics.  
I'm already doing this for the set_eq() function I wrote, which uses  
EXCEPT. For that function, if you pass two statements with different  
numbers of columns, pgTAP says:


# Failed test 148
# Number of columns differs between queries

While for a call with the same numbers of columns but different data  
types (say int,text and inet,text), pgTAP says:


# Failed test 149
# Column types differ between queries

Essentially, while on a row object-level, they are different types,  
the caller of my function doesn't know that it's comparing rows, just  
that it's comparing result sets. So I like to give as much information  
as possible about the difference in the result sets of the queries.  
Hell, ideally it'd actually say something like:


# Failed test 148
# Number of columns differs between queries
# have: 4 columns
# want: 3 columns

# Failed test 149
# Column types differ between queries
# have: (integer,text)
# want: (inet,text)

This gives the tester a lot of information to help diagnose the test  
failure. I don't know that I can gather that kind of information,  
though.



Okay. I'll have to see what I can do with SQLERRM then. But isn't it
localized?


Yeah, it is.  You don't really want code looking at that to decide  
what
to do, if you can possibly avoid it.  It's intended for human  
consumption.


As I thought, thanks.

Best,

David


--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers


Re: [HACKERS] 8.5 development schedule

2009-06-30 Thread Alvaro Herrera
Kevin Grittner wrote:

 It might actually help to do that on big patches if we don't let too
 many tiny ones accumulate.  I seem to remember the argument being tossed
 about that we might as well keep working on this one because there's
 all these others to wrap up.

Yeah, and the people who was able to work on the small patches was too
busy helping on the bigger items.

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

-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers


Re: [HACKERS] Inconsistent Errors on Row Comparisons

2009-06-30 Thread David E. Wheeler

On Jun 30, 2009, at 11:27 AM, David E. Wheeler wrote:


   # Failed test 148
   # Number of columns differs between queries
   # have: 4 columns
   # want: 3 columns

   # Failed test 149
   # Column types differ between queries
   # have: (integer,text)
   # want: (inet,text)

This gives the tester a lot of information to help diagnose the test  
failure. I don't know that I can gather that kind of information,  
though.


Actually, I can for `set_eq()`, since it creates a temporary table, I  
can just get the list of types from the system catalog. Is there a way  
to get a RECORD object to tell me what data types it contains? Then I  
could use the same error for both situations, since the difference in  
the number of columns is implicit in the list of data types:


   # Failed test 148
   # Column types differ between queries
   # have: (integer,text,integer)
   # want: (inet,text)

   # Failed test 149
   # Column types differ between queries
   # have: (integer,text)
   # want: (inet,text)

Thanks,

David

--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers


Re: [HACKERS] 8.5 development schedule

2009-06-30 Thread Josh Berkus



I would propose to start CommitFests July 15th, September 15th,
November 15th, and January 15th, planning all but the last to be one
month long.  The last CommitFest I would plan on closing up by March
1st, with release hopefully by June 1st.


This sounds good to me.  Anyone object?


As for thresholds, I'd propose that we measure the size of patches
using diff -u | diffstat.  If the number of insertions plus the
number of deletions is= 1000, then the patch is not eligible for the
final CommitFest unless it was submitted for the penultimate
CommitFest.  This obvious discriminates against patches with a large
footprint that are not very invasive and in favor of those with a
small footprint that are more destabilizing, but it's a clean line in
the sand, and I think having such a line is better than trying to
apply human judgment to every case.


I think we need human judgement.  You could easily make a 4-line change 
to a macro or one of the planner files which would require endless 
debugging.


The deciding people on big patches for the final commitfest should be 
a combination of the commitfest managers and the core team.  And we 
should weed out the disqualified before January 15.


--
Josh Berkus
PostgreSQL Experts Inc.
www.pgexperts.com

--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers


Re: [HACKERS] 8.5 development schedule

2009-06-30 Thread Josh Berkus

On 6/29/09 10:33 PM, Peter Eisentraut wrote:

Now that 8.4.0 is out the door, development for 8.5devel will be opened any
day now.  But we haven't discussed the development timeline so far.  The core
team has several proposals:

CommitFest  Alpha
Aug. 1  Sept. 1
Oct. 1  Nov. 1
Dec. 1  Jan ~~ 5
Feb. 1  March 4

Release ~ May 2010

This puts us on track for a release at the same time next year, maybe a little
earlier.


One thing Peter forgot to mention here is that the next-to-last 
commitfest is the *last* commitfest for new major features.  For the 
*last* commitfest, any patch introduced either has to be a resubmission 
of something we've seen at a prior CF, or has to be very small (i.e. 
not many lines/files, no side effects, no API or defined standard API).


This makes the next-to-last CF our biggest CF.

--
Josh Berkus
PostgreSQL Experts Inc.
www.pgexperts.com

--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers


Re: [HACKERS] Inconsistent Errors on Row Comparisons

2009-06-30 Thread Tom Lane
David E. Wheeler da...@kineticode.com writes:
 On Jun 30, 2009, at 11:18 AM, Tom Lane wrote:
 What's the argument
 for needing to handle this differently from DATATYPE_MISMATCH?

 For my results_eq() in pgTAP, it could output different diagnostics.  

Well, that's not terribly compelling ;-).  I wouldn't have any big
objection to splitting out ERRCODE_COLUMN_COUNT_MISMATCH as a separate
SQLSTATE for 8.5 and beyond, but I doubt we'd consider back-patching
such a change.  It's not clear to me whether you need a solution that
works in back branches.

regards, tom lane

-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers


Re: [HACKERS] Inconsistent Errors on Row Comparisons

2009-06-30 Thread Tom Lane
David E. Wheeler da...@kineticode.com writes:
 Is there a way  
 to get a RECORD object to tell me what data types it contains?

Not at the SQL level.  Of course, if you're writing C, you can do
something similar to what record_eq and friends do.

regards, tom lane

-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers


Re: [HACKERS] Inconsistent Errors on Row Comparisons

2009-06-30 Thread David Fetter
On Tue, Jun 30, 2009 at 11:27:20AM -0700, David Wheeler wrote:
 On Jun 30, 2009, at 11:18 AM, Tom Lane wrote:

 So really what you're wishing for is that we treat different-numbers- 
 of-
 columns as a whole new SQLSTATE inside category 42.  What's the  
 argument
 for needing to handle this differently from DATATYPE_MISMATCH?

 For my results_eq() in pgTAP, it could output different diagnostics. I'm 
 already doing this for the set_eq() function I wrote, which uses EXCEPT. 
 For that function, if you pass two statements with different numbers of 
 columns, pgTAP says:

 # Failed test 148
 # Number of columns differs between queries

 While for a call with the same numbers of columns but different data  
 types (say int,text and inet,text), pgTAP says:

 # Failed test 149
 # Column types differ between queries

 Essentially, while on a row object-level, they are different types, the 
 caller of my function doesn't know that it's comparing rows, just that 
 it's comparing result sets. So I like to give as much information as 
 possible about the difference in the result sets of the queries. Hell, 
 ideally it'd actually say something like:

 # Failed test 148
 # Number of columns differs between queries
 # have: 4 columns
 # want: 3 columns

Shouldn't that just read:

have: (int, int, text, point)
want: (int, int, text)

Cheers,
David.
-- 
David Fetter da...@fetter.org http://fetter.org/
Phone: +1 415 235 3778  AIM: dfetter666  Yahoo!: dfetter
Skype: davidfetter  XMPP: david.fet...@gmail.com

Remember to vote!
Consider donating to Postgres: http://www.postgresql.org/about/donate

-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers


Re: [HACKERS] 8.5 development schedule

2009-06-30 Thread Tom Lane
Josh Berkus j...@agliodbs.com writes:
 I would propose to start CommitFests July 15th, September 15th,
 November 15th, and January 15th, planning all but the last to be one
 month long.  The last CommitFest I would plan on closing up by March
 1st, with release hopefully by June 1st.

 This sounds good to me.  Anyone object?

I'd like to set the target before PGCon not after; so May 1 or May 15.
Otherwise +1.

 The deciding people on big patches for the final commitfest should be 
 a combination of the commitfest managers and the core team.  And we 
 should weed out the disqualified before January 15.

As you say, we should reject outright (at the start of the final CF)
anything that's clearly too big.  But in the final 8.4 CF it didn't
really become clear until later on that some things were not ready or
were too big to deal with.  We need to be more willing to swing the axe
later in the fest, rather than allowing it to drag on just a bit more
in the hopes of getting big feature X in.

regards, tom lane

-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers


Re: [HACKERS] 8.5 development schedule

2009-06-30 Thread Tom Lane
Josh Berkus j...@agliodbs.com writes:
 One thing Peter forgot to mention here is that the next-to-last 
 commitfest is the *last* commitfest for new major features.  For the 
 *last* commitfest, any patch introduced either has to be a resubmission 
 of something we've seen at a prior CF, or has to be very small (i.e. 
 not many lines/files, no side effects, no API or defined standard API).

We've been kicking around variations of that idea already.

As I mentioned in the core discussion, I'm a bit concerned that this
would have the effect of choking off development too soon.  We could
have a situation where nothing major is supposed to be getting worked
on from Nov 15 to mid-May, which seems much too long.  So very small
seems too strict.  Robert's suggestion of a 1000-line cutoff might be
workable though.

regards, tom lane

-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers


Re: [HACKERS] 8.5 development schedule

2009-06-30 Thread Richard Huxton

Kevin Grittner wrote:

Tom Lane t...@sss.pgh.pa.us wrote:
 

I think we used to do it more or less like that, but people
didn't like it because they couldn't do any long-range planning.
 
Well, obviously the 8.4 release cycle did little to help them.
 
As has already been observed, there is a crying need to say no at

some point to get a release out.
 
It might actually help to do that on big patches if we don't let too

many tiny ones accumulate.  I seem to remember the argument being tossed
about that we might as well keep working on this one because there's
all these others to wrap up.


Have you chaps considered a simple points system? Every patch would need 
 five minutes attention to triage it into one of: small (1 point), 
medium (2), large (10), huge (50 points - Sync Repl etc). First CF gets 
(say) 200 points, next 150, next 100, next 75. First-come, first-served 
- if your patch goes over the limit it goes in the next commit-fest.


--
  Richard Huxton
  Archonet Ltd

--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers


Re: [HACKERS] Multi-Dimensional Histograms

2009-06-30 Thread Nathan Boley
 I'm finding myself unable to follow all the terminology on this thead.
  What's dimension reduction?  What's PCA?

( Sorry for the jargon - thanks Josh )

 It feels like what you might need is statistics for colB (MCVs and/or a
 histogram) for certain particular values of colA.

Certainly - this is exactly what a multi-dimensional histogram would store.

 Unfortunately, in
 the general case the set of values of colA for which you need these
 statistics might be inconveniently large.


Which is why, in the general case, we need some sort of dimension reduction.

If we could say that, for instance, the distribution of colB is
roughly the same for all values of colA less than 100, and it is
roughly the same for all values of colA = 100, then we would have
effectively reduced the dimension from ndistinct(colB)*ndistinct(colA)
to 2*ndistinct(colB).

The multidimensional histogram in the above paper is somewhat akin to
what you suggested and I just described - it attempts to select
contiguous regions that are the same. PCA is a much different
approach, but it is still, broadly, a dimension reduction technique.

 At the end of the day, we cant do any dimension reduction unless the
 ordering encodes some sort of useful information, and the data type
 being in R^n is certainly no guarantee. Consider, for instance, the
 cross correlation of zip-codes and area codes - you would really want
 to order those by some geographic relation. I think that is why
 cross-column stats is so hard in the general case.

To clarify my response to Tom, directly above, if as in Robert's
example, all of the values in colA  100 were different than all of
the values  100 with respect to colB, then it is easy to represent
the structure in something manageable. Ie, we store two histograms for
colB: 1 for colA  100, one for colA  100. However, if there are the
same two classes in colB ( lets say C1 and C2 ) but rather than C1
being associated with values in colA  100, it is associated with 100
completely random values in colA ( ie 1, 22, 47, 89, 91, 92, 107, ...
) there is not a whole lot we can do besides storing a list of all of
those values. We could maybe use the ratio of classes to improve the
average plan choice, but you would still get a lot of bad plans.

Could anyone provide a concrete example ( or better yet a data set )
where this occurs?

-Nathan

-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers


Re: [HACKERS] Inconsistent Errors on Row Comparisons

2009-06-30 Thread David E. Wheeler

On Jun 30, 2009, at 11:46 AM, Tom Lane wrote:


For my results_eq() in pgTAP, it could output different diagnostics.


Well, that's not terribly compelling ;-).


Pllt.


I wouldn't have any big
objection to splitting out ERRCODE_COLUMN_COUNT_MISMATCH as a separate
SQLSTATE for 8.5 and beyond, but I doubt we'd consider back-patching
such a change.  It's not clear to me whether you need a solution that
works in back branches.


Makes sense.

Best,

David

--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers


Re: [HACKERS] Inconsistent Errors on Row Comparisons

2009-06-30 Thread David E. Wheeler

On Jun 30, 2009, at 11:48 AM, Tom Lane wrote:


Is there a way
to get a RECORD object to tell me what data types it contains?


Not at the SQL level.  Of course, if you're writing C, you can do
something similar to what record_eq and friends do.


Pity. I'm trying to keep C out of pgTAP (for the most part) so that  
folks can just distribute a copy of it with their modules. But I can  
at least include that information in the diagnostics from set_eq().


Best,

David

--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers


Re: [HACKERS] Inconsistent Errors on Row Comparisons

2009-06-30 Thread David E. Wheeler

On Jun 30, 2009, at 11:54 AM, David Fetter wrote:


   # Failed test 148
   # Number of columns differs between queries
   # have: 4 columns
   # want: 3 columns


Shouldn't that just read:

   have: (int, int, text, point)
   want: (int, int, text)


Yes, that's my ideal, but Tom says I need to write C code to get that  
information from RECORD objects, alas. :-(


Best,

David

--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers


Re: [HACKERS] Inconsistent Errors on Row Comparisons

2009-06-30 Thread David Fetter
On Tue, Jun 30, 2009 at 01:10:01PM -0700, David Wheeler wrote:
 On Jun 30, 2009, at 11:54 AM, David Fetter wrote:

# Failed test 148
# Number of columns differs between queries
# have: 4 columns
# want: 3 columns

 Shouldn't that just read:

have: (int, int, text, point)
want: (int, int, text)

 Yes, that's my ideal, but Tom says I need to write C code to get that  
 information from RECORD objects, alas. :-(

Would this be the first C piece?  If not, it might be worth doing.

Cheers,
David.
-- 
David Fetter da...@fetter.org http://fetter.org/
Phone: +1 415 235 3778  AIM: dfetter666  Yahoo!: dfetter
Skype: davidfetter  XMPP: david.fet...@gmail.com

Remember to vote!
Consider donating to Postgres: http://www.postgresql.org/about/donate

-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers


Re: [HACKERS] Inconsistent Errors on Row Comparisons

2009-06-30 Thread David E. Wheeler

On Jun 30, 2009, at 1:40 PM, David Fetter wrote:


Yes, that's my ideal, but Tom says I need to write C code to get that
information from RECORD objects, alas. :-(


Would this be the first C piece?  If not, it might be worth doing.


I don't understand the question. But yes, I think it'd be worth doing.  
I'd like to have functions like:


pg_record_attrs(RECORD) RETURNS SETOF regtype[]

And maybe another function to return attribute names. If it could  
returns both names and types, that'd be cool, but I'm not sure what  
kind of data type that would be.


Does this sound interesting to other folks?

Best,

David

--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers


Re: [HACKERS] Inconsistent Errors on Row Comparisons

2009-06-30 Thread David Fetter
On Tue, Jun 30, 2009 at 02:01:26PM -0700, David Wheeler wrote:
 On Jun 30, 2009, at 1:40 PM, David Fetter wrote:

 Yes, that's my ideal, but Tom says I need to write C code to get that
 information from RECORD objects, alas. :-(

 Would this be the first C piece?  If not, it might be worth doing.

 I don't understand the question.

I was thinking of this as part of PgTAP.

 But yes, I think it'd be worth doing.  I'd like to have functions
 like:

 pg_record_attrs(RECORD) RETURNS SETOF regtype[]

 And maybe another function to return attribute names. If it could  
 returns both names and types, that'd be cool, but I'm not sure what kind 
 of data type that would be.

It's possible to have it return SETOF RECORD with OUT parameters, I
think.

 Does this sound interesting to other folks?

Sure.  Maybe that should go in pg_catalog in 8.5...

Cheers,
David.
-- 
David Fetter da...@fetter.org http://fetter.org/
Phone: +1 415 235 3778  AIM: dfetter666  Yahoo!: dfetter
Skype: davidfetter  XMPP: david.fet...@gmail.com

Remember to vote!
Consider donating to Postgres: http://www.postgresql.org/about/donate

-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers


Re: [HACKERS] Inconsistent Errors on Row Comparisons

2009-06-30 Thread David E. Wheeler

On Jun 30, 2009, at 3:05 PM, David Fetter wrote:


Would this be the first C piece?  If not, it might be worth doing.


I don't understand the question.


I was thinking of this as part of PgTAP.


Oh. There is a piece of C, but it's just an implementation of  
pg_typeof() so that pgTAP can use it in versions of PostgreSQL  8.4.  
In 8.4 and later, no C code is built. Have been trying to keep it that  
way for now.



But yes, I think it'd be worth doing.  I'd like to have functions
like:

   pg_record_attrs(RECORD) RETURNS SETOF regtype[]

And maybe another function to return attribute names. If it could
returns both names and types, that'd be cool, but I'm not sure what  
kind

of data type that would be.


It's possible to have it return SETOF RECORD with OUT parameters, I
think.


Out parameters? I was thinking of SETOF RECORD with two attributes in  
each record: name and type. Are there other attributes of RECORD  
attributes that might be of interest?



Does this sound interesting to other folks?


Sure.  Maybe that should go in pg_catalog in 8.5...


Right, that was my thought. I could then throw it in pgTAP when  
building on  8.5.


Best,

David

--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers


Re: [HACKERS] Inconsistent Errors on Row Comparisons

2009-06-30 Thread David Fetter
On Tue, Jun 30, 2009 at 03:16:09PM -0700, David Wheeler wrote:
 On Jun 30, 2009, at 3:05 PM, David Fetter wrote:

 Would this be the first C piece?  If not, it might be worth
 doing.

 I don't understand the question.

 I was thinking of this as part of PgTAP.

 Oh.  There is a piece of C, but it's just an implementation of
 pg_typeof() so that pgTAP can use it in versions of PostgreSQL 
 8.4.  In 8.4 and later, no C code is built.  Have been trying to
 keep it that way for now.

OK, so the can is already open, but you're trying to discourage the
worms from escaping. :)

 But yes, I think it'd be worth doing.  I'd like to have functions
 like:

pg_record_attrs(RECORD) RETURNS SETOF regtype[]

 And maybe another function to return attribute names. If it could
 returns both names and types, that'd be cool, but I'm not sure what  
 kind
 of data type that would be.

 It's possible to have it return SETOF RECORD with OUT parameters, I
 think.

 Out parameters?

CREATE OR REPLACE FUNCTION pg_record_info(
IN r RECORD,
OUT regtype RETYPE,
OUT name NAME,
) RETURNS SETOF RECORD
LANGUAGE C
AS 'filename', 'pg_record_info';

 I was thinking of SETOF RECORD with two attributes in  each record:
 name and type. Are there other attributes of RECORD  attributes that
 might be of interest?

 Does this sound interesting to other folks?

 Sure.  Maybe that should go in pg_catalog in 8.5...

 Right, that was my thought. I could then throw it in pgTAP when
 building on  8.5.

Right :)

Cheers,
David.
-- 
David Fetter da...@fetter.org http://fetter.org/
Phone: +1 415 235 3778  AIM: dfetter666  Yahoo!: dfetter
Skype: davidfetter  XMPP: david.fet...@gmail.com

Remember to vote!
Consider donating to Postgres: http://www.postgresql.org/about/donate

-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers


Re: [HACKERS] 8.5 development schedule

2009-06-30 Thread Stephen Frost
* Tom Lane (t...@sss.pgh.pa.us) wrote:
 Robert Haas robertmh...@gmail.com writes:
  What I think we have is a lot of people who are waiting
  for feedback, and we should try to give them some.  I also know that
  reviewing 60 patches for the November CommitFest was a ton of work,
  and the reviewers (including the committers) ran out of steam well
  before we got done.  That, and not any desire to jump the queue, is
  the reason why I would like to get the reviewing process started
  before the patch list grows unmanageably large.
 
 Yeah.  In core's private discussion of this, I too was arguing for
 running a CommitFest ASAP, in order to have some motion on the existing
 patch backlog.  I don't know that we'd actually end up committing many,
 but we need to provide feedback so people can take the next steps.

I'm in agreement that we should try to provide feedback (in general, to
be honest) on patches/suggestions/ideas/designs/etc as quickly as
possible.  The commitfest approach is good for this when it's in
motion, but it's been stale for months.  +1 from me for starting early.

To flip it around a bit, I don't know that there's actually a moratorium
on providing feedback?  If people aren't busy working on 8.4 (I hope not
at this point, except testing.. :), have patches that they've submitted
and are waiting for feedback on, or aren't otherwise busy..  I say feel
free to pull patches and review/comment on.  As I like to tell the
people who work with me- being proactive and self-starting is almost
always looked on favorably.

I'm like to encourage the above for the entire development cycle, for
that matter.  Perhaps it won't change much (I'm confident we'll still
need a commitfest mom, etc) but I don't see why we should actively
prevent it.

 People who *were* following the project calendar (like me for instance)
 have been largely ignoring the 8.5 queue, so many of those patches are
 just sitting out there without any substantive comment.

Certainly following the calendar is a good thing, it's just that we're
about to pass a milestone on the project calendar and need to decide
what we're gonna do next and when.

 Right at the moment I imagine a large fraction of those patches are
 broken anyway by the recent pgindent run --- has anyone checked?

I havn't yet, but it certainly sounds like a great idea.  Maybe we could
even have a mini-fix-pgindent commitfest in the last 2 weeks of July..

Thanks,

Stephen


signature.asc
Description: Digital signature


Re: [HACKERS] 8.5 development schedule

2009-06-30 Thread Stephen Frost
* Tom Lane (t...@sss.pgh.pa.us) wrote:
 I would like to propose aiming for a release around April/May 2010 ...
 in time for PGCon if you like, but the main point is to have it out
 before people start disappearing for summer break.  We've already run
 into problems with scheduling the 8.4 release because of that.

Big +1 from me for having it in time for PGCon.

 Or we could slide the target release date into the fall, but it seemed
 to me that the spring release timeframe worked better (or would have if
 we'd been able to meet it fully).

Agreed.

 Of the schedules Peter mentioned, the only one that has a realistic
 chance of releasing before June is the one with the final commitfest
 starting Feb 1.  Even then, we need to do something to prevent that
 fest from expanding the way the last 8.4 fest did.  The core committee
 speculated a bit about instituting a rule like major patches must
 be submitted into a CF before the last one; the last one will only
 accept resubmissions and small patches.  But then you have to draw
 the line between major and minor patches.

I liked the general idea of only accepting already been seen patches
or bug-fix only patches in the last commitfest.

Thanks,

Stephen


signature.asc
Description: Digital signature


[HACKERS] [PATCH] SE-PostgreSQL Updates rev.2096

2009-06-30 Thread KaiGai Kohei
The SE-PostgreSQL patches are updated as follows:

01) http://sepgsql.googlecode.com/files/sepgsql-01-sysatt-8.4-r2096.patch
02) http://sepgsql.googlecode.com/files/sepgsql-02-core-8.4-r2096.patch
03) http://sepgsql.googlecode.com/files/sepgsql-03-gram-8.4-r2096.patch
04) http://sepgsql.googlecode.com/files/sepgsql-04-writable-8.4-r2096.patch
05) http://sepgsql.googlecode.com/files/sepgsql-05-rowlevel-8.4-r2096.patch
06) http://sepgsql.googlecode.com/files/sepgsql-06-perms-8.4-r2096.patch
07) http://sepgsql.googlecode.com/files/sepgsql-07-extra-8.4-r2096.patch
08) http://sepgsql.googlecode.com/files/sepgsql-08-utils-8.4-r2096.patch
09) http://sepgsql.googlecode.com/files/sepgsql-09-tests-8.4-r2096.patch
10) http://sepgsql.googlecode.com/files/sepgsql-10-docs-8.4-r2096.patch

The SE-PostgreSQL online documentation:
  http://wiki.postgresql.org/wiki/SEPostgreSQL

The purpose of every patches are introduced at:
  http://wiki.postgresql.org/wiki/SEPostgreSQL_Development#Patches

List of updates:
* Its base version was updated to the latest CVS HEAD.
* The third gram patch is a separated part from the second core patch
  to reduce the scale of the patch.
  It provides extensions in SQL grammer, such as SECURITY_LABEL = 'xxx'.
* bugfix: it didn't prevent accesses when user tries to select
  pg_toast.pg_toast_%u by hand.

Thanks,
-- 
OSS Platform Development Division, NEC
KaiGai Kohei kai...@ak.jp.nec.com

-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers


Re: [HACKERS] 8.5 development schedule

2009-06-30 Thread Stephen Frost
* Tom Lane (t...@sss.pgh.pa.us) wrote:
 As I mentioned in the core discussion, I'm a bit concerned that this
 would have the effect of choking off development too soon.  We could
 have a situation where nothing major is supposed to be getting worked
 on from Nov 15 to mid-May, which seems much too long.  So very small
 seems too strict.  Robert's suggestion of a 1000-line cutoff might be
 workable though.

Maybe we should have a hard rule now, but then leave ourselves the
option to relax it (perhaps not publically) once we actually get to the
last CF?  I dunno, just a thought.  I do share your concern about not
choking off development for too long, but it sure seems like we've
always got a big patch or two that we're trying to get into the next
release near the end..

Thanks,

Stephen


signature.asc
Description: Digital signature


Re: [HACKERS] 8.5 development schedule

2009-06-30 Thread Robert Haas
On Tue, Jun 30, 2009 at 9:17 PM, Stephen Frostsfr...@snowman.net wrote:
 * Tom Lane (t...@sss.pgh.pa.us) wrote:
 As I mentioned in the core discussion, I'm a bit concerned that this
 would have the effect of choking off development too soon.  We could
 have a situation where nothing major is supposed to be getting worked
 on from Nov 15 to mid-May, which seems much too long.  So very small
 seems too strict.  Robert's suggestion of a 1000-line cutoff might be
 workable though.

 Maybe we should have a hard rule now, but then leave ourselves the
 option to relax it (perhaps not publically) once we actually get to the
 last CF?  I dunno, just a thought.  I do share your concern about not
 choking off development for too long, but it sure seems like we've
 always got a big patch or two that we're trying to get into the next
 release near the end..

With all due respect, you guys are worrying about the wrong problem.
I suspect it's much more likely that we're going to want to postpone
900-line patches than it is that you're going to want to not postpone
1100-line patches.  If by some chance Tom wants to commit an 1100-line
patch submitted three weeks after the start of the last CommitFest,
he'll explain why he wants to do it and in all likelihood the rest of
us will shrug our shoulders and say OK, do it.  But I seriously
doubt that's gonna happen.  What's a lot more likely is that Tom will
look at a 900-line patch submitted three weeks BEFORE the start of the
last CommitFest and say this is going to break a lot of stuff, we
should bounce this to 8.6, and everyone will say no, it's a great
feature, commit the broken code now! now, we say!.

...Robert

-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers


Re: [HACKERS] 8.5 development schedule

2009-06-30 Thread Tom Lane
Stephen Frost sfr...@snowman.net writes:
 * Tom Lane (t...@sss.pgh.pa.us) wrote:
 Yeah.  In core's private discussion of this, I too was arguing for
 running a CommitFest ASAP, in order to have some motion on the existing
 patch backlog.  I don't know that we'd actually end up committing many,
 but we need to provide feedback so people can take the next steps.

 I'm in agreement that we should try to provide feedback (in general, to
 be honest) on patches/suggestions/ideas/designs/etc as quickly as
 possible.  The commitfest approach is good for this when it's in
 motion, but it's been stale for months.  +1 from me for starting early.

 To flip it around a bit, I don't know that there's actually a moratorium
 on providing feedback?

Well, I wouldn't put it as strongly as moratorium, but ... the point
of having a release cycle is that at certain times people are supposed
to focus on stabilizing and testing a release, not on working on new
development.  If, at any time in the past six months, I were to have
gone off and reviewed a patch that's clearly 8.5 material, that's
man-hours taken directly away from getting a solid 8.4 release out the
door.  Which means that much longer until 8.4 does get out, which hurts
everybody including the submitter of the premature patch.  So in general
I agree with the viewpoint Peter outlined that working on new
development during beta period is not really playing by the rules, and
that people who expect feedback for new development during beta period
simply don't understand how the project is supposed to work.

If you find yourself with nothing else to do except review a new patch
during beta, then sure, go do it.  But is there *really* nothing you
could be doing to help expedite the beta?

Anyway, as of now that's all moot until next spring.  But it's still
true that people want time to work on their own patches, which is why
we came up with the commitfests.  It's so you can get some time to work
without feeling guilty about not reviewing other people's work instead.

regards, tom lane

-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers


Re: [HACKERS] 8.5 development schedule

2009-06-30 Thread Andrew Dunstan



Josh Berkus wrote:


One thing Peter forgot to mention here is that the next-to-last 
commitfest is the *last* commitfest for new major features.  For the 
*last* commitfest, any patch introduced either has to be a 
resubmission of something we've seen at a prior CF, or has to be very 
small (i.e. not many lines/files, no side effects, no API or defined 
standard API).


This makes the next-to-last CF our biggest CF.


I thought we discussed that at pgCon in May and rejected it.

I have very, very serious reservations about it. I think we need to get 
better about proper triage, especially on the final commitfest, rather 
than moving the effective feature freeze back a whole commitfest.


ISTM we're in danger of becoming dominated by procedures. Let's keep it 
light and loose.


cheers

andrew

--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers


Re: [HACKERS] 8.5 development schedule

2009-06-30 Thread Stephen Frost
* Tom Lane (t...@sss.pgh.pa.us) wrote:
 Stephen Frost sfr...@snowman.net writes:
  I'm in agreement that we should try to provide feedback (in general, to
  be honest) on patches/suggestions/ideas/designs/etc as quickly as
  possible.  The commitfest approach is good for this when it's in
  motion, but it's been stale for months.  +1 from me for starting early.
 
  To flip it around a bit, I don't know that there's actually a moratorium
  on providing feedback?
 
 Well, I wouldn't put it as strongly as moratorium, but ... the point
 of having a release cycle is that at certain times people are supposed
 to focus on stabilizing and testing a release, not on working on new
 development.  

I certainly agree with this.  I tried to qualify my comment above in the
sentence which followed it, but apparently I didn't do a good job.

- This only applies before feature freeze (eg: right after 8.4 is out)
- No work being done on a current patch (eg: waiting for feedback)
- Have cycles to spare

Our current arrangment is based on a premise that a given person will
have X cycles in a month to work on PG, and that they have =X amount
of work to do on developing their patch(s) that month.  I feel like
there are a number of patch submitters who have X cycles to work on PG,
and X work they'll be able to do on their patch in a given month (in
part because at some point they'll submit it and then wait for
feedback).  I see minimial drawback to encouraging those people to
review other patches with any extra cycles they have, even if we're not
actually in a CF-mode at that point.

 If, at any time in the past six months, I were to have
 gone off and reviewed a patch that's clearly 8.5 material, that's
 man-hours taken directly away from getting a solid 8.4 release out the
 door.  Which means that much longer until 8.4 does get out, which hurts
 everybody including the submitter of the premature patch.  So in general
 I agree with the viewpoint Peter outlined that working on new
 development during beta period is not really playing by the rules, and
 that people who expect feedback for new development during beta period
 simply don't understand how the project is supposed to work.

It wasn't my intent to imply this would be done during feature-freeze,
or beta, but rather something to be done during development.  Perhaps I
should have phrased it as the moratorium on looking at patches can end
when 8.4 is released, and not be fully reinstated until 8.5 beta.

 Anyway, as of now that's all moot until next spring.  But it's still
 true that people want time to work on their own patches, which is why
 we came up with the commitfests.  It's so you can get some time to work
 without feeling guilty about not reviewing other people's work instead.

I definitely think that's good, and to be honest I don't think my
suggestion would apply to core much at all (they've always got =X work
to do on patches :), but as we saw during the commitfests in 8.4,
there's a number of non-core folks out there volunteering to review.  If
they're willing and able to spend cycles reviewing other patches rather
than twiddling their thumbs waiting for feedback, let's encourage that.

Thanks,

Stephen


signature.asc
Description: Digital signature


Re: [HACKERS] 8.5 development schedule

2009-06-30 Thread Bruce Momjian
Tom Lane wrote:
  As for thresholds, I'd propose that we measure the size of patches
  using diff -u | diffstat.  If the number of insertions plus the
  number of deletions is = 1000, then the patch is not eligible for the
  final CommitFest unless it was submitted for the penultimate
  CommitFest.  This obvious discriminates against patches with a large
  footprint that are not very invasive and in favor of those with a
  small footprint that are more destabilizing, but it's a clean line in
  the sand, and I think having such a line is better than trying to
  apply human judgment to every case.
 
 Well, in the end it will come down to committers' judgements anyway;
 if someone thinks a patch is ready it will probably go in, regardless
 of size.  But this gives us another tool for saying no, so I'm
 agreeable ;-)

I realize there is the perception that the large patches that were
eventually rejected held up the release, but for all the patches I can
think of, they were not rejected immediately _because_ we had other
valid patches to work on.  Once all valid patches were applied, we were
quickly able to reject the large unready patches.

So, rejecting the large patches earily would not have significantly
moved the release date earlier.

-- 
  Bruce Momjian  br...@momjian.ushttp://momjian.us
  EnterpriseDB http://enterprisedb.com

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

-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers


Re: [HACKERS] 8.5 development schedule

2009-06-30 Thread Robert Haas
On Tue, Jun 30, 2009 at 11:18 PM, Bruce Momjianbr...@momjian.us wrote:
 Tom Lane wrote:
  As for thresholds, I'd propose that we measure the size of patches
  using diff -u | diffstat.  If the number of insertions plus the
  number of deletions is = 1000, then the patch is not eligible for the
  final CommitFest unless it was submitted for the penultimate
  CommitFest.  This obvious discriminates against patches with a large
  footprint that are not very invasive and in favor of those with a
  small footprint that are more destabilizing, but it's a clean line in
  the sand, and I think having such a line is better than trying to
  apply human judgment to every case.

 Well, in the end it will come down to committers' judgements anyway;
 if someone thinks a patch is ready it will probably go in, regardless
 of size.  But this gives us another tool for saying no, so I'm
 agreeable ;-)

 I realize there is the perception that the large patches that were
 eventually rejected held up the release, but for all the patches I can
 think of, they were not rejected immediately _because_ we had other
 valid patches to work on.  Once all valid patches were applied, we were
 quickly able to reject the large unready patches.

 So, rejecting the large patches earily would not have significantly
 moved the release date earlier.

I don't believe it.  :-)

If the large patches had been rejected earlier, the reviewers and
committers who were spending time on them could have started spending
time on other things sooner.

I also believe, although I cannot prove it, that it would have
increased the pressure to get the remaining items dealt with.  When
there are 100 patches, everyone can say oh, well it doesn't matter
whether I get this taken care of today, because there will still be 99
other patches.  When there are 3 patches, that argument doesn't hold
water.

Another thing I'd like to improve for the next CommitFest is the
communication between reviewers and committers.  In the November
CommitFest, I, and I think others, assumed that the committers were
reading all of the review threads in detail throughout the process and
that they would jump in when things got close to being done, or maybe
when things got marked as Ready for Committer on the Wiki.  That
worked OK, but there were rough patches where things bogged down.  As
much as we may express opinions on the merits of certain patches, I
think all of us non-committers are (certainly I am) loathe to avoid
the perception that we're telling the committers what to do.  But, I
think it would be helpful to have periodic updates on what the
different committers are currently focused on, how long they intend to
be focused on that, and what they intend to focus on next; and I think
it would be helpful for the CF mgmt team to make suggestions as to
what patches we think are the closest to being ready to go or most in
need of committer-level input.

...Robert

-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers


Re: [HACKERS] 8.5 development schedule

2009-06-30 Thread Josh Berkus

Andrew,


I thought we discussed that at pgCon in May and rejected it.


That's not what we have in my notes:

http://wiki.postgresql.org/wiki/PgCon_2009_Developer_Meeting#CommitFests

Of course, I may have missed some options, a lot of people were talking.


I have very, very serious reservations about it. I think we need to get
better about proper triage, especially on the final commitfest, rather
than moving the effective feature freeze back a whole commitfest.


Thing is, if we're getting 15,000 lines of code we've never seen before 
(collectively) at the final commitfest, there's simply no way we're 
getting a release out within 3 months of that.



ISTM we're in danger of becoming dominated by procedures. Let's keep it
light and loose.


Hmmm ... actually, I think Andrew's right that we don't need a specific 
last commitfest rule which is special.  Really, any patch which gets 
submitted to any commitfest gets returned if it's not ready to be 
committed immediately after review.  The only way the last CF is special 
is that anything bounced goes to the next version.


We forgot that with the November CF, which is why it dragged on for 3.5 
months and burned a lot of people out.   Let's just stick to that this 
time and we don't need any new rules.


--
Josh Berkus
PostgreSQL Experts Inc.
www.pgexperts.com

--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers