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.direcc...@propiamente.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@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@postgresql.org) Para cambiar tu suscripción: http://www.postgresql.org/mailpref/pgsql-es-ayuda