On Mon, Apr 09, 2007 at 10:40:49AM -0400, Tom Lane wrote:
> Andrew Dunstan <[EMAIL PROTECTED]> writes:
> > Regarding catalog objects, we might have to try a little harder than 
> > just not generating in bootstrap mode - IIRC we generate system views 
> > (including pg_stats) in non-bootstrap mode. Maybe we just need to exempt 
> > anything in the pg_catalog namespace. What would happen if a user 
> > created a view over pg_statistic?
> 
> Nothing:
> 
> regression=# create view vvv as select * from pg_statistic;
> ERROR:  column "stavalues1" has pseudo-type anyarray
> 
> which means we do have an issue for the pg_stats view.  Now that I look
> instead of guessing, the existing test in CheckAttributeType is not on
> bootstrap mode but standalone mode:
> 
>         /* Special hack for pg_statistic: allow ANYARRAY during initdb */
>         if (atttypid != ANYARRAYOID || IsUnderPostmaster)
>             ereport(ERROR,
>                     (errcode(ERRCODE_INVALID_TABLE_DEFINITION),
>                      errmsg("column \"%s\" has pseudo-type %s",
>                             attname, format_type_be(atttypid))));
> 
> so for consistency we should use the same condition to suppress types
> for system catalogs.

Groovy :)

> > Or maybe we should go to the heart 
> > of the problem and simply check for pseudo-types directly.
> 
> Actually we may have an issue already:
> 
> regression=# create table zzz (f1 pg_statistic);
> CREATE TABLE
> 
> I couldn't make it misbehave in a short amount of trying:
> 
> regression=# insert into zzz 
> values(row(0,0,0,0,0,0,0,0,0,0,0,0,0,array[1,2],null,null,null,array[12,13],null,null,null));
> ERROR:  ROW() column has type integer[] instead of type anyarray
> 
> but I don't feel comfortable about this at all.  Maybe
> CheckAttributeType should be made to recurse into composite columns.

That'd be great :)

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

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

---------------------------(end of broadcast)---------------------------
TIP 5: don't forget to increase your free space map settings

Reply via email to