Saludos listeros.
He conversando con David Fetter, creador del proyecto dbi-link que
muchos usamos para el acceso a bases de datos externas como Oracle, SQL
Server, etc; y entonces me estaba diciendo que ya hay personas
trabajando en la implementación del estándar SQL/MED(ISO/IEC 9075-9)
sobre PostgreSQL; y que lo mejor sería en vez de seguir el desarrollo de
dbi-link (cosa en que cual quería aportar mi ayuda), trabajar en el
desarrollo de SQL/MED sobre el gestor.

Yo quisiera ayudar en esto, pero quisiera que algunos de ustedes que
hablan mi idioma fuera mi mentor, el inglés no es problema para mí, pero
me sentiría más en confianza cuando hable con alguno de ustedes.
Sé que la tarea es dura, no es para nada fácil, tengo que estudiar
bastante para eso, pero pienso que va siendo hora de aportar algo al
proyecto, por tanto que me ha brindado.

Si pudieran darme algunos tips a la hora de incluir nuevas cláusulas a
la gramática de PostgreSQL. Ya me he leído la presentación de Neil
Conway, la cual está genial pero hay cosas que no entiendo.
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)
Autotools:
GNU Flex: usado para la división en una secuencia determinada de tokens
de la cadena entrada al parser de PostgreSQL Lexing)
¿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

¿Dónde puedo encontrar información acerca del algoritmo System R usado
por el optimizador de consultas?
¿Por qué cuando se modificao se añade un nodo, hay que actualizar
nodes/equalfuncs.c y nodes/copyfuncs.c?
En caso de que se hagan modificaciones en la sintáxis de tipo DDL, Neil
aconseja actualizar el tab completion de psql ¿Dónde se hace esto?

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?

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?

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)?

Sé que son bastantes preguntas, pero si ustedes conocen las respuestas,
me es más fácil iniciarme.

Saludos y perdonen las molestias.




--
--------------------------------------------------------
-- Ing. Marcos Luís Ortíz Valmaseda --
-- Twitter: http://twitter.com/@marcosluis2186 --
-- FreeBSD Fan/User --
-- http://www.freebsd.org/es --
-- Linux User # 418229 --
-- Database Architect/Administrator --
-- PostgreSQL RDBMS --
-- http://www.postgresql.org --
-- http://planetpostgresql.org --
-- http://www.postgresql-es.org --
--------------------------------------------------------
-- Data WareHouse -- Business Intelligence Apprentice --
-- http://www.tdwi.org --
--------------------------------------------------------
-- Ruby on Rails Fan/Developer --
-- http://rubyonrails.org --
--------------------------------------------------------

Comunidad Técnica Cubana de PostgreSQL
http://postgresql.uci.cu
http://personas.grm.uci.cu/+marcos

Centro de Tecnologías de Gestión de Datos (DATEC)
Contacto:
Correo: centalad@uci.cu
Telf: +53 07-837-3737
+53 07-837-3714
Universidad de las Ciencias Informáticas
http://www.uci.cu

