Skip site navigation (1) Skip section navigation (2)

Re: [HACKERS] pg_attribute.attisinherited ?

From: Alvaro Herrera <alvherre(at)atentus(dot)com>
To: Alvaro Herrera <alvherre(at)atentus(dot)com>
Cc: pgsql-patches(at)postgresql(dot)org
Subject: Re: [HACKERS] pg_attribute.attisinherited ?
Date: 2002-08-24 22:49:12
Message-ID: 20020824184912.13f4b492.alvherre@atentus.com (view raw or flat)
Thread:
Lists: pgsql-hackerspgsql-patches
En Sat, 24 Aug 2002 17:09:55 -0400
I said:

> > I remember Tom suggested adding something like attisinherited and
> > preventing this kind of operations on such attributes, because one can
> > do things such as [...]

Ok, I attach a patch that does this.  It doesn't include regression
tests, docs nor the checks against unwanted operations; these will come
later if people think this is a good approach.

It passes 86 of 88 tests.  The 2 failures are ordering issues (diff
below) I don't know what causes it.

Please review.


*** ./expected/select_having.out	Wed Jun 26 17:58:56 2002
--- ./results/select_having.out	Sat Aug 24 18:32:16 2002
***************
*** 26,33 ****
  	GROUP BY b, c HAVING b = 3; 
   b |    c     
  ---+----------
-  3 | BBBB    
   3 | bbbb    
  (2 rows)
  
  SELECT lower(c), count(c) FROM test_having
--- 26,33 ----
  	GROUP BY b, c HAVING b = 3; 
   b |    c     
  ---+----------
   3 | bbbb    
+  3 | BBBB    
  (2 rows)
  
  SELECT lower(c), count(c) FROM test_having
***************
*** 43,50 ****
  	GROUP BY c HAVING count(*) > 2 OR min(a) = max(a);
      c     | max 
  ----------+-----
-  XXXX     |   0
   bbbb     |   5
  (2 rows)
  
  DROP TABLE test_having;
--- 43,50 ----
  	GROUP BY c HAVING count(*) > 2 OR min(a) = max(a);
      c     | max 
  ----------+-----
   bbbb     |   5
+  XXXX     |   0
  (2 rows)
  
  DROP TABLE test_having;

======================================================================

*** ./expected/rules.out	Mon Aug 19 01:08:30 2002
--- ./results/rules.out	Sat Aug 24 18:32:46 2002
***************
*** 404,412 ****
  ----------------------+--------------+------------+------------+------------
   gates                | t            | fired      |      $0.00 | $80,000.00
   gates                | t            | hired      | $80,000.00 |      $0.00
-  wiech                | t            | hired      |  $5,000.00 |      $0.00
   wieck                | t            | honored    |  $6,000.00 |  $5,000.00
   wieck                | t            | honored    |  $7,000.00 |  $6,000.00
  (5 rows)
  
  insert into rtest_empmass values ('meyer', '4000.00');
--- 404,412 ----
  ----------------------+--------------+------------+------------+------------
   gates                | t            | fired      |      $0.00 | $80,000.00
   gates                | t            | hired      | $80,000.00 |      $0.00
   wieck                | t            | honored    |  $6,000.00 |  $5,000.00
   wieck                | t            | honored    |  $7,000.00 |  $6,000.00
+  wiech                | t            | hired      |  $5,000.00 |      $0.00
  (5 rows)
  
  insert into rtest_empmass values ('meyer', '4000.00');
***************
*** 421,429 ****
   maier                | t            | hired      |  $5,000.00 |      $0.00
   mayr                 | t            | hired      |  $6,000.00 |      $0.00
   meyer                | t            | hired      |  $4,000.00 |      $0.00
-  wiech                | t            | hired      |  $5,000.00 |      $0.00
   wieck                | t            | honored    |  $6,000.00 |  $5,000.00
   wieck                | t            | honored    |  $7,000.00 |  $6,000.00
  (8 rows)
  
  update rtest_empmass set salary = salary + '1000.00';
--- 421,429 ----
   maier                | t            | hired      |  $5,000.00 |      $0.00
   mayr                 | t            | hired      |  $6,000.00 |      $0.00
   meyer                | t            | hired      |  $4,000.00 |      $0.00
   wieck                | t            | honored    |  $6,000.00 |  $5,000.00
   wieck                | t            | honored    |  $7,000.00 |  $6,000.00
+  wiech                | t            | hired      |  $5,000.00 |      $0.00
  (8 rows)
  
  update rtest_empmass set salary = salary + '1000.00';
***************
*** 439,447 ****
   mayr                 | t            | honored    |  $7,000.00 |  $6,000.00
   meyer                | t            | hired      |  $4,000.00 |      $0.00
   meyer                | t            | honored    |  $5,000.00 |  $4,000.00
-  wiech                | t            | hired      |  $5,000.00 |      $0.00
   wieck                | t            | honored    |  $6,000.00 |  $5,000.00
   wieck                | t            | honored    |  $7,000.00 |  $6,000.00
  (11 rows)
  
  delete from rtest_emp where ename = rtest_empmass.ename;
--- 439,447 ----
   mayr                 | t            | honored    |  $7,000.00 |  $6,000.00
   meyer                | t            | hired      |  $4,000.00 |      $0.00
   meyer                | t            | honored    |  $5,000.00 |  $4,000.00
   wieck                | t            | honored    |  $6,000.00 |  $5,000.00
   wieck                | t            | honored    |  $7,000.00 |  $6,000.00
+  wiech                | t            | hired      |  $5,000.00 |      $0.00
  (11 rows)
  
  delete from rtest_emp where ename = rtest_empmass.ename;
***************
*** 459,467 ****
   meyer                | t            | fired      |      $0.00 |  $5,000.00
   meyer                | t            | hired      |  $4,000.00 |      $0.00
   meyer                | t            | honored    |  $5,000.00 |  $4,000.00
-  wiech                | t            | hired      |  $5,000.00 |      $0.00
   wieck                | t            | honored    |  $6,000.00 |  $5,000.00
   wieck                | t            | honored    |  $7,000.00 |  $6,000.00
  (14 rows)
  
  --
--- 459,467 ----
   meyer                | t            | fired      |      $0.00 |  $5,000.00
   meyer                | t            | hired      |  $4,000.00 |      $0.00
   meyer                | t            | honored    |  $5,000.00 |  $4,000.00
   wieck                | t            | honored    |  $6,000.00 |  $5,000.00
   wieck                | t            | honored    |  $7,000.00 |  $6,000.00
+  wiech                | t            | hired      |  $5,000.00 |      $0.00
  (14 rows)
  
  --

======================================================================


-- 
Alvaro Herrera (<alvherre[a]atentus.com>)
"Un poeta es un mundo encerrado en un hombre" (Victor Hugo)

Attachment: attisinherited-3.patch
Description: application/octet-stream (50.8 KB)

In response to

Responses

pgsql-hackers by date

Next:From: Christopher Kings-LynneDate: 2002-08-25 09:34:21
Subject: Re: [HACKERS] pg_attribute.attisinherited ?
Previous:From: Alvaro HerreraDate: 2002-08-24 21:09:55
Subject: Re: pg_attribute.attisinherited ?

pgsql-patches by date

Next:From: Neil ConwayDate: 2002-08-25 05:08:01
Subject: CREATE INDEX error message
Previous:From: Alvaro HerreraDate: 2002-08-24 21:09:55
Subject: Re: pg_attribute.attisinherited ?

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group