Thread

  1. problem with arrays

    Massimo Dal Zotto <dz@cs.unitn.it> — 1999-01-06T16:39:09Z

    Hi,
    
    I'm trying to convert some tables from version 6.2 to 6.4.2 but I have
    problems with arrays. The old table definition was:
    
      create table a (
    	x int4,
    	y char8,
    	z char8[]
      );
    
    Now, because the char8 datatype has been removed from postgres, I suppose
    I should use char(8) or varchar(8):
    
      create table a (
    	x int4,
    	y char(8),
    	z char(8)[]
      );
    
    or
    
      create table a (
    	x int4,
    	y varchar(8),
    	z varchar(8)[]
      );
    
    but when I try the above definitions I get the following errors:
    
    dz=> create table a (
    dz-> 	x int4,
    dz-> 	y char(8),
    dz-> 	z char(8)[]
    dz-> );
    ERROR:  type name lookup of _bpchar failed
    
    dz=> create table a (
    dz-> 	x int4,
    dz-> 	y varchar(8),
    dz-> 	z varchar(8)[]
    dz-> );
    ERROR:  type name lookup of _varchar failed
    
    Also trying to define the _varchar or _bpchar types fails, so it seems that
    the conversion from 6.2 to 6.4 is not possible for many data types.
    Any suggestion?
    
    -- 
    Massimo Dal Zotto
    
    +----------------------------------------------------------------------+
    |  Massimo Dal Zotto               email: dz@cs.unitn.it               |
    |  Via Marconi, 141                phone: ++39-0461534251              |
    |  38057 Pergine Valsugana (TN)      www: http://www.cs.unitn.it/~dz/  |
    |  Italy                             pgp: finger dz@tango.cs.unitn.it  |
    +----------------------------------------------------------------------+
    
    
  2. Re: [HACKERS] problem with arrays

    Thomas Lockhart <lockhart@alumni.caltech.edu> — 1999-01-07T02:46:44Z

    > Also trying to define the _varchar or _bpchar types fails, so it seems 
    > that the conversion from 6.2 to 6.4 is not possible for many data 
    > types. Any suggestion?
    
    That sucks. afaik the only data types affected are the fixed-maximum
    with variable-length strings. There was a comment in gram.y from Jolly
    regarding the possibility for allowing bpchar and varchar into arrays,
    though she explicitly disallowed it. I had thought that this code is
    still in effect.
    
    I'm not certain how much you have looked at this, but the leading
    underscore is a Postgres convention for array data types. The trick to
    allowing bpchar, varchar, and perhaps numeric types into arrays is
    passing along the element dimensions. I haven't looked at whether that
    already happens.
    
    In the meantime, you can try using the text type instead. I know it
    doesn't have an 8-byte maximum length, but it is allowed in arrays...
    
                          - Tom