Search Discussions

  • Jaime Casanova at Mar 11, 2010 at 5:09 am
    2010/3/10 Ing. Marcos Ortiz Valmaseda <mlortiz@uci.cu>:
    Si pudieran darme algunos tips a la hora de incluir nuevas cláusulas a la
    gramática de PostgreSQL. Ya me he leído la presentación de Neil Conway, la
    cual está genial pero hay cosas que no entiendo.
    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)
    Hola Marcos,

    lo mejor que puedes hacer es buscar un comando similar y seguirlo :)
    Autotools:
    GNU Flex: usado para la división en una secuencia determinada de tokens de
    la cadena entrada al parser de PostgreSQL Lexing)
    nunca supe que hace el flex...
    ¿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

    ¿Dónde puedo encontrar información acerca del algoritmo System R usado por
    el optimizador de consultas?
    y esto que tiene que ver con SQL/MED?
    ¿Por qué cuando se modificao se añade un nodo, hay que actualizar
    nodes/equalfuncs.c y nodes/copyfuncs.c?
    lee src/backend/nodes/README
    En caso de que se hagan modificaciones en la sintáxis de tipo DDL, Neil
    aconseja actualizar el tab completion de psql ¿Dónde se hace esto?
    sera, que aconseja que se modifique src/bin/psql/tab-complete.c para
    que tenga la nueva sintaxis?
    aunque no se como se hace, en todo caso no es realmente relevante...
    es una de las ultimas cosas
    que necesitas hacer y solo vale la pena hacerlo una vez que ya
    agregaste la nueva sintaxis y esta
    funcionando
    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?
    cuestion de gustos, yo uso vim
    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 entendi
    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)?
    pense que estabamos hablando en español aqui ;)

    --
    Atentamente,
    Jaime Casanova
    Soporte y capacitación de PostgreSQL
    Asesoría y desarrollo de sistemas
    Guayaquil - Ecuador
    Cel. +59387171157
  • Ing . Marcos Luís Ortíz Valmaseda at Mar 11, 2010 at 3:55 pm

    Jaime Casanova escribió:
    2010/3/10 Ing. Marcos Ortiz Valmaseda <mlortiz@uci.cu>:
    Si pudieran darme algunos tips a la hora de incluir nuevas cláusulas a la
    gramática de PostgreSQL. Ya me he leído la presentación de Neil Conway, la
    cual está genial pero hay cosas que no entiendo.
    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)
    Hola Marcos,

    lo mejor que puedes hacer es buscar un comando similar y seguirlo :)

    Autotools:
    GNU Flex: usado para la división en una secuencia determinada de tokens de
    la cadena entrada al parser de PostgreSQL Lexing)
    nunca supe que hace el flex...

    ¿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

    ¿Dónde puedo encontrar información acerca del algoritmo System R usado por
    el optimizador de consultas?
    y esto que tiene que ver con SQL/MED?

    ¿Por qué cuando se modificao se añade un nodo, hay que actualizar
    nodes/equalfuncs.c y nodes/copyfuncs.c?
    lee src/backend/nodes/README

    En caso de que se hagan modificaciones en la sintáxis de tipo DDL, Neil
    aconseja actualizar el tab completion de psql ¿Dónde se hace esto?
    sera, que aconseja que se modifique src/bin/psql/tab-complete.c para
    que tenga la nueva sintaxis?
    aunque no se como se hace, en todo caso no es realmente relevante...
    es una de las ultimas cosas
    que necesitas hacer y solo vale la pena hacerlo una vez que ya
    agregaste la nueva sintaxis y esta
    funcionando

    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?
    cuestion de gustos, yo uso vim

    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 entendi

    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)?
    pense que estabamos hablando en español aqui ;)
    Saludos. Jaime, perdona por el último término en inglés. Luego que la
    consultar pasa por el parser, el mismo construye un árbol sintáctico
    abstracto, con la secuencia completa de comandos a ejecutar.

    Lo que quería saber que se ve en el ejemplo: Cuando se incluyen un nuevo
    token en la gramática, a cada token se le asigna un número, y ya ví que
    no se hace alfabéticamente; por eso es que surgía la duda.

    La pregunta sobre el System R era para entender mejor el optimizador de
    consultas, lo cual es uno de los pilares de PostgreSQL, por lo que
    también es una de las cosas más difíciles también.

    Para la edición de SGML ¿También usas Vim? ¿Pudieras enviarme la
    configuración que tienes en el Vim?

    Saludos y espero no molestar mucho con mis preguntillas.



    --
    --------------------------------------------------------
    -- Ing. Marcos Luís Ortíz Valmaseda --
    -- FreeBSD Fan/User --
    -- http://www.freebsd.org/es --
    -- Linux User # 418229 --
    -- Database Architect/Administrator --
    -- PostgreSQL RDBMS --
    -- http://www.postgresql.org --
    -- http://planetpostgresql.org --
    -- http://www.postgresql-es.org --
    --------------------------------------------------------
    -- Data WareHouse -- Business Intelligence Apprentice --
    -- http://www.tdwi.org --
    --------------------------------------------------------
    -- Ruby on Rails Fan/Developer --
    -- http://rubyonrails.org --
    --------------------------------------------------------

    Comunidad Técnica Cubana de PostgreSQL
    http://postgresql.uci.cu

    Centro de Gestión de Datos (DATEC)
    Contacto:
    Correo: centalad@uci.cu
    Telf: +53 07-837-3737
    +53 07-837-3714
    Universidad de las Ciencias Informáticas
    http://www.uci.cu
  • Jaime Casanova at Mar 11, 2010 at 4:20 pm

    2010/3/11 "Ing . Marcos Luís Ortíz Valmaseda" <mlortiz@uci.cu>:
    Jaime Casanova escribió:

    pense que estabamos hablando en español aqui ;)
    Saludos. Jaime, perdona por el último término en inglés.
    en realidad me referia a los de "arbol de sintaxis abstracto", muy
    tecnico para mi ;)
    Luego que la
    consultar pasa por el parser, el mismo construye un árbol sintáctico
    abstracto, con la secuencia completa de comandos a ejecutar.
    ah! te refieres al nodo que construye el parser
    Lo que quería saber que se ve en el ejemplo: Cuando se incluyen un nuevo
    token en la gramática, a cada token se le asigna un número, y ya ví que no
    se hace alfabéticamente; por eso es que surgía la duda.
    Aqui esta el ejemplo de Neil, supongo que te refieres $1, $2 y asi;
    entonces es por orden de aparicion

    + opt_table_sample:
    + TABLESAMPLE sample_method '(' Iconst ')' opt_repeatable_clause

    TABLESAMPLE es 1
    sample_method es 2
    '(' es 3
    lconst es 4
    ')' es 5
    opt_repeatable_clause es 6

    + {
    + TableSampleInfo *n = makeNode(TableSampleInfo);
    +
    + if ($2 == true)
    + n->sample_method = SAMPLE_BERNOULLI;
    + else
    + n->sample_method = SAMPLE_SYSTEM;
    +
    + n->sample_percent = $4;
    + if ($4 > 100)
    + ereport(ERROR,
    + (errcode(ERRCODE_INVALID_SAMPLE_SIZE),
    + errmsg("TABLESAMPLE percentage "
    + "cannot exceed 100")));
    + if ($4 <= 0)
    + ereport(ERROR,
    + (errcode(ERRCODE_INVALID_SAMPLE_SIZE),
    + errmsg("TABLESAMPLE percentage must "
    + "be greater than 0")));
    +
    + /* XXX: not supported yet */
    + if (n->sample_method == SAMPLE_BERNOULLI)
    + ereport(ERROR,
    + (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
    + errmsg("BERNOULLI sampling is not supported")));
    +
    + if ($6 != NULL)
    + {
    + n->is_repeatable = true;
    + n->repeat_seed = intVal($6);
    + }
    +
    + $$ = (Node *) n;
    + }
    + | /* EMPTY */ { $$ = NULL; }
    + ;

    La pregunta sobre el System R era para entender mejor el optimizador de
    consultas, lo cual es uno de los pilares de PostgreSQL, por lo que también
    es una de las cosas más difíciles también.
    si, eso es chino para mi aun
    Para la edición de SGML ¿También usas Vim? ¿Pudieras enviarme la
    configuración que tienes en el Vim?
    este es el unico cambio que hago, estoy seguro que habia algo mas
    extenso que incluia los cambios en emacs pero no lo encuentro:
    http://wiki.postgresql.org/wiki/Developer_FAQ#What.27s_the_formatting_style_used_in_PostgreSQL_source_code.3F


    --
    Atentamente,
    Jaime Casanova
    Soporte y capacitación de PostgreSQL
    Asesoría y desarrollo de sistemas
    Guayaquil - Ecuador
    Cel. +59387171157
  • Ing. Marcos Ortiz Valmaseda at Mar 11, 2010 at 7:36 pm

    Jaime Casanova escribió:
    2010/3/11 "Ing . Marcos Luís Ortíz Valmaseda" <mlortiz@uci.cu>:
    Jaime Casanova escribió:
    pense que estabamos hablando en español aqui ;)
    Saludos. Jaime, perdona por el último término en inglés.
    en realidad me referia a los de "arbol de sintaxis abstracto", muy
    tecnico para mi ;)

    Luego que la
    consultar pasa por el parser, el mismo construye un árbol sintáctico
    abstracto, con la secuencia completa de comandos a ejecutar.
    ah! te refieres al nodo que construye el parser

    Lo que quería saber que se ve en el ejemplo: Cuando se incluyen un nuevo
    token en la gramática, a cada token se le asigna un número, y ya ví que no
    se hace alfabéticamente; por eso es que surgía la duda.
    Aqui esta el ejemplo de Neil, supongo que te refieres $1, $2 y asi;
    entonces es por orden de aparicion

    + opt_table_sample:
    + TABLESAMPLE sample_method '(' Iconst ')' opt_repeatable_clause

    TABLESAMPLE es 1
    sample_method es 2
    '(' es 3
    lconst es 4
    ')' es 5
    opt_repeatable_clause es 6

    + {
    + TableSampleInfo *n = makeNode(TableSampleInfo);
    +
    + if ($2 == true)
    + n->sample_method = SAMPLE_BERNOULLI;
    + else
    + n->sample_method = SAMPLE_SYSTEM;
    +
    + n->sample_percent = $4;
    + if ($4 > 100)
    + ereport(ERROR,
    + (errcode(ERRCODE_INVALID_SAMPLE_SIZE),
    + errmsg("TABLESAMPLE percentage "
    + "cannot exceed 100")));
    + if ($4 <= 0)
    + ereport(ERROR,
    + (errcode(ERRCODE_INVALID_SAMPLE_SIZE),
    + errmsg("TABLESAMPLE percentage must "
    + "be greater than 0")));
    +
    + /* XXX: not supported yet */
    + if (n->sample_method == SAMPLE_BERNOULLI)
    + ereport(ERROR,
    + (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
    + errmsg("BERNOULLI sampling is not supported")));
    +
    + if ($6 != NULL)
    + {
    + n->is_repeatable = true;
    + n->repeat_seed = intVal($6);
    + }
    +
    + $$ = (Node *) n;
    + }
    + | /* EMPTY */ { $$ = NULL; }
    + ;


    La pregunta sobre el System R era para entender mejor el optimizador de
    consultas, lo cual es uno de los pilares de PostgreSQL, por lo que también
    es una de las cosas más difíciles también.
    si, eso es chino para mi aun

    Para la edición de SGML ¿También usas Vim? ¿Pudieras enviarme la
    configuración que tienes en el Vim?
    este es el unico cambio que hago, estoy seguro que habia algo mas
    extenso que incluia los cambios en emacs pero no lo encuentro:
    http://wiki.postgresql.org/wiki/Developer_FAQ#What.27s_the_formatting_style_used_in_PostgreSQL_source_code.3F

    Excelente Jaime, como siempre.
    Gracias de nuevo y perdona tantas preguntas.
    Saludos

    --
    --------------------------------------------------------
    -- Ing. Marcos Luís Ortíz Valmaseda --
    -- Twitter: http://twitter.com/@marcosluis2186 --
    -- FreeBSD Fan/User --
    -- http://www.freebsd.org/es --
    -- Linux User # 418229 --
    -- Database Architect/Administrator --
    -- PostgreSQL RDBMS --
    -- http://www.postgresql.org --
    -- http://planetpostgresql.org --
    -- http://www.postgresql-es.org --
    --------------------------------------------------------
    -- Data WareHouse -- Business Intelligence Apprentice --
    -- http://www.tdwi.org --
    --------------------------------------------------------
    -- Ruby on Rails Fan/Developer --
    -- http://rubyonrails.org --
    --------------------------------------------------------

    Comunidad Técnica Cubana de PostgreSQL
    http://postgresql.uci.cu
    http://personas.grm.uci.cu/+marcos

    Centro de Tecnologías de Gestión de Datos (DATEC)
    Contacto:
    Correo: centalad@uci.cu
    Telf: +53 07-837-3737
    +53 07-837-3714
    Universidad de las Ciencias Informáticas
    http://www.uci.cu
  • Alvaro Herrera at Mar 11, 2010 at 7:55 pm

    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
  • Ing. Marcos Ortiz Valmaseda at Mar 11, 2010 at 8:29 pm

    Alvaro Herrera escribió:
    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.
    Ok, hermano, tomados los consejos.
    Ahora hay que estudiar completo el estándar para comprenderlo bien, y
    entonces luego ayudar en esto.
    Saludos

    --
    --------------------------------------------------------
    -- Ing. Marcos Luís Ortíz Valmaseda --
    -- Twitter: http://twitter.com/@marcosluis2186 --
    -- FreeBSD Fan/User --
    -- http://www.freebsd.org/es --
    -- Linux User # 418229 --
    -- Database Architect/Administrator --
    -- PostgreSQL RDBMS --
    -- http://www.postgresql.org --
    -- http://planetpostgresql.org --
    -- http://www.postgresql-es.org --
    --------------------------------------------------------
    -- Data WareHouse -- Business Intelligence Apprentice --
    -- http://www.tdwi.org --
    --------------------------------------------------------
    -- Ruby on Rails Fan/Developer --
    -- http://rubyonrails.org --
    --------------------------------------------------------

    Comunidad Técnica Cubana de PostgreSQL
    http://postgresql.uci.cu
    http://personas.grm.uci.cu/+marcos

    Centro de Tecnologías de Gestión de Datos (DATEC)
    Contacto:
    Correo: centalad@uci.cu
    Telf: +53 07-837-3737
    +53 07-837-3714
    Universidad de las Ciencias Informáticas
    http://www.uci.cu
  • Jaime Casanova at Mar 11, 2010 at 8:46 pm

    2010/3/11 Ing. Marcos Ortiz Valmaseda <mlortiz@uci.cu>:
    Ahora hay que estudiar completo el estándar para comprenderlo bien, y
    entonces luego ayudar en esto.
    busca un punto y concentrate en el, por ejemplo mira CREATE FOREIGN
    SERVER que ya esta implementado, mira que partes del estandar
    referente a CREATE FOREIGN SERVER no esta implementado y trata de
    empezar por ahi... o quiza si te sientes salvaje CREATE FOREIGN TABLE
    :)

    --
    Atentamente,
    Jaime Casanova
    Soporte y capacitación de PostgreSQL
    Asesoría y desarrollo de sistemas
    Guayaquil - Ecuador
    Cel. +59387171157
  • Ing. Marcos Ortiz Valmaseda at Mar 11, 2010 at 9:06 pm

    Jaime Casanova escribió:
    2010/3/11 Ing. Marcos Ortiz Valmaseda <mlortiz@uci.cu>:
    Ahora hay que estudiar completo el estándar para comprenderlo bien, y
    entonces luego ayudar en esto.
    busca un punto y concentrate en el, por ejemplo mira CREATE FOREIGN
    SERVER que ya esta implementado, mira que partes del estandar
    referente a CREATE FOREIGN SERVER no esta implementado y trata de
    empezar por ahi... o quiza si te sientes salvaje CREATE FOREIGN TABLE
    :)
    OK, comenzaré entonces por CREATE FOREIGN SERVER
    Saludos

    --
    --------------------------------------------------------
    -- Ing. Marcos Luís Ortíz Valmaseda --
    -- Twitter: http://twitter.com/@marcosluis2186 --
    -- FreeBSD Fan/User --
    -- http://www.freebsd.org/es --
    -- Linux User # 418229 --
    -- Database Architect/Administrator --
    -- PostgreSQL RDBMS --
    -- http://www.postgresql.org --
    -- http://planetpostgresql.org --
    -- http://www.postgresql-es.org --
    --------------------------------------------------------
    -- Data WareHouse -- Business Intelligence Apprentice --
    -- http://www.tdwi.org --
    --------------------------------------------------------
    -- Ruby on Rails Fan/Developer --
    -- http://rubyonrails.org --
    --------------------------------------------------------

    Comunidad Técnica Cubana de PostgreSQL
    http://postgresql.uci.cu
    http://personas.grm.uci.cu/+marcos

    Centro de Tecnologías de Gestión de Datos (DATEC)
    Contacto:
    Correo: centalad@uci.cu
    Telf: +53 07-837-3737
    +53 07-837-3714
    Universidad de las Ciencias Informáticas
    http://www.uci.cu

Related Discussions

Discussion Navigation
viewthread | post
Discussion Overview
grouppgsql-es-ayuda @
categoriespostgresql
postedMar 10, '10 at 8:04p
activeMar 11, '10 at 9:06p
posts9
users3
websitepostgresql.org.es
irc#postgresql

People

Translate

site design / logo © 2022 Grokbase