Re: Re: MY PATCH - Mailing list pgsql-patches

From Bruce Momjian
Subject Re: Re: MY PATCH
Date
Msg-id 200006091153.HAA17230@candle.pha.pa.us
Whole thread Raw
In response to Re: MY PATCH  (Chris Bitmead <chris@bitmead.com>)
List pgsql-patches
>
> The regression results are correct. It's just that they're different
> than what they used to be because of the SQL3 ONLY incompatibility. I
> wasn't sure if people wanted to change the regression tests to give the
> old results, or just insert the new results.
>
> Also, I don't get any core dump. Are you sure you did a full clean and
> initdb?

OK, I have attached my regression diffs.  I fixed a small regression
difference this morning for a patch I applied yesterday.

Certainly, the crash is not expected.  Also, the other differences don't
seem reasonable for an inheritance patch.  Are all the changes correct,
and the old results wrong?  If so, we can update the expected files.

e.g.

      SELECT sum(gpa) AS avg_6_8 FROM student;
       avg_6_8
      ---------
    !      6.8
      (1 row)

    --- 46,52 ----
      SELECT sum(gpa) AS avg_6_8 FROM student;
       avg_6_8
      ---------
    !     16.6
      (1 row)

Oh, I see now:

    CREATE TABLE student (
            gpa             float8
    ) INHERITS (person);

So it seems some of these new results are caused by the new inherit
code.  Good.

Can you confirm the other changes are correct?

--
  Bruce Momjian                        |  http://www.op.net/~candle
  pgman@candle.pha.pa.us               |  (610) 853-3000
  +  If your life is a hard drive,     |  830 Blythe Avenue
  +  Christ can be your backup.        |  Drexel Hill, Pennsylvania 19026
