Re: [PATCHES] Fwd: Re: [pgsql-patches] pg_get_domaindef

2007-03-30 Thread Tom Lane
David Fetter <[EMAIL PROTECTED]> writes:
> On Fri, Mar 30, 2007 at 01:45:21PM -0400, Bruce Momjian wrote:
>> Thanks, but after lots of discussion, it turns out the community
>> doesn't want to add such functions, and I have removed it from the
>> TODO list.

> From what I recall of the discussion, the lack of interest was in
> actually stepping up and doing it, not in the feature itself.

Um, no: there were serious concerns first about the snapshot semantics
(MVCC vs SnapshotNow behavior) and second that we'd be condemning
ourselves to support duplicative functionality in pg_dump and the
backend for the foreseeable future.

regards, tom lane

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


Re: [PATCHES] Fwd: Re: [pgsql-patches] pg_get_domaindef

2007-03-30 Thread David Fetter
On Fri, Mar 30, 2007 at 01:45:21PM -0400, Bruce Momjian wrote:
> Thanks, but after lots of discussion, it turns out the community
> doesn't want to add such functions, and I have removed it from the
> TODO list.

>From what I recall of the discussion, the lack of interest was in
actually stepping up and doing it, not in the feature itself.

Cheers,
D
-- 
David Fetter <[EMAIL PROTECTED]> http://fetter.org/
phone: +1 415 235 3778AIM: dfetter666
  Skype: davidfetter

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

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


Re: [PATCHES] Fwd: Re: [pgsql-patches] pg_get_domaindef

2007-03-30 Thread Bruce Momjian

Thanks, but after lots of discussion, it turns out the community doesn't
want to add such functions, and I have removed it from the TODO list.

---

FAST PostgreSQL wrote:
> Resubmitting this patch without the legal disclaimers attached to it.
> 
> Rgds,
> Arul Shaji
> 
> 
> --  FWD:  --
> 
> Subject: Re: [pgsql-patches] pg_get_domaindef
> Date: Thu, 25 Jan 2007 03:18:30 +1100
> From: Arul Shaji <[EMAIL PROTECTED]>
> To: Neil Conway <[EMAIL PROTECTED]>
> Cc: pgsql-patches@postgresql.org
> 
> Please find attached the patch with modifications
> 
> Rgds,
> Arul Shaji
> 
> On Sat, 20 Jan 2007 04:44, FAST PostgreSQL wrote:
> > On Fri, 19 Jan 2007 17:02, Neil Conway wrote:
> > > On Sat, 2007-01-20 at 02:28 +1100, FAST PostgreSQL wrote:
> > > > Attached is a small patch that implements the pg_get_domaindef(oid)
> > > > function.
> > >
> > > A few minor comments:
> > >
> > > - don't use C++-style comments
> >
> > OK. Can do.
> >
> > > - why does this code append a "-" to the output when SPI_processed != 1,
> > > rather than erroring out?
> >
> > get_ruledef() does the same.  As the user gets a '-' in that case when a
> > non-existent oid is given,  I just wanted to be consistent. Maybe a wrong
> > idea ?
> >
> > > - you probably want to elog(ERROR) if typeTuple is invalid:
> >
> > Of course.
> >
> > > +   if (typnotnull || constraint != NULL)
> > > +   {
> > > +   if ( ( (contype != NULL) && (strcmp(contype,
> > > "c") != 0) ) || typnotnull )
> > > +   {
> > > +   appendStringInfo(&buf, "CONSTRAINT ");
> > > +   }
> > > +   if (typnotnull)
> > > +   {
> > > +   appendStringInfo(&buf, "NOT NULL ");
> > > +   }
> > > +   }
> > > +   if (constraint != NULL)
> > > +   {
> > > +   appendStringInfo(&buf,
> > > quote_identifier(constraint));
> > > +   }
> > >
> > > This logic seems pretty awkward. Perhaps simpler would be a check for
> > > typnotnull (and then appending "CONSTRAINT NOT NULL"), and then handling
> > > the non-typnotnull branch separately.
> >
> > Yeah agree.
> >
> > > -Neil
> >
> > Rgds,
> > Arul Shaji
> >
> >
> >
> > ---(end of broadcast)---
> > TIP 6: explain analyze is your friend
> 
> ---
> 
> 

[ Attachment, skipping... ]

> 
> ---(end of broadcast)---
> TIP 7: You can help support the PostgreSQL project by donating at
> 
> http://www.postgresql.org/about/donate

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

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

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

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


[PATCHES] Fwd: Re: [pgsql-patches] pg_get_domaindef

2007-03-30 Thread FAST PostgreSQL
Resubmitting this patch without the legal disclaimers attached to it.

Rgds,
Arul Shaji


--  FWD:  --

Subject: Re: [pgsql-patches] pg_get_domaindef
Date: Thu, 25 Jan 2007 03:18:30 +1100
From: Arul Shaji <[EMAIL PROTECTED]>
To: Neil Conway <[EMAIL PROTECTED]>
Cc: pgsql-patches@postgresql.org

Please find attached the patch with modifications

Rgds,
Arul Shaji

On Sat, 20 Jan 2007 04:44, FAST PostgreSQL wrote:
> On Fri, 19 Jan 2007 17:02, Neil Conway wrote:
> > On Sat, 2007-01-20 at 02:28 +1100, FAST PostgreSQL wrote:
> > > Attached is a small patch that implements the pg_get_domaindef(oid)
> > > function.
> >
> > A few minor comments:
> >
> > - don't use C++-style comments
>
> OK. Can do.
>
> > - why does this code append a "-" to the output when SPI_processed != 1,
> > rather than erroring out?
>
> get_ruledef() does the same.  As the user gets a '-' in that case when a
> non-existent oid is given,  I just wanted to be consistent. Maybe a wrong
> idea ?
>
> > - you probably want to elog(ERROR) if typeTuple is invalid:
>
> Of course.
>
> > +   if (typnotnull || constraint != NULL)
> > +   {
> > +   if ( ( (contype != NULL) && (strcmp(contype,
> > "c") != 0) ) || typnotnull )
> > +   {
> > +   appendStringInfo(&buf, "CONSTRAINT ");
> > +   }
> > +   if (typnotnull)
> > +   {
> > +   appendStringInfo(&buf, "NOT NULL ");
> > +   }
> > +   }
> > +   if (constraint != NULL)
> > +   {
> > +   appendStringInfo(&buf,
> > quote_identifier(constraint));
> > +   }
> >
> > This logic seems pretty awkward. Perhaps simpler would be a check for
> > typnotnull (and then appending "CONSTRAINT NOT NULL"), and then handling
> > the non-typnotnull branch separately.
>
> Yeah agree.
>
> > -Neil
>
> Rgds,
> Arul Shaji
>
>
>
> ---(end of broadcast)---
> TIP 6: explain analyze is your friend

---


*** pgsql/src/include/catalog/pg_proc.h	2007-01-24 13:58:40.291574752 +1100
--- workingpgsql/src/include/catalog/pg_proc.h	2007-01-24 15:12:02.410350976 +1100
***
*** 2315,2321 
  DESCR("deparse an encoded expression");
  DATA(insert OID = 1665 (  pg_get_serial_sequence	PGNSP PGUID 12 1 0 f f t f s 2 25 "25 25" _null_ _null_ _null_	pg_get_serial_sequence - _null_ ));
  DESCR("name of sequence for a serial column");
! 
  
  /* Generic referential integrity constraint triggers */
  DATA(insert OID = 1644 (  RI_FKey_check_ins		PGNSP PGUID 12 1 0 f f t f v 0 2279 "" _null_ _null_ _null_ RI_FKey_check_ins - _null_ ));
--- 2315,2322 
  DESCR("deparse an encoded expression");
  DATA(insert OID = 1665 (  pg_get_serial_sequence	PGNSP PGUID 12 1 0 f f t f s 2 25 "25 25" _null_ _null_ _null_	pg_get_serial_sequence - _null_ ));
  DESCR("name of sequence for a serial column");
! DATA(insert OID = 2950 (  pg_get_domaindef	PGNSP PGUID 12 1 0 f f t f s 1 25 "26" _null_ _null_ _null_ pg_get_domaindef - _null_ ));
! DESCR("domain description");
  
  /* Generic referential integrity constraint triggers */
  DATA(insert OID = 1644 (  RI_FKey_check_ins		PGNSP PGUID 12 1 0 f f t f v 0 2279 "" _null_ _null_ _null_ RI_FKey_check_ins - _null_ ));
*** pgsql/src/include/utils/builtins.h	2007-01-18 15:27:15.0 +1100
--- workingpgsql/src/include/utils/builtins.h	2007-01-24 14:12:48.167677992 +1100
***
*** 534,539 
--- 534,540 
  extern Datum pg_get_expr_ext(PG_FUNCTION_ARGS);
  extern Datum pg_get_userbyid(PG_FUNCTION_ARGS);
  extern Datum pg_get_serial_sequence(PG_FUNCTION_ARGS);
+ extern Datum pg_get_domaindef(PG_FUNCTION_ARGS);
  extern char *deparse_expression(Node *expr, List *dpcontext,
     bool forceprefix, bool showimplicit);
  extern List *deparse_context_for(const char *aliasname, Oid relid);
*** pgsql/src/backend/utils/adt/ruleutils.c	2007-01-24 13:58:28.417379904 +1100
--- workingpgsql/src/backend/utils/adt/ruleutils.c	2007-01-24 15:18:57.944180232 +1100
***
*** 113,118 
--- 113,123 
  static void *plan_getviewrule = NULL;
  static char *query_getviewrule = "SELECT * FROM pg_catalog.pg_rewrite WHERE ev_class = $1 AND rulename = $2";
  
+ /* Queries to extract domain description */
+ static void *plan_getdomainbyOid = NULL;
+ static char *query_getdomainbyOid = "SELECT * FROM pg_catalog.pg_type WHERE oid = $1 AND typtype = 'd'";
+ static void *plan_getconstraintbycontypid = NULL;
+ static char *query_getconstraintbycontypid = "SELECT oid, contype FROM pg_catalog.pg_constraint WHERE contypid = $1";
  
  /* --
   * Local functions
***
*** 135,140 
--- 140,146 
  			int prettyFlags);
  static char *pg_get_expr_worker(text *expr, Oid relid, char *relname,
     int prettyFla