From: | Alvaro Herrera <alvherre(at)2ndquadrant(dot)com> |
---|---|
To: | anthony <asotolongo(at)uci(dot)cu> |
Cc: | Ayuda <pgsql-es-ayuda(at)postgresql(dot)org> |
Subject: | Re: OT[extensión con tipo de dato email] |
Date: | 2013-05-10 22:58:53 |
Message-ID: | 20130510225852.GF17166@eldon.alvh.no-ip.org |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
anthony escribió:
> Hola colegas les escribo para dejarles a su consideración una
> extensión que desarrollamos acá que consiste en un tipo de dato
> nuevo email, quisiera que si tienen un tiempo la probaran y nos
> ayudaran a solucionar posibles bugs, esta es la
> URL: http://pgxn.org/dist/email/0.1.0/
Bah, lo primero que me imaginé es que el tipo servía para almacenar un
email, es decir un correo completo (encabezado, cuerpo, attachments,
etc) pero realmente lo que hace es almacenar una dirección.
Honestamente creo que tu tipo es demasiado simplista, sólo puede
almacenar la dirección en crudo. Para que fuera interesante desde mi
punto de vista, tendrías que soportar el formato completo:
"Nombre y demás" <la(dot)direccion(at)propiamente(dot)tal>
Esto aparece en https://tools.ietf.org/html/rfc5322#section-3.4
Ahora, dejando eso de lado, suponiendo que sólo quieres almacenar
direcciones "en crudo" del tipo que se puede poner en el "envelope" de
un correo (en vez de en el To: o Cc:, que son las que describe el
párrafo de arriba), entonces de todas maneras tu tipo se queda corto; la
validación con una regex es un tema que ha sido bien debatido y no se
considera buena idea. Por ej. dale una leída a
http://blog.dominicsayers.com/category/email-address-validation/
https://en.wikipedia.org/wiki/Email_address
Principalmente considera que una @ puede aparecer en la "parte local",
siempre y cuando esté entre comillas, o sea "alv(at)ro"@example.com sería
una dirección válida, aún cuando tu código (creo que) presentaría varios
errores al recibirla.
Un tercer tema es el almacenamiento. No leí tu código en detalle pero
me parece que tomas el string y lo almacenas tal cual; luego para buscar
la parte local y el dominio tienes que leer todo y volver a procesar.
Me permito sugerir que proceses una vez durante la función input, y
guardes el resultado del procesamiento. Por ej. podrías guardar
8alvherrealvh.no-ip.org
donde primero se almacena el largo de la parte local, luego la parte
local, y luego el dominio hasta el final del valor. Entonces puedes
obtener la parte local leyendo el largo y a continuación la cantidad de
bytes del largo; y puedes obtener el dominio leyendo el largo, saltando
esa cantidad de bytes, y luego leyendo hasta el final del dato. No
necesitas buscar una @ para obtener ninguno de los dos, por lo tanto la
parte local podría contener una y no te causaría ningún problema.
¿cuál es el propósito de tener tanto get_user como getuser?
--
Álvaro Herrera http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Training & Services
-
Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda(at)postgresql(dot)org)
Para cambiar tu suscripción:
http://www.postgresql.org/mailpref/pgsql-es-ayuda
From | Date | Subject | |
---|---|---|---|
Next Message | Alvaro Herrera | 2013-05-11 03:13:09 | Re: OT[extensión con tipo de dato email] |
Previous Message | Martín Marqués | 2013-05-10 21:05:38 | Re: [pgsql-es-ayuda] OT[extensión con tipo de dato email] |