======   inherit   ======
151,534c151,154
< UPDATE ONLY a SET aa='zzzzz' WHERE aa='aaaaa';
< UPDATE b SET aa='zzz' WHERE aa='aaa';
< UPDATE ONLY b SET aa='zzz' WHERE aa='aaa';
< UPDATE a SET aa='zzzzzz' WHERE aa LIKE 'aaa%';
< SELECT * FROM a;
<     aa
< ----------
<  zzzz
<  zzzzz
<  zzzzzz
<  zzzzzz
<  zzzzzz
<  zzzzzz
<  bbb
<  bbbb
<  bbbbb
<  bbbbbb
<  bbbbbbb
<  bbbbbbbb
<  ccc
<  cccc
<  ccccc
<  cccccc
<  ccccccc
<  cccccccc
<  ddd
<  dddd
<  ddddd
<  dddddd
<  ddddddd
<  dddddddd
< (24 rows)
<
< SELECT * FROM b;
<     aa    | bb
< ----------+----
<  bbb      |
<  bbbb     |
<  bbbbb    |
<  bbbbbb   |
<  bbbbbbb  |
<  bbbbbbbb |
<  ddd      |
<  dddd     |
<  ddddd    |
<  dddddd   |
<  ddddddd  |
<  dddddddd |
< (12 rows)
<
< SELECT * FROM c;
<     aa    | cc
< ----------+----
<  ccc      |
<  cccc     |
<  ccccc    |
<  cccccc   |
<  ccccccc  |
<  cccccccc |
<  ddd      |
<  dddd     |
<  ddddd    |
<  dddddd   |
<  ddddddd  |
<  dddddddd |
< (12 rows)
<
< SELECT * FROM d;
<     aa    | bb | cc | dd
< ----------+----+----+----
<  ddd      |    |    |
<  dddd     |    |    |
<  ddddd    |    |    |
<  dddddd   |    |    |
<  ddddddd  |    |    |
<  dddddddd |    |    |
< (6 rows)
<
< SELECT * FROM ONLY a;
<    aa
< --------
<  zzzz
<  zzzzz
<  zzzzzz
<  zzzzzz
<  zzzzzz
<  zzzzzz
< (6 rows)
<
< SELECT * FROM ONLY b;
<     aa    | bb
< ----------+----
<  bbb      |
<  bbbb     |
<  bbbbb    |
<  bbbbbb   |
<  bbbbbbb  |
<  bbbbbbbb |
< (6 rows)
<
< SELECT * FROM ONLY c;
<     aa    | cc
< ----------+----
<  ccc      |
<  cccc     |
<  ccccc    |
<  cccccc   |
<  ccccccc  |
<  cccccccc |
< (6 rows)
<
< SELECT * FROM ONLY d;
<     aa    | bb | cc | dd
< ----------+----+----+----
<  ddd      |    |    |
<  dddd     |    |    |
<  ddddd    |    |    |
<  dddddd   |    |    |
<  ddddddd  |    |    |
<  dddddddd |    |    |
< (6 rows)
<
< UPDATE b SET aa='new';
< SELECT * FROM a;
<     aa
< ----------
<  zzzz
<  zzzzz
<  zzzzzz
<  zzzzzz
<  zzzzzz
<  zzzzzz
<  new
<  new
<  new
<  new
<  new
<  new
<  ccc
<  cccc
<  ccccc
<  cccccc
<  ccccccc
<  cccccccc
<  new
<  new
<  new
<  new
<  new
<  new
< (24 rows)
<
< SELECT * FROM b;
<  aa  | bb
< -----+----
<  new |
<  new |
<  new |
<  new |
<  new |
<  new |
<  new |
<  new |
<  new |
<  new |
<  new |
<  new |
< (12 rows)
<
< SELECT * FROM c;
<     aa    | cc
< ----------+----
<  ccc      |
<  cccc     |
<  ccccc    |
<  cccccc   |
<  ccccccc  |
<  cccccccc |
<  new      |
<  new      |
<  new      |
<  new      |
<  new      |
<  new      |
< (12 rows)
<
< SELECT * FROM d;
<  aa  | bb | cc | dd
< -----+----+----+----
<  new |    |    |
<  new |    |    |
<  new |    |    |
<  new |    |    |
<  new |    |    |
<  new |    |    |
< (6 rows)
<
< SELECT * FROM ONLY a;
<    aa
< --------
<  zzzz
<  zzzzz
<  zzzzzz
<  zzzzzz
<  zzzzzz
<  zzzzzz
< (6 rows)
<
< SELECT * FROM ONLY b;
<  aa  | bb
< -----+----
<  new |
<  new |
<  new |
<  new |
<  new |
<  new |
< (6 rows)
<
< SELECT * FROM ONLY c;
<     aa    | cc
< ----------+----
<  ccc      |
<  cccc     |
<  ccccc    |
<  cccccc   |
<  ccccccc  |
<  cccccccc |
< (6 rows)
<
< SELECT * FROM ONLY d;
<  aa  | bb | cc | dd
< -----+----+----+----
<  new |    |    |
<  new |    |    |
<  new |    |    |
<  new |    |    |
<  new |    |    |
<  new |    |    |
< (6 rows)
<
< UPDATE a SET aa='new';
< DELETE FROM ONLY c WHERE aa='new';
< SELECT * FROM a;
<  aa
< -----
<  new
<  new
<  new
<  new
<  new
<  new
<  new
<  new
<  new
<  new
<  new
<  new
<  new
<  new
<  new
<  new
<  new
<  new
< (18 rows)
<
< SELECT * FROM b;
<  aa  | bb
< -----+----
<  new |
<  new |
<  new |
<  new |
<  new |
<  new |
<  new |
<  new |
<  new |
<  new |
<  new |
<  new |
< (12 rows)
<
< SELECT * FROM c;
<  aa  | cc
< -----+----
<  new |
<  new |
<  new |
<  new |
<  new |
<  new |
< (6 rows)
<
< SELECT * FROM d;
<  aa  | bb | cc | dd
< -----+----+----+----
<  new |    |    |
<  new |    |    |
<  new |    |    |
<  new |    |    |
<  new |    |    |
<  new |    |    |
< (6 rows)
<
< SELECT * FROM ONLY a;
<  aa
< -----
<  new
<  new
<  new
<  new
<  new
<  new
< (6 rows)
<
< SELECT * FROM ONLY b;
<  aa  | bb
< -----+----
<  new |
<  new |
<  new |
<  new |
<  new |
<  new |
< (6 rows)
<
< SELECT * FROM ONLY c;
<  aa | cc
< ----+----
< (0 rows)
<
< SELECT * FROM ONLY d;
<  aa  | bb | cc | dd
< -----+----+----+----
<  new |    |    |
<  new |    |    |
<  new |    |    |
<  new |    |    |
<  new |    |    |
<  new |    |    |
< (6 rows)
<
< DELETE FROM a;
< SELECT * FROM a;
<  aa
< ----
< (0 rows)
<
< SELECT * FROM b;
<  aa | bb
< ----+----
< (0 rows)
<
< SELECT * FROM c;
<  aa | cc
< ----+----
< (0 rows)
<
< SELECT * FROM d;
<  aa | bb | cc | dd
< ----+----+----+----
< (0 rows)
<
< SELECT * FROM ONLY a;
<  aa
< ----
< (0 rows)
<
< SELECT * FROM ONLY b;
<  aa | bb
< ----+----
< (0 rows)
<
< SELECT * FROM ONLY c;
<  aa | cc
< ----+----
< (0 rows)
<
< SELECT * FROM ONLY d;
<  aa | bb | cc | dd
< ----+----+----+----
< (0 rows)
<
---
> pqReadData() -- backend closed the channel unexpectedly.
>     This probably means the backend terminated abnormally
>     before or while processing the request.
> connection to server was lost
======   aggregates   ======
25c25
<      3.4
---
>     3.32
49c49
<      6.8
---
>     16.6
======   misc   ======
281c281,305
< (1 row)
---
>  b     |   3
>  b     |   4
>  c     |   5
>  c     |   6
>  d     |   7
>  d     |   8
>  d     |   9
>  d     |  10
>  d     |  11
>  d     |  12
>  d     |  13
>  d     |  14
>  e     |  15
>  e     |  16
>  e     |  17
>  e     |  18
>  f     |  19
>  f     |  20
>  f     |  21
>  f     |  22
>  f     |  24
>  f     |  25
>  f     |  26
>  f     |  27
> (25 rows)
425c449,450
< (3 rows)
---
>  jeff  | posthacking
> (4 rows)
476c501,503
< (4 rows)
---
>  jeff  | posthacking | advil
>  jeff  | posthacking | peet's coffee
> (6 rows)
503c530,532
< (4 rows)
---
>  advil         | jeff  | posthacking
>  peet's coffee | jeff  | posthacking
> (6 rows)
523c552,554
< (4 rows)
---
>  advil         | posthacking | jeff
>  peet's coffee | posthacking | jeff
> (6 rows)
539a571
>  a
543a576
>  b
550a584
>  c
558a593
>  d
626c661
< (86 rows)
---
> (90 rows)
======   select_views   ======
290c290,361
< (282 rows)
---
>  I- 580                             | [(-121.9322,37.989),(-121.9243,37.006),(-121.9217,37.014)]


                                                                                                          | Oakland 
>  I- 580                             |
[(-122.018,37.019),(-122.0009,37.032),(-121.9787,37.983),(-121.958,37.984),(-121.9571,37.986)]


                                                                 | Oakland 
>  I- 580                        Ramp |
[(-121.8521,37.011),(-121.8479,37.999),(-121.8476,37.999),(-121.8456,37.01),(-121.8455,37.011)]


                                                                 | Oakland 
>  I- 580                        Ramp | [(-121.8743,37.014),(-121.8722,37.999),(-121.8714,37.999)]


                                                                                                          | Oakland 
>  I- 580                        Ramp |
[(-121.9043,37.998),(-121.9036,37.013),(-121.902632,37.0174),(-121.9025,37.018)]


                                                                 | Oakland 
