Re: [pgbr-geral] CASE ELSE

2012-05-22 Thread Matheus de Oliveira
2012/5/21 Juliano Benvenuto Piovezan 

> 2012/5/21 Juliano Benvenuto Piovezan :
> > 2012/5/21 Giovanni Sousa :
> >> Pessoal,
> >>
> >> Tenho a seguinte consulta, no else quero retornar o valor do campo caso
> não
> >> seja zero. Não estou conseguindo...como deve ser?
> >>
> >>
> >>
> >> select A.COD_ABA, A.LABEL_ABA,
> >> CASE WHEN
> >>  COALESCE (A.cod_fun, 0)=0  THEN 'NÃO_MONITORADO'
> >> --ELSE (RETORNAR O VALOR DO CAMPO)
> >>  END
> >>  from tb_abas A
> >>
> >>
> >
> > Pelo que entendi, você quer retornar 'NÃO_MONITORADO' caso cod_fun
> > seja nulo, ou o próprio cod_fun caso contrário, é isso? Neste caso,
> > você estará tentando retornando um varchar OU um inteiro no mesmo
> > case, o que não é permitido. Para funcionar, você terá que fazer um
> > cast de cod_fun para varchar, ou rever a consulta.
>
> Ou simplificando esta consulta, utilizar o COALESCE diretamente.
>
> select A.COD_ABA, A.LABEL_ABA, COALESCE(A.cod_fun::varchar,
> 'NÃO_MONITORADO') from tb_abas A
>

Nesse caso não trata se ele for zero, mas parece ser suficiente (vai
depender do cenário).

Att.
--
Matheus de Oliveira
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


[pgbr-geral] Instalação do Tsearch2 no Postgresql 8.1

2012-05-22 Thread Wesley
Bom dia pessoal,

Procurei na Web e não achei nada que funcione de fato. Talvez minhas
consultas foram ruins. Mas alguem tem um link ou um texto que explique como
instalar tsearch2 no postgresql 8.1?

Obrigado e bom trabalho para todos
--
Nenhum de nós é tão bom quanto todos nós juntos
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Instalação do Tsearch2 no Postgresql 8.1

2012-05-22 Thread Euler Taveira
On 22-05-2012 10:59, Wesley wrote:
> Procurei na Web e não achei nada que funcione de fato. Talvez minhas consultas
> foram ruins. Mas alguem tem um link ou um texto que explique como instalar
> tsearch2 no postgresql 8.1?
> 
8.1? Esta versão foi descontinuada a pelo menos 1 ano e meio! Considere
atualizar para uma versão mais nova (até porque o text search foi incorporado
ao core algumas versões depois -- 8.3 -- e algumas coisas mudaram quando ele
foi incorporado).

Quanto a sua pergunta, vide contrib/tsearch2 no código fonte (naquela época os
módulos adicionais -- aka contrib -- ainda não eram parte integrante da
documentaoção).


-- 
   Euler Taveira de Oliveira - Timbira   http://www.timbira.com.br/
   PostgreSQL: Consultoria, Desenvolvimento, Suporte 24x7 e Treinamento
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Divisão de inteiros com resultado numeric

