2009/4/17 Alvaro Herrera <alvhe...@alvh.no-ip.org>

> Arturo Rossodivita escribió:
> > hola lista, un poco tarde pero seguro...
> >
> > bueno primero gracias ya que ahora si me tarigo el nodo en string
> > desde el catalogo completo, les comento que no tenia ningun valor null
> > en la tupla pero igual GETSTRUCT no me servia y tuve que usar
> > heap_getattr
>
> Hmm, me imagino que eso puede suceder si has definido algún valor como char
> *
> o algo semejante.  El truco de GETSTRUCT sólo funciona si tienes
> solamente campos de ancho fijo.
>
> > ERROR: badly formated node string "AEXPR   :name (">")   :lexpr
> {AEXPR"...
> >
> > me doy cuenta que el problema es cuando hago el stringToNode(fp->exprfp)
>
> Hmm ... esto se ve raro ... supongo que agregaste una funcion en
> readfuncs.c verdad?  Ten en cuenta que a cualquier nodo que modifiques
> el struct debes también modificar su respectiva función en outfuncs.c y
> readfuncs.c, posiblemente también en copyfuncs.c, etc etc.  Obviamente
> también debes agregar un T_* en el enum de tipos de nodos, y debes crear
> el nodo con makeNode(), etc (asumo que todo esto ya lo hiciste).

      No habia modificado el readfuncs. y ya lo hice, pero te explico no
estoy tratando de pasar un nodo nuevo creado por mi, mi nodo completo es el
A_FuzzyPred
{
    NodeTag type;
    char        *pred;
    int           minfp;
    int           core1;
    int           core2;
    int           maxfp;
    unsigned int vno;
    int           vattno;
    List         *compfplist;
    char        *disd;
    char        *exprfp;
}A_FuzzyPred;
en una tabla del catalogo yo tengo almacenados cada uno de los valore que
necesito cargarle a este nodo al momento de un select el cual incluya una
condicion difusa en el where;
para los que estoy trabajando específicamente en este momento yo almaceno
con forma de string un nodo A_Expr, al momento de calcular la expresion
necesito pasar ese string (almacenado en exprfp del nodo A_FuzzyPred) de
nuevo a nodo pues ese es el nuevo qual para la consulta.
bueno me di guenta que stringToNode(); llama parseNodeString(); y que esta
no tiene para crear la estructura de un nodo A_Expr, y la modifique. ahora
el problema viene es porque entre los case de nodeRead()
 si hay un parentesis derecho ")" manda un error, y los nodos A_Expr que yo
almaceno en el catalogo son de la forma:
{AEXPR
    :name ("=")
    :lexpr
        {COLUMNREF
        :fields ("edad")
        :location 22
        }
    :rexpr
        {COLUMNREF
        :fields ("aprox")
        :location 29
        }
    :location 27
}
al leer el parentesis me lanza un error diciendo que hay un parentesis
derecho inesperado.
No se si es que estoy haciendo algo mal o si me falta extender algo mas, si
no me entienden mucho me avisan para explicar mas detalladamente.
Gracias.

>
>
> --
> Alvaro Herrera
> http://www.amazon.com/gp/registry/DXLWNGRJD34J
> "El sabio habla porque tiene algo que decir;
> el tonto, porque tiene que decir algo" (Platon).
>

Responder a