Re: Fallo Initdb (Era: Sumar TIMESTAMP + TIME en el Source Code)

From: Alvaro Herrera <alvherre(at)commandprompt(dot)com>
To: Luis D(dot) García <ldgarc(at)gmail(dot)com>
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Fallo Initdb (Era: Sumar TIMESTAMP + TIME en el Source Code)
Date: 2007-09-04 02:41:35
Message-ID: 20070904024135.GG10282@alvh.no-ip.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Luis D. García escribió:

Hola,

> > Ahh ya se lo que estas haciendo -- estas copiando el truco en
> > pg_authid.h. Lo siento, no puedes hacer eso porque como ahi se
> > especifica, en ese catalogo es posible que esa columna sea NULL, lo cual
> > te permite algunas libertadas; pero aca no puedes hacer eso.
>
>
> En efecto es eso lo que he estado tratando de hacer pues justamente en el
> pg_authid
> es el único lugar del catálogo donde utilizan un Timestamp.
>
> > Lo siento mucho, es mas dificil de lo que esperabas, pero estas en
> > territorio sin cartografiar. Buena suerte. El proyecto en GSoC que
> > estoy apadrinando esta en tu mismo problema, quizas puedan compartir la
> > experiencia.
>
> Resolví el problema que tenía con el Initdb, pero lamentablemente no
> pude llegar a almacenar los datos que tenia como Timestamp e Interval,
> tuve que seguir haciéndolo por medio del tipo de dato Namedata para
> que no me diese problemas.

OK, estas abusando un poco el sistema al meter un timestamp en un campo
de ancho fijo. Es un hack algo feo pero deberia funcionar. (Antes
cuando decias "un char *" yo me estaba imaginando un puntero comun y
corriente, lo cual es imposible que funcione porque las definiciones de
catalogo se mapean directamente en structs de C. Al usar ancho fijo se
obvia este problema, siempre y cuando tengas cuidado de establecer
valores que no sobrepasen el ancho definido del campo, cosa que en tu
caso no es difícil porque los timestamp no son demasiado largos).

Quizás con un interval raro podrías tener problema, si te llega a tocar
algo como

99 years 11 month 29 days 10:30:10
hmm, no sé como hacerlo más largo, tendría que sobrepasar 63 caracteres
para que hubiera un problema :-)

> En realidad no sé si en tu caso te podrá servir, pero al menos en el
> mío fue lo que me funcionó de acuerdo a lo que necesitaba y como tengo
> muy poco tiempo para terminar con la codificación de mi tesis prefiero
> seguir de esta manera, al menos hasta que tenga tiempo para depurar
> todos los cambios que he hecho.

Claro; lo leí y debería funcionar, pero esta forma de hacerlo sería
rechazada si quisieras enviar el parche como contribución para que fuera
incluido en Postgres. En todo caso, para tu tesis quizás no sea un
punto importante; dado que te funciona debería estar OK. Si algún día
quieres limpiarlo tendrás que arreglártelas no sólo para que la
definicion de FormData_pg_class sea aceptable, sino que además deberás
arreglar el modo bootstrap para que reconozca los tipos Timestamp e
Interval. Con eso, de paso podrías eliminar el hack que se usa en
pg_auth_id.

--
Alvaro Herrera http://www.CommandPrompt.com/
The PostgreSQL Company - Command Prompt, Inc.

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Jaime Casanova 2007-09-04 02:45:27 Re: cargar miles de registros en forma recurrente
Previous Message Jaime Casanova 2007-09-04 02:23:22 Re: Estimación de tamaño de tablas