Re: crear expresion

From: Arturo Rossodivita <arossodivita(at)gmail(dot)com>
To: Alvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org>
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: crear expresion
Date: 2009-04-20 15:49:29
Message-ID: 36fdef070904200849k1bea4a02g8a568c57cacb79b2@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

2009/4/17 Alvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)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).
>

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Emanuel Calvo Franco 2009-04-20 16:10:53 Re: Off-topic (era Re: traducciones)
Previous Message Virginia 2009-04-20 15:14:15 Sincronización