>  I- 580                        Ramp |
[(-121.9368,37.986),(-121.936483,37.98832),(-121.9353,37.997),(-121.93504,37.00035),(-121.9346,37.006),(-121.933764,37.00031),(-121.9333,37.997),(-121.9322,37.989)]


                     | Oakland 
>  I- 580/I-680                  Ramp | ((-121.9207,37.988),(-121.9192,37.016))


                                                                                                          | Oakland 
>  I- 680                             |
((-121.939,37.15),(-121.9387,37.145),(-121.9373,37.125),(-121.934242,37.07643),(-121.933886,37.0709),(-121.9337,37.068),(-121.933122,37.06139),(-121.932736,37.05698),(-121.93222,37.05108),(-121.931844,37.04678),(-121.930113,37.027),(-121.926829,37),(-121.9265,37.998),(-121.9217,37.96),(-121.9203,37.949),(-121.9184,37.934))
                                                                                                       | Oakland 
>  I- 680                             |
[(-121.9101,37.715),(-121.911269,37.74682),(-121.9119,37.764),(-121.9124,37.776),(-121.9174,37.905),(-121.9194,37.957),(-121.9207,37.988)]


                                               | Oakland 
>  I- 680                             | [(-121.9184,37.934),(-121.917,37.913),(-121.9122,37.83),(-121.9052,37.702)]


                                                                                                          | Oakland 
>  I- 680                        Ramp |
[(-121.8833,37.376),(-121.8833,37.392),(-121.883,37.4),(-121.8835,37.402),(-121.8852,37.422)]


                                                                 | Oakland 
>  I- 680                        Ramp | [(-121.92,37.438),(-121.9218,37.424),(-121.9238,37.408),(-121.9252,37.392)]


                                                                                                          | Oakland 
>  I- 680                        Ramp | [(-121.9238,37.402),(-121.9234,37.395),(-121.923,37.399)]


                                                                                                          | Oakland 
>  I- 880                             |
((-121.9669,37.075),(-121.9663,37.071),(-121.9656,37.065),(-121.9618,37.037),(-121.95689,37),(-121.948,37.933))


                                                                 | Oakland 
>  I- 880                             |
[(-121.948,37.933),(-121.9471,37.925),(-121.9467,37.923),(-121.946,37.918),(-121.9452,37.912),(-121.937,37.852)]


                                                                 | Oakland 
>  I- 580                             |
[(-121.727,37.074),(-121.7229,37.093),(-121.722301,37.09522),(-121.721001,37.10005),(-121.7194,37.106),(-121.7188,37.109),(-121.7168,37.12),(-121.7163,37.123),(-121.7145,37.127),(-121.7096,37.148),(-121.707731,37.1568),(-121.7058,37.166),(-121.7055,37.168),(-121.7044,37.174),(-121.7038,37.172),(-121.7037,37.172),(-121.7027,37.175),(-121.7001,37.181),(-121.6957,37.191),(-121.6948,37.192),(-121.6897,37.204),(-121.6697,37.185)]
|Oakland 
>  I- 680                             |
((-121.939,37.15),(-121.9387,37.145),(-121.9373,37.125),(-121.934242,37.07643),(-121.933886,37.0709),(-121.9337,37.068),(-121.933122,37.06139),(-121.932736,37.05698),(-121.93222,37.05108),(-121.931844,37.04678),(-121.930113,37.027),(-121.926829,37),(-121.9265,37.998),(-121.9217,37.96),(-121.9203,37.949),(-121.9184,37.934))
                                                                                                       | Oakland 
>  I- 880                             |
((-121.9669,37.075),(-121.9663,37.071),(-121.9656,37.065),(-121.9618,37.037),(-121.95689,37),(-121.948,37.933))


                                                                 | Oakland 
>  I- 880                             |
[(-122.0612,37.003),(-122.0604,37.991),(-122.0596,37.982),(-122.0585,37.967),(-122.0583,37.961),(-122.0553,37.918),(-122.053635,37.89475),(-122.050759,37.8546),(-122.05,37.844),(-122.0485,37.817),(-122.0483,37.813),(-122.0482,37.811)]

                                                                        | Oakland 
>  I- 880                             |
[(-122.0831,37.312),(-122.0819,37.296),(-122.081,37.285),(-122.0786,37.248),(-122.078,37.24),(-122.077642,37.23496),(-122.076983,37.22567),(-122.076599,37.22026),(-122.076229,37.21505),(-122.0758,37.209)]

                                                                                                      | Oakland 
>  I- 880                        Ramp | [(-122.0019,37.301),(-122.002,37.293)]


                                                                                                          | Oakland 
>  I- 880                        Ramp |
[(-122.0041,37.313),(-122.0018,37.315),(-122.0007,37.315),(-122.0005,37.313),(-122.0002,37.308),(-121.9995,37.289)]


                                                                 | Oakland 
>  I- 880                        Ramp |
[(-122.0041,37.313),(-122.0038,37.308),(-122.0039,37.284),(-122.0013,37.287),(-121.9995,37.289)]


                                                                 | Oakland 
>  I- 880                        Ramp | [(-122.059,37.982),(-122.0577,37.984),(-122.0612,37.003)]


                                                                                                          | Oakland 
>  I- 880                        Ramp | [(-122.0618,37.011),(-122.0631,37.982),(-122.0585,37.967)]


                                                                                                          | Oakland 
>  I- 880                        Ramp | [(-122.085,37.34),(-122.0801,37.316),(-122.081,37.285)]


                                                                                                          | Oakland 
>  I- 880                        Ramp | [(-122.085,37.34),(-122.0866,37.316),(-122.0819,37.296)]


                                                                                                          | Oakland 
