From: | Alvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org> |
---|---|
To: | "Ing(dot) Marcos Ortiz Valmaseda" <mlortiz(at)uci(dot)cu> |
Cc: | POSTGRESQL - Ayuda <pgsql-es-ayuda(at)postgresql(dot)org> |
Subject: | Re: Sobre la implementación de SQL/MED en PostgreSQL |
Date: | 2010-03-11 19:55:12 |
Message-ID: | 20100311195512.GB3512@alvh.no-ip.org |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
Ing. Marcos Ortiz Valmaseda escribió:
> Por ejemplo:
> ¿Dónde puedo encontrar documentación sobre:
> GNU Bison: Construcción del árbol abstracto sintáctico a partir de
> la secuencia de tokens producto del parser. (Parsing)
En debian viene en el paquete bison-doc. No sé que tan relevante llegue
a ser. Agregar un nuevo nodo no debería ser muy difícil; la manera más
fácil es mirar qué cosas se modifican con algún otro parche que haya
agregado un nuevo nodo a la gramática.
En todo caso, si realmente quieres llegar al fondo del asunto del lexer
y el parser, deberías estudiar sobre construcción de compiladores.
> Autotools:
> GNU Flex: usado para la división en una secuencia determinada de
> tokens de la cadena entrada al parser de PostgreSQL Lexing)
El lexer es lo que convierte una secuencia de caracteres en "tokens".
Por ejemplo si ve la secuencia "select 2131 + 12" lo va a transformar en
una secuencia de este estilo:
palabra clave SELECT
número 2131
operador +
número 12
Luego le pasa esta lista al analizador, quien lo convierte en un AST
según las reglas que se han definido en el archivo gram.y.
> ¿Qué significan realmente los parámetros del kernel que muchos
> seteamos en el sysctl.conf (Linux) o en el rc.conf (FreeBSD) y qué
> relación directa tienen con la asignación de memoria que hace el
> gestor?
> Dígase: kernel.shmmax, kernel.shmmix, etc
No es relevante.
> ¿Dónde puedo encontrar información acerca del algoritmo System R
> usado por el optimizador de consultas?
Hay una presentación de un profesor de una universidad gringa que
explica muy a grandes rasgos el algoritmo, mira acá:
http://archives.postgresql.org/pgsql-advocacy/2009-12/msg00028.php
> ¿Por qué cuando se modificao se añade un nodo, hay que actualizar
> nodes/equalfuncs.c y nodes/copyfuncs.c?
Porque los nodos deben poder escribirse a disco en forma de texto
(outfuncs.c), comparados con otros nodos (equalfuncs), copiados
(copyfuncs) y leídos de vuelta del formato de outfuncs (readfuncs). No
todos los nodos necesitan soportarse en todos los archivos; lee los
encabezados de ellos.
> Para la documentación, Neil aconseja usar Emacs, pero no soy
> fanático a este editor, trabajo con el Vim, ¿Pueden darme
> recomendaciones al respecto?
Yo también uso Vim. Creo que la recomendación más importante es agregar
cscope para que te ayude a "saltar" desde un archivo a otro, por ej.
para ver tal o cual definición de una función.
> En la presentación, Neil como ejemplo la inclusión de la cláusula
> TABLEXAMPLE a la gramática. A la hora de agregar esto a la
> gramática. ¿Cuál es la conversión para darle un determinado número
> al token?
No te preocupas del número que se asigna; el generador de la gramática
(bison) se encarga de eso.
> Luego de esto, ¿Dónde se hace la modificación de los nodos del árbol
> del parser para permitir que las nuevas cláusulas sean codificadas
> en el árbol de sintáxis abstracto (AST)?
Lo primero es agregar a la gramática, y por lo tanto a los nodos. Luego
tienes que ver por dónde hacer pasar ese nodo en el "traffic cop", en
este caso utility.c, y de ahí me imagino que tiene que despacharse hasta
el código que implementa FDW.
--
Alvaro Herrera Vendo parcela en Valdivia:
http://www.portalinmobiliario.com/propiedades/fichas.asp?PropID=749682
Tom: There seems to be something broken here.
Teodor: I'm in sackcloth and ashes... Fixed.
http://archives.postgresql.org/message-id/482D1632.8010507@sigaev.ru
From | Date | Subject | |
---|---|---|---|
Next Message | Miguel Angel Hernandez Moreno | 2010-03-11 20:06:36 | Re: PGPOOL replica |
Previous Message | Ing. Marcos Ortiz Valmaseda | 2010-03-11 19:40:37 | Re: Sobre la implementación de SQL/MED en PostgreSQL |