[Pgsql-ayuda] Longitud de campos string
Alvaro Herrera
alvherre@dcc.uchile.cl
Tue, 2 Sep 2003 15:05:54 -0400
On Tue, Sep 02, 2003 at 12:56:49PM -0500, Manuel Sugawara wrote:
> Alvaro Herrera <alvherre@dcc.uchile.cl> writes:
>
> > On Wed, Sep 03, 2003 at 01:01:22AM -0400, Edwin Quijada wrote:
> > > Es a char , varchar y bpchar.
> > > Lo que deseo es saber cual es la longitd del campo para luego truncarlo en
> > > caso de ser necesario mediante un trigger.
> >
> > Lee el campo attypmod de la tabla pg_attribute y restale 4.
>
> ¿no sería más general restarle sizeof(int)?.
Me parece que los campos varlena (text, varchar, numeric, etc) tienen un
largo codificado en 4 bytes, aunque sea en maquinas de 64 bits. Eso es
lo que me parece entender en src/include/access/postgres.h:
/* ----------------
* struct varattrib is the header of a varlena object that may have been
* TOASTed.
* ----------------
*/
typedef struct varattrib
{
int32 va_header; /* External/compressed storage */
union
[...]
--
Alvaro Herrera (<alvherre[a]dcc.uchile.cl>)
"If it wasn't for my companion, I believe I'd be having
the time of my life" (John Dunbar)