>  I- 580                             |
[(-122.1108,37.023),(-122.1101,37.02),(-122.108103,37.00764),(-122.108,37.007),(-122.1069,37.998),(-122.1064,37.994),(-122.1053,37.982),(-122.1048,37.977),(-122.1032,37.958),(-122.1026,37.953),(-122.1013,37.938),(-122.0989,37.911),(-122.0984,37.91),(-122.098,37.908)]

                                       | Oakland 
>  I- 580                             |
[(-122.1543,37.703),(-122.1535,37.694),(-122.1512,37.655),(-122.1475,37.603),(-122.1468,37.583),(-122.1472,37.569),(-122.149044,37.54874),(-122.1493,37.546),(-122.1501,37.532),(-122.1506,37.509),(-122.1495,37.482),(-122.1487,37.467),(-122.1477,37.447),(-122.1414,37.383),(-122.1404,37.376),(-122.1398,37.372),(-122.139,37.356),(-122.1388,37.353),(-122.1385,37.34),(-122.1382,37.33),(-122.1378,37.316)]
                          | Oakland 
>  I- 580                        Ramp | [(-122.1086,37.003),(-122.1068,37.993),(-122.1066,37.992),(-122.1053,37.982)]


                                                                                                          | Oakland 
>  I- 580                        Ramp | [(-122.1414,37.383),(-122.1407,37.376),(-122.1403,37.372),(-122.139,37.356)]


                                                                                                          | Oakland 
>  I- 880                             |
[(-122.0375,37.632),(-122.0359,37.619),(-122.0358,37.616),(-122.034514,37.60409),(-122.031876,37.57965),(-122.031193,37.57332),(-122.03016,37.56375),(-122.02943,37.55698),(-122.028689,37.54929),(-122.027833,37.53908),(-122.025979,37.51698),(-122.0238,37.491)]

                                               | Oakland 
>  I- 880                             |
[(-122.0612,37.003),(-122.0604,37.991),(-122.0596,37.982),(-122.0585,37.967),(-122.0583,37.961),(-122.0553,37.918),(-122.053635,37.89475),(-122.050759,37.8546),(-122.05,37.844),(-122.0485,37.817),(-122.0483,37.813),(-122.0482,37.811)]

                                                                        | Oakland 
>  I- 880                             |
[(-122.0978,37.528),(-122.096,37.496),(-122.0931,37.453),(-122.09277,37.4496),(-122.090189,37.41442),(-122.0896,37.405),(-122.085,37.34)]


                                                | Oakland 
>  I- 880                             |
[(-122.1755,37.185),(-122.1747,37.178),(-122.1742,37.173),(-122.1692,37.126),(-122.167792,37.11594),(-122.16757,37.11435),(-122.1671,37.111),(-122.1655,37.1),(-122.165169,37.09811),(-122.1641,37.092),(-122.1596,37.061),(-122.158381,37.05275),(-122.155991,37.03657),(-122.1531,37.017),(-122.1478,37.98),(-122.1407,37.932),(-122.1394,37.924),(-122.1389,37.92),(-122.1376,37.91)]
                                                   | Oakland 
>  I- 880                        Ramp | [(-122.059,37.982),(-122.0577,37.984),(-122.0612,37.003)]


                                                                                                          | Oakland 
>  I- 880                        Ramp | [(-122.0618,37.011),(-122.0631,37.982),(-122.0585,37.967)]


                                                                                                          | Oakland 
>  I- 580                             |
[(-122.1108,37.023),(-122.1101,37.02),(-122.108103,37.00764),(-122.108,37.007),(-122.1069,37.998),(-122.1064,37.994),(-122.1053,37.982),(-122.1048,37.977),(-122.1032,37.958),(-122.1026,37.953),(-122.1013,37.938),(-122.0989,37.911),(-122.0984,37.91),(-122.098,37.908)]

                                       | Berkeley 
>  I- 580                             |
[(-122.1543,37.703),(-122.1535,37.694),(-122.1512,37.655),(-122.1475,37.603),(-122.1468,37.583),(-122.1472,37.569),(-122.149044,37.54874),(-122.1493,37.546),(-122.1501,37.532),(-122.1506,37.509),(-122.1495,37.482),(-122.1487,37.467),(-122.1477,37.447),(-122.1414,37.383),(-122.1404,37.376),(-122.1398,37.372),(-122.139,37.356),(-122.1388,37.353),(-122.1385,37.34),(-122.1382,37.33),(-122.1378,37.316)]
                          | Berkeley 
>  I- 580                             |
[(-122.2197,37.99),(-122.22,37.99),(-122.222092,37.99523),(-122.2232,37.998),(-122.224146,37.99963),(-122.2261,37.003),(-122.2278,37.007),(-122.2302,37.026),(-122.2323,37.043),(-122.2344,37.059),(-122.235405,37.06427),(-122.2365,37.07)]

                                                                      | Berkeley 
>  I- 580                        Ramp | [(-122.093241,37.90351),(-122.09364,37.89634),(-122.093788,37.89212)]


                                                                                                          | Berkeley 
>  I- 580                        Ramp | [(-122.0934,37.896),(-122.09257,37.89961),(-122.0911,37.906)]


                                                                                                          | Berkeley 
>  I- 580                        Ramp | [(-122.0941,37.897),(-122.0943,37.902)]


                                                                                                          | Berkeley 
>  I- 580                        Ramp | [(-122.096,37.888),(-122.0962,37.891),(-122.0964,37.9)]


                                                                                                          | Berkeley 
>  I- 580                        Ramp | [(-122.101,37.898),(-122.1005,37.902),(-122.0989,37.911)]


                                                                                                          | Berkeley 
>  I- 580                        Ramp | [(-122.1086,37.003),(-122.1068,37.993),(-122.1066,37.992),(-122.1053,37.982)]


                                                                                                          | Berkeley 
>  I- 880                             |
[(-122.0375,37.632),(-122.0359,37.619),(-122.0358,37.616),(-122.034514,37.60409),(-122.031876,37.57965),(-122.031193,37.57332),(-122.03016,37.56375),(-122.02943,37.55698),(-122.028689,37.54929),(-122.027833,37.53908),(-122.025979,37.51698),(-122.0238,37.491)]

                                               | Berkeley 
>  I- 880                             |
[(-122.0612,37.003),(-122.0604,37.991),(-122.0596,37.982),(-122.0585,37.967),(-122.0583,37.961),(-122.0553,37.918),(-122.053635,37.89475),(-122.050759,37.8546),(-122.05,37.844),(-122.0485,37.817),(-122.0483,37.813),(-122.0482,37.811)]

                                                                        | Berkeley 
>  I- 880                             |
[(-122.1365,37.902),(-122.1358,37.898),(-122.1333,37.881),(-122.1323,37.874),(-122.1311,37.866),(-122.1308,37.865),(-122.1307,37.864),(-122.1289,37.851),(-122.1277,37.843),(-122.1264,37.834),(-122.1231,37.812),(-122.1165,37.766),(-122.1104,37.72),(-122.109695,37.71094),(-122.109,37.702),(-122.108312,37.69168),(-122.1076,37.681)]
                                                                                                 | Berkeley 
>  I- 880                             |
[(-122.1755,37.185),(-122.1747,37.178),(-122.1742,37.173),(-122.1692,37.126),(-122.167792,37.11594),(-122.16757,37.11435),(-122.1671,37.111),(-122.1655,37.1),(-122.165169,37.09811),(-122.1641,37.092),(-122.1596,37.061),(-122.158381,37.05275),(-122.155991,37.03657),(-122.1531,37.017),(-122.1478,37.98),(-122.1407,37.932),(-122.1394,37.924),(-122.1389,37.92),(-122.1376,37.91)]
                                                   | Berkeley 
>  I- 880                             |
[(-122.2214,37.711),(-122.2202,37.699),(-122.2199,37.695),(-122.219,37.682),(-122.2184,37.672),(-122.2173,37.652),(-122.2159,37.638),(-122.2144,37.616),(-122.2138,37.612),(-122.2135,37.609),(-122.212,37.592),(-122.2116,37.586),(-122.2111,37.581)]

                                                            | Berkeley 
>  I- 880                             |
[(-122.2707,37.975),(-122.2693,37.972),(-122.2681,37.966),(-122.267,37.962),(-122.2659,37.957),(-122.2648,37.952),(-122.2636,37.946),(-122.2625,37.935),(-122.2617,37.927),(-122.2607,37.921),(-122.2593,37.916),(-122.258,37.911),(-122.2536,37.898),(-122.2432,37.858),(-122.2408,37.845),(-122.2386,37.827),(-122.2374,37.811)]
                                                                                                         | Berkeley 
>  I- 880                        Ramp | [(-122.059,37.982),(-122.0577,37.984),(-122.0612,37.003)]


                                                                                                          | Berkeley 
>  I- 880                        Ramp | [(-122.0618,37.011),(-122.0631,37.982),(-122.0585,37.967)]


                                                                                                          | Berkeley 
>  I- 880                        Ramp | [(-122.1029,37.61),(-122.1013,37.587),(-122.0999,37.569)]


                                                                                                          | Berkeley 
>  I- 880                        Ramp | [(-122.1379,37.891),(-122.1383,37.897),(-122.1377,37.902)]


                                                                                                          | Berkeley 
>  I- 880                        Ramp |
[(-122.1379,37.931),(-122.137597,37.92736),(-122.1374,37.925),(-122.1373,37.924),(-122.1369,37.914),(-122.1358,37.905),(-122.1365,37.908),(-122.1358,37.898)]


                            | Berkeley 
>  I- 880                        Ramp | [(-122.2536,37.898),(-122.254,37.902)]


                                                                                                          | Berkeley 
>  I- 580                             |
[(-122.2197,37.99),(-122.22,37.99),(-122.222092,37.99523),(-122.2232,37.998),(-122.224146,37.99963),(-122.2261,37.003),(-122.2278,37.007),(-122.2302,37.026),(-122.2323,37.043),(-122.2344,37.059),(-122.235405,37.06427),(-122.2365,37.07)]

                                                                      | Lafayette 
>  I- 80                         Ramp | [(-122.2962,37.413),(-122.2959,37.382),(-122.2951,37.372)]


                                                                                                          | Lafayette 
>  I- 880                        Ramp | [(-122.2771,37.002),(-122.278,37)]


                                                                                                          | Lafayette 
>  State Hwy 84                       |
[(-121.9565,37.898),(-121.956589,37.89911),(-121.9569,37.903),(-121.956,37.91),(-121.9553,37.919)]


                                                                 | Oakland 
>  State Hwy 92                       |
[(-122.1085,37.326),(-122.1095,37.322),(-122.1111,37.316),(-122.1119,37.313),(-122.1125,37.311),(-122.1131,37.308),(-122.1167,37.292),(-122.1187,37.285),(-122.12,37.28)]


                | Oakland 
>  State Hwy 92                  Ramp | [(-122.1086,37.321),(-122.1089,37.315),(-122.1111,37.316)]


                                                                                                          | Oakland 
>  State Hwy 238                      |
((-122.098,37.908),(-122.0983,37.907),(-122.099,37.905),(-122.101,37.898),(-122.101535,37.89711),(-122.103173,37.89438),(-122.1046,37.892),(-122.106,37.89))


                             | Berkeley 
>  State Hwy 238                 Ramp | [(-122.1288,37.9),(-122.1293,37.895),(-122.1296,37.906)]


                                                                                                          | Berkeley 
>  State Hwy 123                      |
[(-122.3004,37.986),(-122.2998,37.969),(-122.2995,37.962),(-122.2992,37.952),(-122.299,37.942),(-122.2987,37.935),(-122.2984,37.924),(-122.2982,37.92),(-122.2976,37.904),(-122.297,37.88),(-122.2966,37.869),(-122.2959,37.848),(-122.2961,37.843)]

                                                              | Berkeley 
