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.
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 |