Issue #29: Refactor postgres adapter
A geração da consulta foi dividida em duas partes.
Na primeira parte foi usado o algoritmo recursivo. Ao invés de gerar a consulta esse algoritmo recursivo encontra a views materializadas mais apropriadas para realizar as consultas. Esse algoritmo retorna uma lista de views materializadas que contem todos os dados necesssários para realizar a consulta.
A segunda parte é aonde a view é transformada em consulta, com a lista de views não é mais necessário fazer recursivo. Apenas seleciona os dados nas views apropriadas e faz o join das respectivas views.
Dessa forma a consulta fica muito simples.
SELECT lista de metricas e dimensões FROM lista de views materializadas WHERE joins para dimensões existentes em duas views GROUP BY lista de dimensões
Signed-off-by: Lucas Fernandes de Oliveira lfo14@inf.ufpr.br