>  State Hwy 13                       |
[(-122.1797,37.943),(-122.179871,37.91849),(-122.18,37.9),(-122.179023,37.86615),(-122.1787,37.862),(-122.1781,37.851),(-122.1777,37.845),(-122.1773,37.839),(-122.177,37.833)]


          | Berkeley 
>  State Hwy 24                       |
[(-122.2674,37.246),(-122.2673,37.248),(-122.267,37.261),(-122.2668,37.271),(-122.2663,37.298),(-122.2659,37.315),(-122.2655,37.336),(-122.265007,37.35882),(-122.264443,37.37286),(-122.2641,37.381),(-122.2638,37.388),(-122.2631,37.396),(-122.2617,37.405),(-122.2615,37.407),(-122.2605,37.412)]

             | Lafayette 
>  State Hwy 13                       |
[(-122.2049,37.2),(-122.20328,37.17975),(-122.1989,37.125),(-122.198078,37.11641),(-122.1975,37.11)]


                                                                 | Lafayette 
>  State Hwy 13                  Ramp | [(-122.2244,37.427),(-122.223,37.414),(-122.2214,37.396),(-122.2213,37.388)]


                                                                                                          | Lafayette 
> (353 rows)
======   rules   ======
1166,1186c1166,1186
<
--------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
<  iexit              | SELECT ih.name, ih.thepath, interpt_pp(ih.thepath, r.thepath) AS exit FROM ihighway ih, ramp r
WHERE(ih.thepath ## r.thepath); 
<  pg_indexes         | SELECT c.relname AS tablename, i.relname AS indexname, pg_get_indexdef(x.indexrelid) AS
indexdefFROM pg_index x, pg_class c, pg_class i WHERE ((c.oid = x.indrelid) AND (i.oid = x.indexrelid)); 
<  pg_rules           | SELECT c.relname AS tablename, r.rulename, pg_get_ruledef(r.rulename) AS definition FROM
pg_rewriter, pg_class c WHERE ((r.rulename !~ '^_RET'::text) AND (c.oid = r.ev_class)); 
<  pg_tables          | SELECT c.relname AS tablename, pg_get_userbyid(c.relowner) AS tableowner, c.relhasindex AS
hasindexes,c.relhasrules AS hasrules, (c.reltriggers > 0) AS hastriggers FROM pg_class c WHERE (((c.relkind =
'r'::"char")OR (c.relkind = 's'::"char")) AND (NOT (EXISTS (SELECT pg_rewrite.rulename FROM pg_rewrite WHERE
((pg_rewrite.ev_class= c.oid) AND (pg_rewrite.ev_type = '1'::"char")))))); 
<  pg_user            | SELECT pg_shadow.usename, pg_shadow.usesysid, pg_shadow.usecreatedb, pg_shadow.usetrace,
pg_shadow.usesuper,pg_shadow.usecatupd, '********'::text AS passwd, pg_shadow.valuntil FROM pg_shadow; 
<  pg_views           | SELECT c.relname AS viewname, pg_get_userbyid(c.relowner) AS viewowner,
pg_get_viewdef(c.relname)AS definition FROM pg_class c WHERE (c.relhasrules AND (EXISTS (SELECT r.rulename FROM
pg_rewriter WHERE ((r.ev_class = c.oid) AND (r.ev_type = '1'::"char"))))); 
<  rtest_v1           | SELECT rtest_t1.a, rtest_t1.b FROM rtest_t1;
<  rtest_vcomp        | SELECT x.part, (x.size * y.factor) AS size_in_cm FROM rtest_comp x, rtest_unitfact y WHERE
(x.unit= y.unit); 
<  rtest_vview1       | SELECT x.a, x.b FROM rtest_view1 x WHERE (0 < (SELECT count(*) AS count FROM rtest_view2 y
WHERE(y.a = x.a))); 
<  rtest_vview2       | SELECT rtest_view1.a, rtest_view1.b FROM rtest_view1 WHERE rtest_view1.v;
<  rtest_vview3       | SELECT x.a, x.b FROM rtest_vview2 x WHERE (0 < (SELECT count(*) AS count FROM rtest_view2 y
WHERE(y.a = x.a))); 
<  rtest_vview4       | SELECT x.a, x.b, count(y.a) AS refcount FROM rtest_view1 x, rtest_view2 y WHERE (x.a = y.a)
GROUPBY x.a, x.b; 
<  rtest_vview5       | SELECT rtest_view1.a, rtest_view1.b, rtest_viewfunc1(rtest_view1.a) AS refcount FROM
rtest_view1;
<  shoe               | SELECT sh.shoename, sh.sh_avail, sh.slcolor, sh.slminlen, (sh.slminlen * un.un_fact) AS
slminlen_cm,sh.slmaxlen, (sh.slmaxlen * un.un_fact) AS slmaxlen_cm, sh.slunit FROM shoe_data sh, unit un WHERE
(sh.slunit= un.un_name); 
<  shoe_ready         | SELECT rsh.shoename, rsh.sh_avail, rsl.sl_name, rsl.sl_avail, int4smaller(rsh.sh_avail,
rsl.sl_avail)AS total_avail FROM shoe rsh, shoelace rsl WHERE (((rsl.sl_color = rsh.slcolor) AND (rsl.sl_len_cm >=
rsh.slminlen_cm))AND (rsl.sl_len_cm <= rsh.slmaxlen_cm)); 
<  shoelace           | SELECT s.sl_name, s.sl_avail, s.sl_color, s.sl_len, s.sl_unit, (s.sl_len * u.un_fact) AS
sl_len_cmFROM shoelace_data s, unit u WHERE (s.sl_unit = u.un_name); 
<  shoelace_candelete | SELECT shoelace_obsolete.sl_name, shoelace_obsolete.sl_avail, shoelace_obsolete.sl_color,
shoelace_obsolete.sl_len,shoelace_obsolete.sl_unit, shoelace_obsolete.sl_len_cm FROM shoelace_obsolete WHERE
(shoelace_obsolete.sl_avail= 0); 
<  shoelace_obsolete  | SELECT shoelace.sl_name, shoelace.sl_avail, shoelace.sl_color, shoelace.sl_len,
shoelace.sl_unit,shoelace.sl_len_cm FROM shoelace WHERE (NOT (EXISTS (SELECT shoe.shoename FROM shoe WHERE
(shoe.slcolor= shoelace.sl_color)))); 
<  street             | SELECT r.name, r.thepath, c.cname FROM road r, real_city c WHERE (c.outline ## r.thepath);
<  toyemp             | SELECT emp.name, emp.age, emp."location", (12 * emp.salary) AS annualsal FROM emp;
---
>
--------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
>  iexit              | SELECT ih.name, ih.thepath, interpt_pp(ih.thepath, r.thepath) AS exit FROM ihighway* ih, ramp*
rWHERE (ih.thepath ## r.thepath); 
>  pg_indexes         | SELECT c.relname AS tablename, i.relname AS indexname, pg_get_indexdef(x.indexrelid) AS
indexdefFROM pg_index* x, pg_class* c, pg_class* i WHERE ((c.oid = x.indrelid) AND (i.oid = x.indexrelid)); 
>  pg_rules           | SELECT c.relname AS tablename, r.rulename, pg_get_ruledef(r.rulename) AS definition FROM
pg_rewrite*r, pg_class* c WHERE ((r.rulename !~ '^_RET'::text) AND (c.oid = r.ev_class)); 
>  pg_tables          | SELECT c.relname AS tablename, pg_get_userbyid(c.relowner) AS tableowner, c.relhasindex AS
hasindexes,c.relhasrules AS hasrules, (c.reltriggers > 0) AS hastriggers FROM pg_class* c WHERE (((c.relkind =
'r'::"char")OR (c.relkind = 's'::"char")) AND (NOT (EXISTS (SELECT pg_rewrite.rulename FROM pg_rewrite* WHERE
((pg_rewrite.ev_class= c.oid) AND (pg_rewrite.ev_type = '1'::"char")))))); 
>  pg_user            | SELECT pg_shadow.usename, pg_shadow.usesysid, pg_shadow.usecreatedb, pg_shadow.usetrace,
pg_shadow.usesuper,pg_shadow.usecatupd, '********'::text AS passwd, pg_shadow.valuntil FROM pg_shadow*; 
>  pg_views           | SELECT c.relname AS viewname, pg_get_userbyid(c.relowner) AS viewowner,
pg_get_viewdef(c.relname)AS definition FROM pg_class* c WHERE (c.relhasrules AND (EXISTS (SELECT r.rulename FROM
pg_rewrite*r WHERE ((r.ev_class = c.oid) AND (r.ev_type = '1'::"char"))))); 
>  rtest_v1           | SELECT rtest_t1.a, rtest_t1.b FROM rtest_t1*;
>  rtest_vcomp        | SELECT x.part, (x.size * y.factor) AS size_in_cm FROM rtest_comp* x, rtest_unitfact* y WHERE
(x.unit= y.unit); 
>  rtest_vview1       | SELECT x.a, x.b FROM rtest_view1* x WHERE (0 < (SELECT count(*) AS count FROM rtest_view2* y
WHERE(y.a = x.a))); 
>  rtest_vview2       | SELECT rtest_view1.a, rtest_view1.b FROM rtest_view1* WHERE rtest_view1.v;
>  rtest_vview3       | SELECT x.a, x.b FROM rtest_vview2* x WHERE (0 < (SELECT count(*) AS count FROM rtest_view2* y
WHERE(y.a = x.a))); 
>  rtest_vview4       | SELECT x.a, x.b, count(y.a) AS refcount FROM rtest_view1* x, rtest_view2* y WHERE (x.a = y.a)
GROUPBY x.a, x.b; 
>  rtest_vview5       | SELECT rtest_view1.a, rtest_view1.b, rtest_viewfunc1(rtest_view1.a) AS refcount FROM
rtest_view1*;
>  shoe               | SELECT sh.shoename, sh.sh_avail, sh.slcolor, sh.slminlen, (sh.slminlen * un.un_fact) AS
slminlen_cm,sh.slmaxlen, (sh.slmaxlen * un.un_fact) AS slmaxlen_cm, sh.slunit FROM shoe_data* sh, unit* un WHERE
(sh.slunit= un.un_name); 
>  shoe_ready         | SELECT rsh.shoename, rsh.sh_avail, rsl.sl_name, rsl.sl_avail, int4smaller(rsh.sh_avail,
rsl.sl_avail)AS total_avail FROM shoe* rsh, shoelace* rsl WHERE (((rsl.sl_color = rsh.slcolor) AND (rsl.sl_len_cm >=
rsh.slminlen_cm))AND (rsl.sl_len_cm <= rsh.slmaxlen_cm)); 
>  shoelace           | SELECT s.sl_name, s.sl_avail, s.sl_color, s.sl_len, s.sl_unit, (s.sl_len * u.un_fact) AS
sl_len_cmFROM shoelace_data* s, unit* u WHERE (s.sl_unit = u.un_name); 
>  shoelace_candelete | SELECT shoelace_obsolete.sl_name, shoelace_obsolete.sl_avail, shoelace_obsolete.sl_color,
shoelace_obsolete.sl_len,shoelace_obsolete.sl_unit, shoelace_obsolete.sl_len_cm FROM shoelace_obsolete* WHERE
(shoelace_obsolete.sl_avail= 0); 
>  shoelace_obsolete  | SELECT shoelace.sl_name, shoelace.sl_avail, shoelace.sl_color, shoelace.sl_len,
shoelace.sl_unit,shoelace.sl_len_cm FROM shoelace* WHERE (NOT (EXISTS (SELECT shoe.shoename FROM shoe* WHERE
(shoe.slcolor= shoelace.sl_color)))); 
>  street             | SELECT r.name, r.thepath, c.cname FROM road* r, real_city* c WHERE (c.outline ## r.thepath);
>  toyemp             | SELECT emp.name, emp.age, emp."location", (12 * emp.salary) AS annualsal FROM emp*;
1192c1192
<
---------------+-----------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
---
>
---------------+-----------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
1204,1207c1204,1207
<  rtest_person  | rtest_pers_del  | CREATE RULE rtest_pers_del AS ON DELETE TO rtest_person DO DELETE FROM rtest_admin
WHERE(rtest_admin.pname = old.pname); 
<  rtest_person  | rtest_pers_upd  | CREATE RULE rtest_pers_upd AS ON UPDATE TO rtest_person DO UPDATE rtest_admin SET
pname= new.pname WHERE (rtest_admin.pname = old.pname); 
<  rtest_system  | rtest_sys_del   | CREATE RULE rtest_sys_del AS ON DELETE TO rtest_system DO (DELETE FROM
rtest_interfaceWHERE (rtest_interface.sysname = old.sysname); DELETE FROM rtest_admin WHERE (rtest_admin.sysname =
old.sysname);); 
<  rtest_system  | rtest_sys_upd   | CREATE RULE rtest_sys_upd AS ON UPDATE TO rtest_system DO (UPDATE rtest_interface
SETsysname = new.sysname WHERE (rtest_interface.sysname = old.sysname); UPDATE rtest_admin SET sysname = new.sysname
WHERE(rtest_admin.sysname = old.sysname); ); 
---
>  rtest_person  | rtest_pers_del  | CREATE RULE rtest_pers_del AS ON DELETE TO rtest_person DO DELETE FROM
rtest_admin*WHERE (rtest_admin.pname = old.pname); 
>  rtest_person  | rtest_pers_upd  | CREATE RULE rtest_pers_upd AS ON UPDATE TO rtest_person DO UPDATE rtest_admin* SET
pname= new.pname WHERE (rtest_admin.pname = old.pname); 
>  rtest_system  | rtest_sys_del   | CREATE RULE rtest_sys_del AS ON DELETE TO rtest_system DO (DELETE FROM
rtest_interface*WHERE (rtest_interface.sysname = old.sysname); DELETE FROM rtest_admin* WHERE (rtest_admin.sysname =
old.sysname);); 
>  rtest_system  | rtest_sys_upd   | CREATE RULE rtest_sys_upd AS ON UPDATE TO rtest_system DO (UPDATE rtest_interface*
SETsysname = new.sysname WHERE (rtest_interface.sysname = old.sysname); UPDATE rtest_admin* SET sysname = new.sysname
WHERE(rtest_admin.sysname = old.sysname); ); 
1212c1212
<  rtest_v1      | rtest_v1_del    | CREATE RULE rtest_v1_del AS ON DELETE TO rtest_v1 DO INSTEAD DELETE FROM rtest_t1
WHERE(rtest_t1.a = old.a); 
---
>  rtest_v1      | rtest_v1_del    | CREATE RULE rtest_v1_del AS ON DELETE TO rtest_v1 DO INSTEAD DELETE FROM rtest_t1*
WHERE(rtest_t1.a = old.a); 
1214,1215c1214,1215
<  rtest_v1      | rtest_v1_upd    | CREATE RULE rtest_v1_upd AS ON UPDATE TO rtest_v1 DO INSTEAD UPDATE rtest_t1 SET a
=new.a, b = new.b WHERE (rtest_t1.a = old.a); 
<  shoelace      | shoelace_del    | CREATE RULE shoelace_del AS ON DELETE TO shoelace DO INSTEAD DELETE FROM
shoelace_dataWHERE (shoelace_data.sl_name = old.sl_name); 
---
>  rtest_v1      | rtest_v1_upd    | CREATE RULE rtest_v1_upd AS ON UPDATE TO rtest_v1 DO INSTEAD UPDATE rtest_t1* SET
a= new.a, b = new.b WHERE (rtest_t1.a = old.a); 
>  shoelace      | shoelace_del    | CREATE RULE shoelace_del AS ON DELETE TO shoelace DO INSTEAD DELETE FROM
shoelace_data*WHERE (shoelace_data.sl_name = old.sl_name); 
1217c1217
<  shoelace      | shoelace_upd    | CREATE RULE shoelace_upd AS ON UPDATE TO shoelace DO INSTEAD UPDATE shoelace_data
SETsl_name = new.sl_name, sl_avail = new.sl_avail, sl_color = new.sl_color, sl_len = new.sl_len, sl_unit = new.sl_unit
WHERE(shoelace_data.sl_name = old.sl_name); 
---
>  shoelace      | shoelace_upd    | CREATE RULE shoelace_upd AS ON UPDATE TO shoelace DO INSTEAD UPDATE shoelace_data*
SETsl_name = new.sl_name, sl_avail = new.sl_avail, sl_color = new.sl_color, sl_len = new.sl_len, sl_unit = new.sl_unit
WHERE(shoelace_data.sl_name = old.sl_name); 
1219c1219
<  shoelace_ok   | shoelace_ok_ins | CREATE RULE shoelace_ok_ins AS ON INSERT TO shoelace_ok DO INSTEAD UPDATE shoelace
SETsl_avail = (shoelace.sl_avail + new.ok_quant) WHERE (shoelace.sl_name = new.ok_name); 
---
>  shoelace_ok   | shoelace_ok_ins | CREATE RULE shoelace_ok_ins AS ON INSERT TO shoelace_ok DO INSTEAD UPDATE
shoelace*SET sl_avail = (shoelace.sl_avail + new.ok_quant) WHERE (shoelace.sl_name = new.ok_name); 

pgsql-patches by date:

Previous
From: Bruce Momjian
Date:
Subject: Re: [CORE] Re: MY PATCH
Next
From: Chris Bitmead
Date:
Subject: Re: Re: [CORE] Re: MY PATCH