Re: Consulta sobre Split

From: Hellmuth Vargas <hivs77(at)gmail(dot)com>
To: Msileone(at)gmail(dot)com, Lista Postgres ES <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Consulta sobre Split
Date: 2017-03-21 01:44:03
Message-ID: CAN3Qy4pYnE-FNofAbfsKuSKVauc5P3xBAQ_-wCy=RRonJ66ZWw@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Hola Mario

Creo que tiene la misma situación que yo, le reenvío la respuesta en mi
caso

---------- Mensaje reenviado ----------
De: "Hellmuth Vargas" <hivs77(at)gmail(dot)com>
Fecha: 8 mar. 2017 3:27 PM
Asunto: Re: [pgsql-es-ayuda] no aplica constraint_exclusion con
concadenacion de parametros
Para: "Jaime Casanova" <jaime(dot)casanova(at)2ndquadrant(dot)com>
Cc: "Lista Postgres ES" <pgsql-es-ayuda(at)postgresql(dot)org>

Hola Jaime

Muchas gracias por la respuesta.... Pues esta tabla se emplea en muchas
consultas (reportes) con diferentes joins y condiciones, por lo tanto no
seria factible una función, voy a ver que podemos hacer desde jasper para
enviar la fecha como una constante

El 7 de marzo de 2017, 19:35, Jaime Casanova<jaime(dot)casanova(at)2ndquadrant(dot)com>
escribió:

> On 7 March 2017 at 18:02, Hellmuth Vargas <hivs77(at)gmail(dot)com> wrote:
> >
> > Tengo un servidor PostgreSQL 9.6 en le cual implemente particionamiento
> (por
> > fecha) sobre una tabla, pues sobre esta tabla se generan reportes
> mensuales
> > de gran cantidad de registros, ajuste el parámetro constraint_exclusion
> = on
> > para qeu excluyera las tablas que no estan en le rango, Hice una prueba y
> > funciona como se espera:
> >
> [...]
> >
> > Pero si cambio el formato de la fechas (porque realmente esta consulta
> esta
> > dentro de un jasper y las fechas son parámetros y por lo tanto se
> > concadenan):
> >
>
> Esto funciona así desde siempre y la explicación es que postgres
> decide que particiones leer antes de llegar al executor (no recuerdo
> si en tiempo de parsing o planning, creería que en el segundo).
>
> Debido a que la consulta aun no empieza a ejecutarse (porque eso
> ocurre, obviamente, en el executor) postgres no ha resuelto funciones
> ni expresiones y por lo tanto no puede decidir eliminar particiones
> basándose en eso.
>
> La condición para que excluya particiones *tiene* que ser una
> constante. La única solución real, si es que no puedes enviar la fecha
> armada, es que escondas la consulta en una función almacenada usando
> SQL dinamico y concatenes lo que envias como una constante usando algo
> parecido a una función como la que te pongo de ejemplo (la cual tiene
> cabos sueltos):
>
>
> CREATE OR REPLACE FUNCTION consulta_dinamica(v_fecha_i text, v_hora_i
> text, v_fecha_f text, v_hora_f text)
> RETURNS algo AS
> $$
> begin
> EXECUTE 'SELECT q.evento,count(*)
> FROM queue_log q
> WHERE q.fecha BETWEEN cast(' || v_fecha_i || '
> ' || v_hora_i || ' as timestamp )
> AND cast('
> || v_fecha_f || ' ' || v_hora_f || ' as timestamp )
> GROUP BY 1';
> end;
> $$
> LANGUAGE 'plpgsql';
>
>
> --
> Jaime Casanova www.2ndQuadrant.com
> PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services
>

--
Cordialmente,

Ing. Hellmuth I. Vargas S.

---------- Mensaje reenviado ----------
De: "Mario Sileone (GM)" <msileone(at)gmail(dot)com>
Fecha: 20 mar. 2017 6:35 PM
Asunto: [pgsql-es-ayuda] Consulta sobre Split
Para: "pgsql-es-ayuda" <pgsql-es-ayuda(at)postgresql(dot)org>
Cc:

Estimados, buenas noches.

Tengo una consulta respecto a las tablas divididas. Tenemos una
división en tablas que tienen millones de registros diarios, en tablas
heredadas mensuales.

Todo funciona de maravillas, salvo que, hemos notado que las consultas con
variables (between now() - interval '8 hours' AND now()) no hacen caso y
busca en todas las tablas heredadas.

Lo vimos en un explain con las variables y luego uno con las fechas
literales.

La pregunta es, al margen que tenemos la solución mediante código, si
existe algun método o quizás un quote_literal que transforme la consulta a
literal o alguna manera para que el postgres la interprete como tal.

Desde ya muchas gracias!

Saludos

-
Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda(at)postgresql(dot)org)
Para cambiar tu suscripción:
http://www.postgresql.org/mailpref/pgsql-es-ayuda

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Mario Sileone (GM) 2017-03-21 01:49:17 Re: Consulta sobre Split
Previous Message Mario Sileone (GM) 2017-03-20 23:35:35 Consulta sobre Split