Re: constraint defaults still print

Поиск
Список
Период
Сортировка
От Bruce Momjian
Тема Re: constraint defaults still print
Дата
Msg-id 200302031516.h13FGgb19096@candle.pha.pa.us
обсуждение исходный текст
Ответ на Re: constraint defaults still print  (Christopher Kings-Lynne <chriskl@familyhealth.com.au>)
Список pgsql-hackers
OK, NO ACTION (the default) no longer prints for foreign key constraints:


    regression=> \d clstr_tst
                              Table "public.clstr_tst"
     Column |  Type   |                        Modifiers
    --------+---------+----------------------------------------------------------
     a      | integer | not null default nextval('public.clstr_tst_a_seq'::text)
     b      | integer |
     c      | text    |
     d      | text    |
    Indexes: clstr_tst_pkey primary key btree (a),
             clstr_tst_b btree (b),
             clstr_tst_b_c btree (b, c),
             clstr_tst_c btree (c),
             clstr_tst_c_b btree (c, b)
    Foreign Key constraints: clstr_tst_con FOREIGN KEY (b) REFERENCES clstr_tst_s(rf_a)



---------------------------------------------------------------------------

Christopher Kings-Lynne wrote:
> I vote for not showing 'NO ACTION', so long as it's the SQL standard
> default...
>
> Chris
>
> On Sat, 18 Jan 2003, Bruce Momjian wrote:
>
> > Remember how we made DEFERRABLE/DEFERRED not print if the constraint was
> > the default.  Shouldn't we do the same for MATCH and ON UPDATE/ON DELETE
> > sections of the constraint in pg_get_constraintdef()?
> >
> > Doing \d I see:
> >
> >     test=> \d sales
> >               Table "public.sales"
> >           Column       |  Type   | Modifiers
> >     -------------------+---------+-----------
> >      product_id        | integer | not null
> >      store_id          | integer | not null
> >      quantity_sold     | integer | not null
> >      date_time_of_sale | date    | not null
> >     Foreign Key constraints: $1 FOREIGN KEY (product_id) REFERENCES
> >     products(product_id) ON UPDATE NO ACTION ON DELETE NO ACTION,
> >                              $2 FOREIGN KEY (store_id) REFERENCES
> >     stores(store_id) ON UPDATE NO ACTION ON DELETE NO ACTION
> >
> > If NO ACTION is the default, is there a need to print them?  This would
> > also shorten pg_dump output.
> >
> > --
> >   Bruce Momjian                        |  http://candle.pha.pa.us
> >   pgman@candle.pha.pa.us               |  (610) 359-1001
> >   +  If your life is a hard drive,     |  13 Roberts Road
> >   +  Christ can be your backup.        |  Newtown Square, Pennsylvania 19073
> >
> > ---------------------------(end of broadcast)---------------------------
> > TIP 2: you can get off all lists at once with the unregister command
> >     (send "unregister YourEmailAddressHere" to majordomo@postgresql.org)
> >
>
>

--
  Bruce Momjian                        |  http://candle.pha.pa.us
  pgman@candle.pha.pa.us               |  (610) 359-1001
  +  If your life is a hard drive,     |  13 Roberts Road
  +  Christ can be your backup.        |  Newtown Square, Pennsylvania 19073
Index: src/backend/utils/adt/ruleutils.c
===================================================================
RCS file: /cvsroot/pgsql-server/src/backend/utils/adt/ruleutils.c,v
retrieving revision 1.132
diff -c -c -r1.132 ruleutils.c
*** src/backend/utils/adt/ruleutils.c    10 Jan 2003 21:08:15 -0000    1.132
--- src/backend/utils/adt/ruleutils.c    3 Feb 2003 14:57:33 -0000
***************
*** 642,648 ****
                  switch (conForm->confupdtype)
                  {
                      case FKCONSTR_ACTION_NOACTION:
!                         string = "NO ACTION";
                          break;
                      case FKCONSTR_ACTION_RESTRICT:
                          string = "RESTRICT";
--- 642,648 ----
                  switch (conForm->confupdtype)
                  {
                      case FKCONSTR_ACTION_NOACTION:
!                         string = "";
                          break;
                      case FKCONSTR_ACTION_RESTRICT:
                          string = "RESTRICT";
***************
*** 662,673 ****
                          string = "";    /* keep compiler quiet */
                          break;
                  }
!                 appendStringInfo(&buf, " ON UPDATE %s", string);

                  switch (conForm->confdeltype)
                  {
                      case FKCONSTR_ACTION_NOACTION:
!                         string = "NO ACTION";
                          break;
                      case FKCONSTR_ACTION_RESTRICT:
                          string = "RESTRICT";
--- 662,674 ----
                          string = "";    /* keep compiler quiet */
                          break;
                  }
!                 if (strlen(string) != 0)
!                     appendStringInfo(&buf, " ON UPDATE %s", string);

                  switch (conForm->confdeltype)
                  {
                      case FKCONSTR_ACTION_NOACTION:
!                         string = "";
                          break;
                      case FKCONSTR_ACTION_RESTRICT:
                          string = "RESTRICT";
***************
*** 687,693 ****
                          string = "";    /* keep compiler quiet */
                          break;
                  }
!                 appendStringInfo(&buf, " ON DELETE %s", string);

                  if (conForm->condeferrable)
                      appendStringInfo(&buf, " DEFERRABLE");
--- 688,695 ----
                          string = "";    /* keep compiler quiet */
                          break;
                  }
!                 if (strlen(string) != 0)
!                     appendStringInfo(&buf, " ON DELETE %s", string);

                  if (conForm->condeferrable)
                      appendStringInfo(&buf, " DEFERRABLE");

В списке pgsql-hackers по дате отправления:

Предыдущее
От: greg@turnstep.com
Дата:
Сообщение: Re: PGP signing releases
Следующее
От: Joe Conway
Дата:
Сообщение: new procedural language - PL/R