Rodolfo Vegas escribió: > bueno dias a todos, tengo un problema con la ejecución de la unión, la > misma se ejecuta en nodeUnique, especificamente execUnique, la cuestión es > la siguiente, me di cuenta que en la union el guarda cada tupla en una tabla > como temporal el va guardando cada una de las tuplas descartando los > repetidos, cuando se ejecuta la union el no se trae la tabla resultante sino > tupla a tupla por lo que me doy cuenta y si yo quiero modificar una tupla > para calcular el grado de membresia para la union porque como dije > anteriormente el guarda el resultado en una estructura temporal a parte y lo > que se trae el execUnique es una copia de la misma, uds sabran algo al > respecto si existe una funcion de reemplazar una tupla o algo asi,
Estás equivocado :-( Creo que el problema es que no estás metiéndote suficientemente profundo en el agua. El Union (tal como Intersect y Except) se implementa por partes: primero el parser, luego el optimizador, finalmente el ejecutor. En el optimizador, el UNION que viene desde el usuario se puede convertir en distintas cosas, una de las cuales es un nodo Unique (a menos que sea un UNION ALL). Luego el ejecutor hace pasar ese nodo Unique por execUnique, el cual devuelve tuplas. Esas tuplas pueden venir de esa "tabla como temporal" que tu la llamas (un tuplestore, o quizás un tuplesort?) o bien desde otro tipo de nodo. Por la descripción de tu problema, creo que el modelamiento de UNION que has hecho está mal. Quizás deberías meterle otro nodo al plan, y modificar el ejecutor para que sepa qué hacer con él. Pero no entiendo bien de qué se trata tu problema así que no creo que pueda ofrecerte más ayuda (y tampoco soy experto en el optimizador/ejecutor). -- Alvaro Herrera http://planet.postgresql.org/ "No necesitamos banderas No reconocemos fronteras" (Jorge González) -- TIP 5: ¿Has leído nuestro extenso FAQ? http://www.postgresql.org/docs/faqs.FAQ.html
