attislocal value changed with dump - Mailing list pgsql-bugs

From elein
Subject attislocal value changed with dump
Date
Msg-id 20051103175917.GQ26501@varlena.com
Whole thread Raw
Responses Re: attislocal value changed with dump  (Alvaro Herrera <alvherre@commandprompt.com>)
List pgsql-bugs
The problem is that after a dump and reload of
a table hierarchy there are different values in
pg_attribute.attislocal.

A quick grep shows few references to attislocal.
But I cannot say for sure it is unused since it is
documented.  However, I'm looking at a db diff
tool and there it does matter.

This is the setup:

I've got an inheritance hierarchy, answer_values
with a bunch of answer_[type] tables inheriting
from it.

tiny=# \d answer_values
                            Table "public.answer_values"
 Column |  Type   |                            Modifiers
--------+---------+-----------------------------------------------------------------
 orid   | integer | not null
 qid    | integer | not null
 avid   | integer | not null default nextval('public.answer_values_avid_seq'::text)
 atype  | text    |
 ncols  | integer |
Indexes:
    "answer_values_pkey" PRIMARY KEY, btree (orid, qid, avid)

tiny=# \d answer_text
                         Table "public.answer_text"
 Column |  Type   |                        Modifiers
--------+---------+----------------------------------------------------------
 orid   | integer | not null
 qid    | integer | not null
 avid   | integer | not null default nextval('answer_values_avid_seq'::text)
 atype  | text    |
 ncols  | integer |
 avalue | text    |
Indexes:
    "answer_text_pk" UNIQUE, btree (avid)
Inherits: answer_values


* In 8.0.4,
* created a clean db (tiny) and loaded the SQL to define the hierarchy.
* pg_dump tiny > tiny.dat
* createdb tiny2
* psql < tiny.dat

After this, looking at the 'avid' attribute in the
pg_attribute table all of tables loaded in the second
db have 't' for attislocal.  This is different from
the original definition.


tiny=# select r.relname, attname, attislocal, attinhcount from pg_attribute a join pg_class r ON (a.attrelid = r.oid)
whereattname = 'avid' order by relname; 
       relname        | attname | attislocal | attinhcount
----------------------+---------+------------+-------------
 answer_addr          | avid    | f          |           1
 answer_addr_pk       | avid    | t          |           0
 answer_bool_pk       | avid    | t          |           0
 answer_boolean       | avid    | f          |           1
 answer_date          | avid    | f          |           1
 answer_date_pk       | avid    | t          |           0
 answer_date_range    | avid    | f          |           1
 answer_dater_pk      | avid    | t          |           0
 answer_float         | avid    | f          |           1
 answer_flt_pk        | avid    | t          |           0
 answer_num_pk        | avid    | t          |           0
 answer_numeric       | avid    | f          |           1
 answer_numeric_range | avid    | f          |           1
 answer_numr_pk       | avid    | t          |           0
 answer_text          | avid    | f          |           1
 answer_text_pk       | avid    | t          |           0
 answer_values        | avid    | t          |           0
 answer_values_pkey   | avid    | t          |           0
 av_v                 | avid    | t          |           0
(19 rows)

tiny2=# select r.relname, attname, attislocal, attinhcount from pg_attribute a join pg_class r ON (a.attrelid = r.oid)
whereattname = 'avid' order by relname; 
       relname        | attname | attislocal | attinhcount
----------------------+---------+------------+-------------
 answer_addr          | avid    | t          |           1
 answer_addr_pk       | avid    | t          |           0
 answer_bool_pk       | avid    | t          |           0
 answer_boolean       | avid    | t          |           1
 answer_date          | avid    | t          |           1
 answer_date_pk       | avid    | t          |           0
 answer_date_range    | avid    | t          |           1
 answer_dater_pk      | avid    | t          |           0
 answer_float         | avid    | t          |           1
 answer_flt_pk        | avid    | t          |           0
 answer_num_pk        | avid    | t          |           0
 answer_numeric       | avid    | t          |           1
 answer_numeric_range | avid    | t          |           1
 answer_numr_pk       | avid    | t          |           0
 answer_text          | avid    | t          |           1
 answer_text_pk       | avid    | t          |           0
 answer_values        | avid    | t          |           0
 answer_values_pkey   | avid    | t          |           0
 av_v                 | avid    | t          |           0
(19 rows)


----- End forwarded message -----

pgsql-bugs by date:

Previous
From: Tom Lane
Date:
Subject: Re: BUG #2017: column labels ignored on selects from views
Next
From: Alvaro Herrera
Date:
Subject: Re: attislocal value changed with dump