Ayuda con la integración de un nuevo operador al optimizador de postgres

From: "Fabiola Di Bartolo" <fabi(dot)dibartolo(at)gmail(dot)com>
To: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Ayuda con la integración de un nuevo operador al optimizador de postgres
Date: 2007-02-07 23:53:29
Message-ID: 6c7314f10702071553r52279e17q5073a0129f13e596@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Hola!

Estamos realizando una extension del optimizador de postgres, para que pueda
optimizar consultas que contienen operadores de preferencia. Nuestro trabajo
es continuación del que venían realizando Carmen Brando y Vanessa González
que ya han escrito varias veces a la lista.

Necesitamos integrar la optimización de los operadores de preferencia con
la programación dinámica que se utiliza para optimizar el join tree.
Existen ciertas reglas para empujar hacia abajo estos operadores en el arbol
y otras reglas que definen su distributividad sobre el join, según el
trabajo "Optimization of Relational Preference Queries" de Bernd
Hafenrichter y Werner Kießling.

Las características de nuestros operadores son:
* Es unario
* El conjunto de condiciones que tiene el operador puede hacerse sobre uno o
varios atributos de una tabla o varias (En el caso que involucre varias
tablas, el operador se debe colocar encima de un join o un producto
cartesiano que contenga tales tablas).

Nuestras pregunta son:

1)¿Debe el nodo del operador nuevo estar incluido en el jointree del
plannerInfo root antes de llamar a make_one_rel? En este caso, en que método
sería conveniente realizar esto ?

ó

¿Debe ser considerado cuando se realiza el deconstruct_jointree para
devolverlo en la joinlist?

ó, por último,

¿Puede el operador tratarse como un nodo agregado, tomando solamente la
información de la cláusula agregada en la estructura Query y aun así ser
procesado en la creación de los paths que se realiza sobre el jointree?

2) Creemos que la consideración de un nodo de nuestro operador en un nivel
dado del árbol se debería realizar en make_join_rel, colocando las
verificaciones respectivas (por ejemplo que ya han ocurrido en el path que
se lleva construido las tablas necesarias para colocar el nodo del
operador), es esto correcto? o debería considerarse en alguna llamada más
arriba?

Agradecemos muchisimo su ayuda y la orientación que nos puedan brindar.

Saludos,
Fabiola Di Bartolo y Francelice Sardá

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Felipe Amezquita 2007-02-08 00:11:00 funciones postgis
Previous Message Marco Vinicio Jimenez Rojas 2007-02-07 23:47:57 Re: consulta