2012-05-22 Thread Alexsander Rosa
Sugiro incluir alguma segurança: calcule('true; TRUNCATE
tabela_importante') funciona.

Em 20 de maio de 2012 10:05, Matheus de Oliveira
escreveu:

>
> 2012/5/20 Anselmo Silva 
>
>> Qual versão do PostgreSQL fizeste?
>>
>> Resultado:
>> ao criar a função :
>> AVISO:  uso de escape fora do padrão em cadeia de caracteres
>> LINE 1: SELECT 'SELECT ' || regexp_replace(calculo, '([0-9]+)([^\.0-...
>>
>> ao executá-la usando: *Calcule ('1/10')*
>>
>> ERRO: erro de sintaxe em ou próximo a " "
>> SQL state: 42601
>> Context: PL/pgSQL function "calcule" line 4 at comando EXECUTE
>>
>
>
> Não era para usar o escape por padrão.
>
> Corrigindo para funcionar em qualquer versão:
>
> CREATE OR REPLACE FUNCTION public.calcule(calculo text)
> RETURNS numeric
> LANGUAGE plpgsql
> AS $function$
> DECLARE
> v_result numeric;
> BEGIN
> EXECUTE 'SELECT ' || regexp_replace(calculo, E'([0-9]+)([^\\.0-9])',
> E'\\1::numeric\\2', 'g')
>
> INTO v_result;
> RETURN v_result;
> END;
> $function$;
>
> Testado na 9.1. Não tive tempo ontem, mas vou explicar o que a função faz,
> como não testei muito pode ser que precise de ajustes. Esta função vai
> pegar todo número inteiro e colocar ::numeric na frente (para ver o
> resultado você pode usar um RAISE), em seguida dá um execute nesse
> resultado.
>
> Explicado a expressão regular, o padrão E'([0-9]+)([^\\.0-9])' vai
> procurar por caracteres de 0 a 9 seguidos de um caractere que *não* seja
> ponto (resumindo, um inteiro). O valor de substituição E'\\1::numeric\\2'vai 
> trocar o inteiro por ele mesmo mais o cast para numeric, e colocar de
> volta o caractere que não é ponto.
>
> Se for usar isso mesmo, faça um milhão de testes e ainda use try-catch na
> aplicação onde estiver usando, pois o que você passar também corre o risco
> de estar mal-formado. Apesar que estou achando essa função interessante
> para ser usada em fórmulas definidas pelo usuário.
>
>
> Atenciosamente,
> --
> Matheus de Oliveira
>
>
> ___
> pgbr-geral mailing list
> pgbr-geral@listas.postgresql.org.br
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>
>


-- 
Atenciosamente,
Alexsander da Rosa
http://rednaxel.com
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Instalação do Tsearch2 no Postgresql 8.1

2012-05-22 Thread Wesley
Bom dia,

Obrigado Euler, vou dar uma olhada e como eu queria que a empresa migrasse
para o 9.1, odeio reinventar a roda

T++
--
Nenhum de nós é tão bom quanto todos nós juntos



Em 22 de maio de 2012 11:42, Euler Taveira  escreveu:

> On 22-05-2012 10:59, Wesley wrote:
> > Procurei na Web e não achei nada que funcione de fato. Talvez minhas
> consultas
> > foram ruins. Mas alguem tem um link ou um texto que explique como
> instalar
> > tsearch2 no postgresql 8.1?
> >
> 8.1? Esta versão foi descontinuada a pelo menos 1 ano e meio! Considere
> atualizar para uma versão mais nova (até porque o text search foi
> incorporado
> ao core algumas versões depois -- 8.3 -- e algumas coisas mudaram quando
> ele
> foi incorporado).
>
> Quanto a sua pergunta, vide contrib/tsearch2 no código fonte (naquela
> época os
> módulos adicionais -- aka contrib -- ainda não eram parte integrante da
> documentaoção).
>
>
> --
>   Euler Taveira de Oliveira - Timbira   http://www.timbira.com.br/
>   PostgreSQL: Consultoria, Desenvolvimento, Suporte 24x7 e Treinamento
> ___
> pgbr-geral mailing list
> pgbr-geral@listas.postgresql.org.br
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


[pgbr-geral] Restores de database em tablespace diferentes.

2012-05-22 Thread Luciano Schardosim
Senhores,

mais uma vez eu por aqui. Bom desta vez tenho a seguinte questão: Tenho uma
versão 8.3 onde fiz o dump da base. Dump convencional com tudo o que tem
direito dentro. Agora quero restaura-la na versão 9.1, só que... Agora
quero que os dados fiquem em um tablespace, data_tablespace e os indices em
outra tablespace, index_tablespace. Claro que na versão 8.3 dados e índices
estavam dentro da tablespace default do postgres. As perguntas são:
- Tem como fazer isso?
- Posso fazer esta redistribuição durante um restore?
- Existem alguma outra alternativa rápida para distribuir dados e índices
na troca de versão de banco?

É importante pra mim que este processo seja rápido pois tenho muitas e
acreditem, muitas bases para fazer isso.

As alternativas que pensei e testei são trabalhosas (sem problemas) e
demoradas (problema). Ou seja, separar dados e índices antes do dump já foi
testado. E acreditem é demorado.

Mais uma vez, grato a todos...

Abraços,

-- 
___
Luciano Schardosim - @lschardosim




*FIM DO MUNDO: 2000, 2002, 2006, 2008 e 2011. **EU FUI EM TODOS. *
*E já tô com meu ingresso pra 2012!.*
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Restores de database em tablespace diferentes.

2012-05-22 Thread Flavio Henrique Araque Gurgel
Em 22-05-2012 12:17, Luciano Schardosim escreveu:
> Senhores,
>
> mais uma vez eu por aqui. Bom desta vez tenho a seguinte questão: Tenho
> uma versão 8.3 onde fiz o dump da base. Dump convencional com tudo o que
> tem direito dentro. Agora quero restaura-la na versão 9.1, só que...
> Agora quero que os dados fiquem em um tablespace, data_tablespace e os
> indices em outra tablespace, index_tablespace. Claro que na versão 8.3
> dados e índices estavam dentro da tablespace default do postgres. As
> perguntas são:
> - Tem como fazer isso?

Sim

> - Posso fazer esta redistribuição durante um restore?

Sim

> - Existem alguma outra alternativa rápida para distribuir dados e
> índices na troca de versão de banco?

Sim

>
> É importante pra mim que este processo seja rápido pois tenho muitas e
> acreditem, muitas bases para fazer isso.

Bom, tudo tem um preço.

>
> As alternativas que pensei e testei são trabalhosas (sem problemas) e
> demoradas (problema). Ou seja, separar dados e índices antes do dump já
> foi testado. E acreditem é demorado.

Então:
- faça o dump normal, como você falou que já fez;
- crie o banco de dados na versão nova;
- crie as tablespaces desejadas;
- abra o arquivo de dump num bom editor de textos (recomendo vi);
- ao final de cada CREATE TABLE antes do ponto-e-vírgula coloque 
TABLESPACE 
- ao final de cada CREATE INDEX faça o mesmo;

Restaure seu dump na versão mais nova e seja feliz. Os dados e índices 
já irão pras tablespaces previamente criadas.

Realmente, mover dados e índices depois de criados será mais demorado.

[]s

Flavio Henrique A. Gurgel
Consultor e Instrutor 4Linux
Tel: +55-11-2125-4747
www.4linux.com.br
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Restores de database em tablespace diferentes.

2012-05-22 Thread Fabrízio de Royes Mello
Em 22 de maio de 2012 12:23, Flavio Henrique Araque Gurgel <
fla...@4linux.com.br> escreveu:

>
> 
>
> >
> > As alternativas que pensei e testei são trabalhosas (sem problemas) e
> > demoradas (problema). Ou seja, separar dados e índices antes do dump já
> > foi testado. E acreditem é demorado.
>
>
Se vc criar a tablespace no mesmo local (disco) da pg_default creio que não
seja tão demorado... digo isso porque dependendo do tamanho do seu dump a
opção abaixo de editar ele pode ser bem mais demorada do que fazer isso na
origem.



> Então:
> - faça o dump normal, como você falou que já fez;
> - crie o banco de dados na versão nova;
> - crie as tablespaces desejadas;
> - abra o arquivo de dump num bom editor de textos (recomendo vi);
> - ao final de cada CREATE TABLE antes do ponto-e-vírgula coloque
> TABLESPACE 
> - ao final de cada CREATE INDEX faça o mesmo;
>
>
Dependendo do tamanho do arquivo a ser editado esse procedimento pode ser
bem demorado, isso sem levar em conta os lugares citados para essa
alteração.

Eu criaria as tablespaces com mesmo nome do destino (9.1) na origem (8.3) e
no mesmo disco da pg_default, e ajustaria a tablespace das tabelas e
índices e com isso o dump que vc executará para transportar para 9.1 já
estará com as DDLs corretas.


Restaure seu dump na versão mais nova e seja feliz. Os dados e índices
> já irão pras tablespaces previamente criadas.
>
>
De ambas formas esse resultado será o mesmo.



> Realmente, mover dados e índices depois de criados será mais demorado.
>
>
Concordo, principalmente em discos distintos.

Att,

-- 
Fabrízio de Royes Mello
Consultoria/Coaching PostgreSQL
>> Blog sobre TI: http://fabriziomello.blogspot.com
>> Perfil Linkedin: http://br.linkedin.com/in/fabriziomello
>> Twitter: http://twitter.com/fabriziomello
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Digest pgbr-geral, volume 41, assunto 60

2012-05-22 Thread Giovanni Sousa
-geral@listas.postgresql.org.br
> > https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
> >
>
>
>
> --
> Anselmo M. Silva
> -- Próxima Parte --
> Um anexo em HTML foi limpo...
> URL:
> http://listas.postgresql.org.br/pipermail/pgbr-geral/attachments/20120521/74fa19f1/attachment-0001.htm
>
> --
>
> Message: 7
> Date: Tue, 22 May 2012 07:29:31 -0300
> From: Matheus de Oliveira 
> Subject: Re: [pgbr-geral] CASE ELSE
> To: Comunidade PostgreSQL Brasileira
>
> Message-ID:
> >
> Content-Type: text/plain; charset="iso-8859-1"
>
> 2012/5/21 Juliano Benvenuto Piovezan 
>
> > 2012/5/21 Juliano Benvenuto Piovezan :
> > > 2012/5/21 Giovanni Sousa :
> > >> Pessoal,
> > >>
> > >> Tenho a seguinte consulta, no else quero retornar o valor do campo
> caso
> > não
> > >> seja zero. Não estou conseguindo...como deve ser?
> > >>
> > >>
> > >>
> > >> select A.COD_ABA, A.LABEL_ABA,
> > >> CASE WHEN
> > >>  COALESCE (A.cod_fun, 0)=0  THEN 'NÃO_MONITORADO'
> > >> --ELSE (RETORNAR O VALOR DO CAMPO)
> > >>  END
> > >>  from tb_abas A
> > >>
> > >>
> > >
> > > Pelo que entendi, você quer retornar 'NÃO_MONITORADO' caso cod_fun
> > > seja nulo, ou o próprio cod_fun caso contrário, é isso? Neste caso,
> > > você estará tentando retornando um varchar OU um inteiro no mesmo
> > > case, o que não é permitido. Para funcionar, você terá que fazer um
> > > cast de cod_fun para varchar, ou rever a consulta.
> >
> > Ou simplificando esta consulta, utilizar o COALESCE diretamente.
> >
> > select A.COD_ABA, A.LABEL_ABA, COALESCE(A.cod_fun::varchar,
> > 'NÃO_MONITORADO') from tb_abas A
> >
>
> Nesse caso não trata se ele for zero, mas parece ser suficiente (vai
> depender do cenário).
>
> Att.
> --
> Matheus de Oliveira
> -- Próxima Parte --
> Um anexo em HTML foi limpo...
> URL:
> http://listas.postgresql.org.br/pipermail/pgbr-geral/attachments/20120522/586e7f93/attachment-0001.htm
>
> --
>
> Message: 8
> Date: Tue, 22 May 2012 10:59:59 -0300
> From: Wesley 
> Subject: [pgbr-geral] Instalação do Tsearch2 no Postgresql 8.1
> To: Comunidade PostgreSQL Brasileira
>
> Message-ID:
> >
> Content-Type: text/plain; charset="utf-8"
>
> Bom dia pessoal,
>
> Procurei na Web e não achei nada que funcione de fato. Talvez minhas
> consultas foram ruins. Mas alguem tem um link ou um texto que explique como
> instalar tsearch2 no postgresql 8.1?
>
> Obrigado e bom trabalho para todos
>
> --
> Nenhum de nós é tão bom quanto todos nós juntos
> -- Pr?a Parte --
> Um anexo em HTML foi limpo...
> URL:
> http://listas.postgresql.org.br/pipermail/pgbr-geral/attachments/20120522/bf4c600b/attachment.htm
>
> --
>
> ___
> pgbr-geral mailing list
> pgbr-geral@listas.postgresql.org.br
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>
>
> Fim da Digest pgbr-geral, volume 41, assunto 60
> ***
>
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral