From: | "Werner Echezuria" <wercool(at)gmail(dot)com> |
---|---|
To: | pgsql-es-ayuda(at)postgresql(dot)org |
Subject: | Etapa executor SQLF |
Date: | 2007-05-27 19:24:47 |
Message-ID: | 2485a25e0705271224j370a93b5n917ac899690a0aa0@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
Buenas Tardes,
Primeramente quisiera dar las gracias a Alvaro Herrera por la ayuda
prestada, mi tutor y yo hemos logrado terminar la fase del parser, de hecho
postgres ya reconoce "CREATE FUZZY PREDICATE <nombre> ON <dominio> AS
<conjunto difuso>", como parte del sistema, de hecho ya incluye en una tabla
de catálogo que hemos denominado "pg_fuzzypred" los predicados difusos
creados con la sentencia anterior.
Ahora bien, debemos entonces hacer lo que se conoce como principio de
derivación, que no es más que convertir el sqlf en sql, por ejemplo, si un
usuario introduce un predicado difuso "joven" que determina a una persona de
0 a 40 años de edad, al hacer un select con el filtro where edad=joven,
pueda convertir eso en edad>0 and edad<40.
Al escribir el select el sistema me genera un error diciendo que el nodo no
existe, buscando me di cuenta que el error esta en un archivo "execQual.c" y
dentro del mismo existe una función de nombre "ExecInitExpr", que es donde
se encuentra la comparación que hace el where, incluí un case adicional:
"case T_A_FuzzyPred:" y de hecho me lo aceptó. Pero mi tutor me dice que
postgres debe hacer el principio de derivación antes de llegar al executor
(lo cual es lógico), para que el optimizador pueda calcular los costos de
los planes adecuadamente.
Es en este punto donde necesito la ayuda. ¿Que archivos hay que modificar
para incluir la función que genere el principio de derivación?.
Gracias.
From | Date | Subject | |
---|---|---|---|
Next Message | Simon Alford | 2007-05-28 00:08:50 | Creative Suite 3 Premium |
Previous Message | John Fredy Martinez Gomez | 2007-05-27 14:05:14 | John Fredy has Tagged you! :) |