Re: [pgbr-geral] duvida com log

2016-04-25 Por tôpico Flavio Henrique Araque Gurgel
> Bom dia Pessoal,
> estou utilizando a versao do Postgres 9.1 com o pgbouncer 9.2 con CentOS
> 6.3.
> ocorre que de uns dias para cá está ficando umas conexões "fantasmas",
> que acredito seja algo alterado em nosso sistema.
> no log do postgresql existe essas informações abaixo, alguem poderia me
> ajudar com mais detalhes?
> 
> 
> 2016-04-25 11:43:44 BRT [327]: [19-1]
> user=motor,db=motor,app=[unknown],client=127.0.0.1 COMMIT 25P01 WARNING:
>  25P01: there is no transaction in progress
> 2016-04-25 11:43:44 BRT [327]: [20-1]
> user=motor,db=motor,app=[unknown],client=127.0.0.1 COMMIT 25P01
> LOCATION:  EndTransactionBlock, xact.c:3276

Neste trecho de log acima, sua aplicação fez um COMMIT sem ter feito um
BEGIN.
Pode ser sua aplicação ou outra camada que isole sua aplicação do banco
de daos, então, a investigação pode ser em vários níveis.

[]s
Flavio Gurgel

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

Re: [pgbr-geral] Duvida

2016-01-16 Por tôpico Ivo Sestren Junior
Se você está falando usando no delphi. O parâmetro continua igual.

Em sáb, 16 de jan de 2016 06:44, Reijanio Nunes Ribeiro 
escreveu:

> No firebird qdo quero usar parametros em sintaxe sql uso dessa forma
>
> Select * from tabela where camoo = :pcampo
>
> Compo fica ria essa sintaxe no postgresql
>
> Desde ja grato pela atenção
> ___
> 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

Re: [pgbr-geral] Duvida

2016-01-16 Por tôpico iannsp
dentro do postgresql,
http://www.postgresql.org/docs/9.2/static/sql-prepare.html


no caso da utilização de prepared statement em implementações cliente a
sintaxe é padrão.

ou o uso de "?" , onde o bind é feito acessando os placeholder "?" como
um array zero based.

ou de ":"+name
onde os placeholder são acessiveis ao bind via ":"+name



On 1/16/16 10:08 AM, Ivo Sestren Junior wrote:
> Se você está falando usando no delphi. O parâmetro continua igual.
> 
> 
> Em sáb, 16 de jan de 2016 06:44, Reijanio Nunes Ribeiro
> > escreveu:
> 
> No firebird qdo quero usar parametros em sintaxe sql uso dessa forma
> 
> Select * from tabela where camoo = :pcampo
> 
> Compo fica ria essa sintaxe no postgresql
> 
> Desde ja grato pela atenção
> 
> ___
> 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 mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Re: [pgbr-geral] Duvida

2016-01-16 Por tôpico Reijanio Nunes Ribeiro
no gerenciador tipo ems ou outro qualquer

Em 16 de janeiro de 2016 10:18, iannsp  escreveu:
> dentro do postgresql,
> http://www.postgresql.org/docs/9.2/static/sql-prepare.html
>
>
> no caso da utilização de prepared statement em implementações cliente a
> sintaxe é padrão.
>
> ou o uso de "?" , onde o bind é feito acessando os placeholder "?" como
> um array zero based.
>
> ou de ":"+name
> onde os placeholder são acessiveis ao bind via ":"+name
>
>
>
> On 1/16/16 10:08 AM, Ivo Sestren Junior wrote:
>> Se você está falando usando no delphi. O parâmetro continua igual.
>>
>>
>> Em sáb, 16 de jan de 2016 06:44, Reijanio Nunes Ribeiro
>> > escreveu:
>>
>> No firebird qdo quero usar parametros em sintaxe sql uso dessa forma
>>
>> Select * from tabela where camoo = :pcampo
>>
>> Compo fica ria essa sintaxe no postgresql
>>
>> Desde ja grato pela atenção
>>
>> ___
>> 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 mailing list
> pgbr-geral@listas.postgresql.org.br
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral



-- 
Reijanio Nunes Ribeiro
Desenvolvedor Delphi/Php
Suporte em TI
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Re: [pgbr-geral] duvida com return as json

2015-05-06 Por tôpico Matheus de Oliveira
On Mon, May 4, 2015 at 11:06 PM, Douglas Fabiano Specht 
douglasfabi...@gmail.com wrote:



 retornando o erro:
 ERROR:  query has no destination for result data
 HINT:  If you want to discard the results of a SELECT, use PERFORM instead.
 CONTEXT:  PL/pgSQL function get_historico_mensagem(integer,character
 varying) line 11 at SQL statement



 CREATE OR REPLACE FUNCTION public.get_historico_mail(
 ...
 SELECT row_to_json(r)
 ...


O problema é que você executa essa consulta e não usa o retorno desta em
nenhum lugar. Além disso, sua função não faz retorno algum. Se você quiser
retornar o resultado do row_to_json, você deve salvar numa variável (usando
o INTO) e retorná-la, algo como:

DECLARE
ret json;
...
-- Executa a query e salva o resultado em ret:
SELECT row_to_json(r) INTO ret
FROM ... resto do SELECT
-- Retorna a variável ret na função:
RETURN ret;
...

Atenciosamente,
-- 
Matheus de Oliveira
Analista de Banco de Dados
Dextra Sistemas - MPS.Br nível F!
www.dextra.com.br/postgres
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] duvida com return as json

2015-05-06 Por tôpico Douglas Fabiano Specht
2015-05-06 11:12 GMT-03:00 Matheus de Oliveira matioli.math...@gmail.com:


 On Mon, May 4, 2015 at 11:06 PM, Douglas Fabiano Specht 
 douglasfabi...@gmail.com wrote:



 retornando o erro:
 ERROR:  query has no destination for result data
 HINT:  If you want to discard the results of a SELECT, use PERFORM
 instead.
 CONTEXT:  PL/pgSQL function get_historico_mensagem(integer,character
 varying) line 11 at SQL statement



 CREATE OR REPLACE FUNCTION public.get_historico_mail(
 ...
 SELECT row_to_json(r)
 ...


 O problema é que você executa essa consulta e não usa o retorno desta em
 nenhum lugar. Além disso, sua função não faz retorno algum. Se você quiser
 retornar o resultado do row_to_json, você deve salvar numa variável (usando
 o INTO) e retorná-la, algo como:

 DECLARE
 ret json;
 ...
 -- Executa a query e salva o resultado em ret:
 SELECT row_to_json(r) INTO ret
 FROM ... resto do SELECT
 -- Retorna a variável ret na função:
 RETURN ret;
 ...

 Atenciosamente,
 --
 Matheus de Oliveira
 Analista de Banco de Dados
 Dextra Sistemas - MPS.Br nível F!
 www.dextra.com.br/postgres


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


Obrigado..
resolvido..

-- 

Douglas Fabiano Specht
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] duvida com campo que deferia ser FK

2015-03-03 Por tôpico Guimarães Faria Corcete DUTRA , Leandro
2015-03-03 13:48 GMT-03:00 Douglas Fabiano Specht douglasfabi...@gmail.com:
 O campo idempresa é alimentado em 50% de 700 tabelas.
 logo eu deveria de criar esse campo como FK nas 350 tabelas?

Por que não?


 ou crio somente
 o campo idempresa (int) para armazenar tal informação?

O ideal seria uma chave natural, como por exemplo CNPJ.


-- 
skype:leandro.gfc.dutra?chat  Yahoo!: ymsgr:sendIM?lgcdutra
+55 (61) 3546 7191  gTalk: xmpp:leand...@jabber.org
+55 (61) 9302 2691ICQ/AIM: aim:GoIM?screenname=61287803
BRAZIL GMT−3  MSN: msnim:chat?contact=lean...@dutra.fastmail.fm
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] duvida com trigger

2015-02-18 Por tôpico Matheus de Oliveira
2015-02-18 12:30 GMT-02:00 Douglas Fabiano Specht douglasfabi...@gmail.com
:

 a trigger esta na tabela tabela movimento, e o delete é nela mesmo.
 se eu colocar no before e dentro de um bloco de transação dar rollback na
 aplicação a trigger será executada?
 exemplo

 begin
 insert na table X
 delete movimento(executa a trigger no before)
 update tabela Y(aqui ocorre um erro e um rollback)


Sim, vai ser executada mas o INSERT feito dentro da função de trigger vai
naturalmente ser desfeito. De qualquer modo isso não tem relação com o fato
de ser AFTER ou BEFORE, o mesmo se aplica à ambos.

Concordo com o Fabrízio, você queria ter criado uma trigger do tipo BEFORE.

Atenciosamente,
-- 
Matheus de Oliveira
Analista de Banco de Dados
Dextra Sistemas - MPS.Br nível F!
www.dextra.com.br/postgres
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] duvida com trigger

2015-02-18 Por tôpico Fabrízio de Royes Mello
On 18-02-2015 11:44, Douglas Fabiano Specht wrote:
 Bom dia Pessoal
 
 tenho uma trigger after insert or delete, postgres 9.4, que se for feito um
 delete eu preciso dar um insert em uma tabela com um join.
 até ai tudo certo, ocorre que não esta fazendo o insert, pois o select não
 deve estar retornado dados.
 
 if (TG_OP = 'DELETE') then
 insert into dah.wdados(codempresa, tipo, codigo, titular, nro, chave,
 celular, dataoperacao)
 select old.codempresa, 'CO', old.codigo, old.nome, old.acesso, old.chave,
 c.celular, CURRENT_TIMESTAMP
 from cadcliente c
 join movimento h on (c.codigo = h.codigo )
 where (h.chave = old.chave and h.codempresa=old.codempresa) ;
 return old;
   END IF;
 
 alguma dica ou segredo pra poder fazer esse join com where utilizando as
 colunas OLD?
 ou como eu poderia salvar o comando com seus valores? estou usando o
 debbuger do pgadmin, mas os valores dos campos não mostram.
 

Douglas,

Em qual tabela está essa trigger?? Lembre-se que o AFTER já considera a
operação efetivada, ou seja, se a sua query com JOIN precisa das tuplas
excluidas não serão retornadas. Me parece que vc precisa colocar esse
seu INSERT no BEFORE DELETE.

Att,

-- 
   Fabrízio de Royes Mello 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] duvida com trigger

2015-02-18 Por tôpico Douglas Fabiano Specht
Em 18 de fevereiro de 2015 12:18, Fabrízio de Royes Mello 
fabri...@timbira.com.br escreveu:

 On 18-02-2015 11:44, Douglas Fabiano Specht wrote:
  Bom dia Pessoal
 
  tenho uma trigger after insert or delete, postgres 9.4, que se for feito
 um
  delete eu preciso dar um insert em uma tabela com um join.
  até ai tudo certo, ocorre que não esta fazendo o insert, pois o select
 não
  deve estar retornado dados.
 
  if (TG_OP = 'DELETE') then
  insert into dah.wdados(codempresa, tipo, codigo, titular, nro, chave,
  celular, dataoperacao)
  select old.codempresa, 'CO', old.codigo, old.nome, old.acesso, old.chave,
  c.celular, CURRENT_TIMESTAMP
  from cadcliente c
  join movimento h on (c.codigo = h.codigo )
  where (h.chave = old.chave and h.codempresa=old.codempresa) ;
  return old;
END IF;
 
  alguma dica ou segredo pra poder fazer esse join com where utilizando as
  colunas OLD?
  ou como eu poderia salvar o comando com seus valores? estou usando o
  debbuger do pgadmin, mas os valores dos campos não mostram.
 

 Douglas,

 Em qual tabela está essa trigger?? Lembre-se que o AFTER já considera a
 operação efetivada, ou seja, se a sua query com JOIN precisa das tuplas
 excluidas não serão retornadas. Me parece que vc precisa colocar esse
 seu INSERT no BEFORE DELETE.

 Att,

 --
Fabrízio de Royes Mello 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


Fabrizio,
a trigger esta na tabela tabela movimento, e o delete é nela mesmo.
se eu colocar no before e dentro de um bloco de transação dar rollback na
aplicação a trigger será executada?
exemplo

begin
insert na table X
delete movimento(executa a trigger no before)
update tabela Y(aqui ocorre um erro e um rollback)



-- 

Douglas Fabiano Specht
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] duvida com trigger

2015-02-18 Por tôpico Fabrízio de Royes Mello
On 18-02-2015 23:02, Douglas Fabiano Specht wrote:
 obrigado Matheus e Fabrizio,
 neste caso entao de utilizar o before, e der um rollback, ele vai desfazer
 o insert mesmo que seja feito em outra tabela correto?
 

É isso ai meu guri... o PostgreSQL é ACID, então lembre-se do
A=Atomicidade, ou seja, ou faz tudo ou não faz nada... ;-)

E um INSERT/UPDATE/DELETE em uma tabela que tem um gatilho é uma
transação só... blz?

Att,

-- 
   Fabrízio de Royes Mello 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] duvida com trigger

2015-02-18 Por tôpico Douglas Fabiano Specht
Em 18 de fevereiro de 2015 12:34, Matheus de Oliveira 
matioli.math...@gmail.com escreveu:


 2015-02-18 12:30 GMT-02:00 Douglas Fabiano Specht 
 douglasfabi...@gmail.com:

 a trigger esta na tabela tabela movimento, e o delete é nela mesmo.
 se eu colocar no before e dentro de um bloco de transação dar rollback na
 aplicação a trigger será executada?
 exemplo

 begin
 insert na table X
 delete movimento(executa a trigger no before)
 update tabela Y(aqui ocorre um erro e um rollback)


 Sim, vai ser executada mas o INSERT feito dentro da função de trigger vai
 naturalmente ser desfeito. De qualquer modo isso não tem relação com o fato
 de ser AFTER ou BEFORE, o mesmo se aplica à ambos.

 Concordo com o Fabrízio, você queria ter criado uma trigger do tipo BEFORE.

 Atenciosamente,
 --
 Matheus de Oliveira
 Analista de Banco de Dados
 Dextra Sistemas - MPS.Br nível F!
 www.dextra.com.br/postgres


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


obrigado Matheus e Fabrizio,
neste caso entao de utilizar o before, e der um rollback, ele vai desfazer
o insert mesmo que seja feito em outra tabela correto?


-- 

Douglas Fabiano Specht
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Duvida com Enconding

2015-01-10 Por tôpico Osvaldo Kussama
Em 10/01/15, Vinicius Santosvinicius.santos.li...@gmail.com escreveu:
 Em 10 de janeiro de 2015 09:34, Vinicius Santos 
 vinicius.santos.li...@gmail.com escreveu:

 Bom dia pessoal,

 Criei um banco de dados herdando de template0 usando a codificação
 WIN1252.

 Tenho um arquivo txt codificado em ANSI, e ao tentar importá-lo com COPY,
 tenho o seguinte:

 ERRO:  sequência de bytes é inválida para codificação UTF8: 0xc74f
 HINT:  Este erro pode acontecer também se a sequência de bytes não
 corresponde a codificação esperado pelo servidor, que é controlada por
 client_encoding.
 CONTEXT:  COPY arquivo, linha 48919

 Minha dúvida é a seguinte: Porque a mensagem diz UTF8?? Meu banco é
 Win1252, não UTF8.

 PostgreSQL 8.4.12 no Windows.


 Apenas pra constar.

 Fiz o mesmo usando encoding SQL_ASCII e funcionou.


Isto significa que não é para fazer nenhuma verificação sobre a
codificação utilizada.
Não deve ser utilizado.
Se você utilizar diferentes clientes com diferentes codificações para
alimentar o banco você terá que saber exatamente qual codificação cada
cliente utilizou para recuperar corretamente os dados do banco.

Osvaldo
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Duvida com Enconding

2015-01-10 Por tôpico Vinicius Santos
Em 10 de janeiro de 2015 09:34, Vinicius Santos 
vinicius.santos.li...@gmail.com escreveu:

 Bom dia pessoal,

 Criei um banco de dados herdando de template0 usando a codificação WIN1252.

 Tenho um arquivo txt codificado em ANSI, e ao tentar importá-lo com COPY,
 tenho o seguinte:

 ERRO:  sequência de bytes é inválida para codificação UTF8: 0xc74f
 HINT:  Este erro pode acontecer também se a sequência de bytes não
 corresponde a codificação esperado pelo servidor, que é controlada por
 client_encoding.
 CONTEXT:  COPY arquivo, linha 48919

 Minha dúvida é a seguinte: Porque a mensagem diz UTF8?? Meu banco é
 Win1252, não UTF8.

 PostgreSQL 8.4.12 no Windows.


Apenas pra constar.

Fiz o mesmo usando encoding SQL_ASCII e funcionou.
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Duvida com Enconding

2015-01-10 Por tôpico Vinicius Santos
Em 10 de janeiro de 2015 11:38, Osvaldo Kussama osvaldo.kuss...@gmail.com
escreveu:

 Em 10/01/15, Vinicius Santosvinicius.santos.li...@gmail.com escreveu:
  Bom dia pessoal,
 
  Criei um banco de dados herdando de template0 usando a codificação
 WIN1252.
 
  Tenho um arquivo txt codificado em ANSI, e ao tentar importá-lo com COPY,
  tenho o seguinte:
 
  ERRO:  sequência de bytes é inválida para codificação UTF8: 0xc74f
  HINT:  Este erro pode acontecer também se a sequência de bytes não
  corresponde a codificação esperado pelo servidor, que é controlada por
  client_encoding.
  CONTEXT:  COPY arquivo, linha 48919
 
  Minha dúvida é a seguinte: Porque a mensagem diz UTF8?? Meu banco é
  Win1252, não UTF8.
 
  PostgreSQL 8.4.12 no Windows.
 


 Você tem que verificar o que está declarado tanto do lado do cliente
 quanto do lado do servidor e assegurar que os dados estejam
 compatíveis com as declarações.

 SHOW CLIENT_ENCODING;
 SHOW SERVER_ENCODING;



Matou a xarada.
O client_encoding estava UTF8.

Rodei set client_encoding = 'WIN1252' e a importação funcionou.

Obrigado!
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Duvida com Enconding

2015-01-10 Por tôpico Osvaldo Kussama
Em 10/01/15, Osvaldo Kussamaosvaldo.kuss...@gmail.com escreveu:

Complementando, veja:
http://www.postgresql.org/docs/9.4/static/charset.html

Osvaldo
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Duvida com Enconding

2015-01-10 Por tôpico Osvaldo Kussama
Em 10/01/15, Vinicius Santosvinicius.santos.li...@gmail.com escreveu:
 Bom dia pessoal,

 Criei um banco de dados herdando de template0 usando a codificação WIN1252.

 Tenho um arquivo txt codificado em ANSI, e ao tentar importá-lo com COPY,
 tenho o seguinte:

 ERRO:  sequência de bytes é inválida para codificação UTF8: 0xc74f
 HINT:  Este erro pode acontecer também se a sequência de bytes não
 corresponde a codificação esperado pelo servidor, que é controlada por
 client_encoding.
 CONTEXT:  COPY arquivo, linha 48919

 Minha dúvida é a seguinte: Porque a mensagem diz UTF8?? Meu banco é
 Win1252, não UTF8.

 PostgreSQL 8.4.12 no Windows.



Você tem que verificar o que está declarado tanto do lado do cliente
quanto do lado do servidor e assegurar que os dados estejam
compatíveis com as declarações.

SHOW CLIENT_ENCODING;
SHOW SERVER_ENCODING;

Osvaldo
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Duvida sobre Replicated Cluster no Postgres 9.3

2014-12-02 Por tôpico Fabio Eckhardt
Sebastian,

Preciso realizar uma Replicação em Cluster usando dois nodo multistate
(master / slave), mas com Sistema Operacional Ubuntu e não Fedora.

Em poucas precisaria repedir o processo no link abaixo com S.O Ubuntu (e
nao Fedora) :

http://clusterlabs.org/wiki/PgSQL_Replicated_Cluster

Sabes se existe alguma documentação na web pra S.O Ubuntu ?


Em 1 de dezembro de 2014 13:40, Sebastian Webber sebastian...@gmail.com
escreveu:

 2014-12-01 8:48 GMT-02:00 Fabio Eckhardt 
 fabioeckha...@universo.univates.br:

 Sebastian,

 Sou sincero em lhe dizer, não sou muito fã de FEDORA. E atualmente a
 melhor documentação que existe é pra FEDORA.

 Sabes algum material na internet para UBUNTU (e postgres 9.3) para
 realizar uma a Replicação de Cluster com 2 servidores Postgres, isto é  2
 nodo multistate cluster. ???


 Fábio,

 Tu poderias ser mais específico com o que tu precisa fazer? Confesso que
 não entendi o que tu precisas.


 --
 Sebastian Webber
 http://swebber.me




-- 

Fábio
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Duvida sobre Replicated Cluster no Postgres 9.3

2014-12-02 Por tôpico Matheus de Oliveira
2014-12-02 10:02 GMT-02:00 Fabio Eckhardt 
fabioeckha...@universo.univates.br:

 Preciso realizar uma Replicação em Cluster usando dois nodo multistate
 (master / slave), mas com Sistema Operacional Ubuntu e não Fedora.



O que você quer é utilizar replicação nativa (streaming replication)
master/slave do PostgreSQL. Por que você disse antes que isso não te
atendia?

Ah. E as ferramentas do link citado funcionam no Ubuntu. Já usei em Debian,
mas versões um pouco mais antigas que essas, só que creio não ter muita
diferença.

Atenciosamente,
-- 
Matheus de Oliveira
Analista de Banco de Dados
Dextra Sistemas - MPS.Br nível F!
www.dextra.com.br/postgres
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Duvida sobre Replicated Cluster no Postgres 9.3

2014-12-02 Por tôpico Sebastian Webber
2014-12-02 10:02 GMT-02:00 Fabio Eckhardt 
fabioeckha...@universo.univates.br:

 Sebastian,

 Preciso realizar uma Replicação em Cluster usando dois nodo multistate
 (master / slave), mas com Sistema Operacional Ubuntu e não Fedora.


Como o Matheus comentou antes, a solução é o HotStandby de sempre.

Em poucas precisaria repedir o processo no link abaixo com S.O Ubuntu (e
 nao Fedora) :

 http://clusterlabs.org/wiki/PgSQL_Replicated_Cluster

 Sabes se existe alguma documentação na web pra S.O Ubuntu ?


Se tem eu não conheço. Mas pelo que vi nesse manual, a unica coisa
especifica do SO é a instalação de pacotes e inicialização de serviços.
Tenho certeza que o Ubuntu (ou derivados do debian) tem um pacote e sintaxe
equivalente. Com um pouco de pesquisa você pode encontrar facilmente e eu
até te ajudo se tu me explicar o que você tem dificuldade.

Um abraço!

-- 
Sebastian Webber
http://swebber.me
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Duvida sobre Replicated Cluster no Postgres 9.3

2014-12-01 Por tôpico Sebastian Webber
2014-12-01 8:48 GMT-02:00 Fabio Eckhardt fabioeckha...@universo.univates.br
:

 Sebastian,

 Sou sincero em lhe dizer, não sou muito fã de FEDORA. E atualmente a
 melhor documentação que existe é pra FEDORA.

 Sabes algum material na internet para UBUNTU (e postgres 9.3) para
 realizar uma a Replicação de Cluster com 2 servidores Postgres, isto é  2
 nodo multistate cluster. ???


Fábio,

Tu poderias ser mais específico com o que tu precisa fazer? Confesso que
não entendi o que tu precisas.


-- 
Sebastian Webber
http://swebber.me
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Duvida sobre Replicated Cluster no Postgres 9.3

2014-11-28 Por tôpico Sebastian Webber
2014-11-28 8:57 GMT-02:00 Fabio Eckhardt fabioeckha...@universo.univates.br
:


 ​Bom Dia,

 Gostaria de saber se algum ja implementou no Postgres 9.3 uma Replicação
 de Cluster com 2 servidores Postgres, isto é  2 nodo multistate
 cluster.

 Aonde é temos o seguinte cenário, temos 2 servidor atendendo as
 requisições (e replicando para si mesmo) e uma IP Virtual este sim fica
 visivel para todos mundo e apartir dele que realizada as consultas/insert.



Até aqui, é uma pratica comum, aonde utilzamos o ip virtual para o slave
assumir em caso de parada, sem ter que reconfigurar os clientes.



 Andei verificando e tem algum documentação para Postgres 9.1 para Fedora
 (neste link: http://clusterlabs.org/wiki/PgSQL_Replicated_Cluster).


Isso lembra tanto o RedHat Cluster Suite. Será que é uma solução similar?


 Saberia me informar se existem algo para Postgres 9.3 em Ubuntu ?


Acredito que o pacemaker também está disponível para o ubuntu. Com um pouco
de shell script dá pra chegar na mesma solução.

Obs: Hot Standby e Streaming Replication com um servidor master e outro
 slave não resolve o meu problema. No meu caso gostaria de ter 2 servidor
 (se comunicando) e ip virtual que atendo as consultas/insert.


Não entendi. Tu precisa que os selects sejam balanceados entre os 2
servidores e apenas um deles execute os Updates/Deletes/Inserts? ou apenas
quer utilizar 1 servidor de cada vez?


-- 
Sebastian Webber
http://swebber.me
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] duvida com indice em campo booleano

2014-09-20 Por tôpico Tiago José Adami
Em 19 de setembro de 2014 23:28, Wellington wm...@yahoo.com.br escreveu:
 Pessoal,

 em uma tabela foi criado um indice assim: campo = false.

 Quando eu rodo a consulta selecionando campo is false, o indice nao é
 utilizado.
 O indice so é utilizado se seleciono campo = false.
 Alguem saberia me explicar por que isso acontece ?

Esse é um recurso do PostgreSQL chamado índice parcial (ou /partial
index/ [1]). Se for utilizar esse recurso, você precisaria criar um
índices para os valores false e outro para os valores true. Dependendo
do número de registros da tabela, um índice simples (sem a clausula de
condição explícita) já é o bastante.

Resumindo: ao invés de criar o índice com uma condição (coluna =
valor), utilize apenas o nome da coluna.

CREATE INDEX indice ON tabela (nome_da_coluna)

Dá uma lida na documentação abaixo:

[1] http://www.postgresql.org/docs/9.3/static/indexes-expressional.html


TIAGO J. ADAMI
http://www.adamiworks.com
@tiadami
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] duvida com indice em campo booleano

2014-09-20 Por tôpico Matheus de Oliveira
2014-09-19 23:28 GMT-03:00 Wellington wm...@yahoo.com.br:

 em uma tabela foi criado um indice assim: campo = false.

 Quando eu rodo a consulta selecionando campo is false, o indice nao é
 utilizado.
 O indice so é utilizado se seleciono campo = false.
 Alguem saberia me explicar por que isso acontece ?


O operador IS e o operador de igualdade não são equivalentes. O operador de
igualdade considera valores iguais mas retorna NULL caso um dos operandos
seja NULL, já o IS considera exatamente iguais ignorando valores nulos,
como se NULL fosse um terceiro valor possível (e.g. no caso retorna FALSE
caso campo seja NULL ou TRUE, e TRUE caso o campo seja FALSE).

Para exemplificar, veja:

postgres=# SELECT false IS false, null::boolean IS false, false =
false, null::boolean = false;
 ?column? | ?column? | ?column? | ?column?
--+--+--+--
 t| f| t| (null)
(1 row)

Para índices parciais, sempre tente casar exatamente igual.

Atenciosamente,
-- 
Matheus de Oliveira
Analista de Banco de Dados
Dextra Sistemas - MPS.Br nível F!
www.dextra.com.br/postgres
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] duvida com indice em campo booleano

2014-09-20 Por tôpico Tiago José Adami
Em 20/09/2014 14:34, Matheus de Oliveira matioli.math...@gmail.com
escreveu:


 2014-09-19 23:28 GMT-03:00 Wellington wm...@yahoo.com.br:

 em uma tabela foi criado um indice assim: campo = false.

 Quando eu rodo a consulta selecionando campo is false, o indice nao é
utilizado.
 O indice so é utilizado se seleciono campo = false.
 Alguem saberia me explicar por que isso acontece ?


 O operador IS e o operador de igualdade não são equivalentes. O operador
de igualdade considera valores iguais mas retorna NULL caso um dos
operandos seja NULL, já o IS considera exatamente iguais ignorando valores
nulos, como se NULL fosse um terceiro valor possível (e.g. no caso retorna
FALSE caso campo seja NULL ou TRUE, e TRUE caso o campo seja FALSE).

 Para exemplificar, veja:

 postgres=# SELECT false IS false, null::boolean IS false, false =
false, null::boolean = false;
  ?column? | ?column? | ?column? | ?column?
 --+--+--+--
  t| f| t| (null)
 (1 row)

 Para índices parciais, sempre tente casar exatamente igual.

Ops, na ânsia de querer ajudar fiz uma leitura péssima e não percebi a
cláusula. Boa explicação, Matheus.

---
Tiago J. Adami
Sent from GMail
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] duvida com indice em campo booleano

2014-09-20 Por tôpico Matheus de Oliveira
2014-09-20 14:42 GMT-03:00 Tiago José Adami adam...@gmail.com:

 Ops, na ânsia de querer ajudar fiz uma leitura péssima e não percebi a
 cláusula. Boa explicação, Matheus.


Acontece cara. Tranquilo.

:-)

Atenciosamente,
-- 
Matheus de Oliveira
Analista de Banco de Dados
Dextra Sistemas - MPS.Br nível F!
www.dextra.com.br/postgres
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Duvida em logica

2014-09-09 Por tôpico Ricardo
Também achei que há um erro de modelagem e já estou providenciando consertar 
isso. Mas preciso achar um remendo para não deixar o sistema parado.


From: Tiago José Adami 
Sent: Monday, September 08, 2014 11:54 PM
To: PGBR 
Subject: Re: [pgbr-geral] Duvida em logica


On Sep 8, 2014 4:59 PM, Ricardo rica...@longomaquinas.com wrote:

 Boa tarde pessoal,
  
 Estou enrolado em achar um solução via trigger para este caso.
  
 Tenho duas tabelas, uma denominada “Produtos” e outra “Matéria Prima” com 
 o campo “Quantidade Atual”.
  
 Sempre que ocorre uma saída de produtos ocorre o gatilho em uma trigger 
 que faz a atualização do valor em “Quantidade Atual” na tabela “Produtos”e o 
 mesmo ocorre quando há uma saída de matéria prima na tabela “Matéria Prima”.

Possivelmente há um erro no conceito da modelagem (ou modelação, como alguns 
preferem).

Crie uma tabela separada para saldos de estoque. E verifique se matéria prima 
também pode ser um produto, assim você teria uma única tabela para produtos e 
matérias primas, diferenciando cada tipo por um atributo, e uma única tabela 
para saldo de estoque.

---
Tiago J. Adami
Sent from GMail




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





Nenhum vírus encontrado nessa mensagem.
Verificado por AVG - www.avgbrasil.com.br
Versão: 2014.0.4765 / Banco de dados de vírus: 4015/8177 - Data de Lançamento: 
09/08/14
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Duvida em logica

2014-09-09 Por tôpico Mário Agostinho Reis
Claro, só pode! Então não é o que chama de ligações circulares. A
actualiza B mas B logo que é actualizado, vai actualizar A e nunca
mais saímos daqui, porque as actualizações disparam os gatilhos.
Agora não percebi a necessidade de fazer assim.
Para ultrapassar este  loop se fosse você experimentava por o
campo:“Quantidade
Atual” (+ um campo ID) numa 3.ª tabela actualizável pelos gatilhos de
qualquer das duas primeiras e retirava os gatilhos que fazem actualizações
reciprocas.
Porém, esta 3.ª tabela não pode fazer essas actualizações deve limitar-me
a recebe-las.
Tem um problema, você tem de fazer mais um acesso. E, daí? O Posgres
resolve isso para V. num àpice.
Nas consultas/validações V. pode construir uma view que lhe permite ter
sempre on line “Quantidade Atual”  quer de produtos quer de Matéria Prima.


Com os meus melhores cumprimentos
O Secretário Geral da ACRA
Mário Agostinho  Reis

Esta mensagem contém informação de natureza confidencial e é
exclusivamente dirigida ao(s) destinatário(s) indicado(s). Se, por engano,
receber este email agradecemos que não o copie nem o reenvie e que nos
notifique do ocorrido através do email de resposta.

No dia 8 de Setembro de 2014 às 19:59, Ricardo rica...@longomaquinas.com
escreveu:

   Boa tarde pessoal,

 Estou enrolado em achar um solução via trigger para este caso.

 Tenho duas tabelas, uma denominada “Produtos” e outra “Matéria Prima”
 com o campo “Quantidade Atual”.

 Sempre que ocorre uma saída de produtos ocorre o gatilho em uma
 trigger que faz a atualização do valor em “Quantidade Atual” na tabela
 “Produtos”e o mesmo ocorre quando há uma saída de matéria prima na tabela
 “Matéria Prima”.

 Porem tem um campo na tabela “Produtos” onde pode ser amarrado uma
 “Matéria Prima”. Sendo assim se ocorrer uma saída de produtos, além de
 fazer atualização da “Quantidade Atual” na tabela “Produtos” tem que fazer
 na tabela “Matéria Prima” também. E se ocorrer uma saída na tabela “Matéria
 Prima” tem que atualizar a “Quantidade Atual” nas duas tabelas também.
 O problema é que quando é executado o trigger que faz o update de uma
 tabela, essa tabela executa um trigger para atualizar a outra e fica em um
 loop infinito.

 Não sei se o melhor caminho é criar um campo como semáforo, fico com
 receio desse semáforo travar e não ocorrer mais atualizações.

 Abraços
 Ricardo

 ___
 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


Re: [pgbr-geral] Duvida em logica

2014-09-08 Por tôpico Tiago José Adami
On Sep 8, 2014 4:59 PM, Ricardo rica...@longomaquinas.com wrote:

 Boa tarde pessoal,

 Estou enrolado em achar um solução via trigger para este caso.

 Tenho duas tabelas, uma denominada “Produtos” e outra “Matéria Prima”
com o campo “Quantidade Atual”.

 Sempre que ocorre uma saída de produtos ocorre o gatilho em uma
trigger que faz a atualização do valor em “Quantidade Atual” na tabela
“Produtos”e o mesmo ocorre quando há uma saída de matéria prima na tabela
“Matéria Prima”.

Possivelmente há um erro no conceito da modelagem (ou modelação, como
alguns preferem).

Crie uma tabela separada para saldos de estoque. E verifique se matéria
prima também pode ser um produto, assim você teria uma única tabela para
produtos e matérias primas, diferenciando cada tipo por um atributo, e uma
única tabela para saldo de estoque.

---
Tiago J. Adami
Sent from GMail
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Duvida com Vacuum Full

2014-08-20 Por tôpico Flavio Henrique Araque Gurgel

tenho uma duvida: É possivel identificar quais tabelas do banco estao
inchadas, ou seja, que sofreram muitas alteracoes e que necessitam de


https://wiki.postgresql.org/wiki/Show_database_bloat


vacuum full ?


Normalmente, nunca, mas há casos excepcionais.

[]s
Flavio Gurgel
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Duvida em escrita de SQL

2014-08-12 Por tôpico Flavio Henrique Araque Gurgel

Pessoal gostaria de uma dica dos mais esperientes:

Qual a diferença para o banco na escrita destes dois SQLs?

SELECT twe.*
  , (SELECT descricao FROM tespecializacoes WHERE idespecializacao =
twe.idespecializacao) AS especializacao
   FROM tworkflowetapas twe


SELECT twe.*
   FROM tworkflowetapas twe
   LEFT JOIN tespecializacoes esp ON (twe.idespecializacao =
esp.idespecializacao)

Tem alguma diferença de performance, quebra de indices, etc?


Dependendo da versão do PostgreSQL, se você fizer um EXPLAIN ANALYZE de 
cada uma delas, provavelmente o plano será exatamente o mesmo.


[]s
Flavio Gurgel
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Duvida em escrita de SQL

2014-08-12 Por tôpico Pedro B. Alves



 Dependendo da versão do PostgreSQL, se você fizer um EXPLAIN ANALYZE de
 cada uma delas, provavelmente o plano será exatamente o mesmo.


Utilizo a versão 9.3.x

executei o EXPLAIN..

SELECT twe.*
 , (SELECT descricao FROM tespecializacoes WHERE idespecializacao =
twe.idespecializacao) AS especializacao
  FROM tworkflowetapas twe


Seq Scan on tworkflowetapas twe  (cost=0.00..16.36 rows=14 width=30)
(actual time=0.040..0.142 rows=14 loops=1)
  SubPlan 1
-  Seq Scan on tespecializacoes  (cost=0.00..1.09 rows=1 width=218)
(actual time=0.003..0.004 rows=1 loops=14)
  Filter: (idespecializacao = twe.idespecializacao)
  Rows Removed by Filter: 7
Total runtime: 0.220 ms




SELECT twe.*
  FROM tworkflowetapas twe
  LEFT JOIN tespecializacoes esp ON (twe.idespecializacao =
esp.idespecializacao)


Seq Scan on tworkflowetapas twe  (cost=0.00..1.14 rows=14 width=30)
(actual time=0.013..0.016 rows=14 loops=1)
Total runtime: 0.068 ms
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Duvida em escrita de SQL

2014-08-12 Por tôpico Rafael Fialho
2014-08-12 11:05 GMT-03:00 Pedro B. Alves pedroalve...@gmail.com:



 Dependendo da versão do PostgreSQL, se você fizer um EXPLAIN ANALYZE de
 cada uma delas, provavelmente o plano será exatamente o mesmo.


 Utilizo a versão 9.3.x

 executei o EXPLAIN..

 SELECT twe.*
  , (SELECT descricao FROM tespecializacoes WHERE idespecializacao =
 twe.idespecializacao) AS especializacao
   FROM tworkflowetapas twe


 Seq Scan on tworkflowetapas twe  (cost=0.00..16.36 rows=14 width=30)
 (actual time=0.040..0.142 rows=14 loops=1)
   SubPlan 1
 -  Seq Scan on tespecializacoes  (cost=0.00..1.09 rows=1 width=218)
 (actual time=0.003..0.004 rows=1 loops=14)
   Filter: (idespecializacao = twe.idespecializacao)
   Rows Removed by Filter: 7
 Total runtime: 0.220 ms




 SELECT twe.*
   FROM tworkflowetapas twe
   LEFT JOIN tespecializacoes esp ON (twe.idespecializacao =
 esp.idespecializacao)


 Seq Scan on tworkflowetapas twe  (cost=0.00..1.14 rows=14 width=30)
 (actual time=0.013..0.016 rows=14 loops=1)
 Total runtime: 0.068 ms


O tempo da segunda consulta é menor, pois o banco está ignorando a junção.
Você tem que utilizar pelo menos algum campo da tabela para que os dois
planos de execução sejam realmente iguais, e retornem a mesma coisa.

[]'s
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Duvida em escrita de SQL

2014-08-12 Por tôpico Osvaldo Kussama
2014-08-12 11:05 GMT-03:00, Pedro B. Alves pedroalve...@gmail.com:



 Dependendo da versão do PostgreSQL, se você fizer um EXPLAIN ANALYZE de
 cada uma delas, provavelmente o plano será exatamente o mesmo.


 Utilizo a versão 9.3.x

 executei o EXPLAIN..

 SELECT twe.*
  , (SELECT descricao FROM tespecializacoes WHERE idespecializacao =
 twe.idespecializacao) AS especializacao
   FROM tworkflowetapas twe


 Seq Scan on tworkflowetapas twe  (cost=0.00..16.36 rows=14 width=30)
 (actual time=0.040..0.142 rows=14 loops=1)
   SubPlan 1
 -  Seq Scan on tespecializacoes  (cost=0.00..1.09 rows=1 width=218)
 (actual time=0.003..0.004 rows=1 loops=14)
   Filter: (idespecializacao = twe.idespecializacao)
   Rows Removed by Filter: 7
 Total runtime: 0.220 ms




 SELECT twe.*
   FROM tworkflowetapas twe
   LEFT JOIN tespecializacoes esp ON (twe.idespecializacao =
 esp.idespecializacao)


 Seq Scan on tworkflowetapas twe  (cost=0.00..1.14 rows=14 width=30)
 (actual time=0.013..0.016 rows=14 loops=1)
 Total runtime: 0.068 ms



Creio que no segundo SELECT faltou esp.descricao na lista de campos,
senão não haveria necessidade da tabela tespecializacoes (como
concluiu o otimizador).

Osvaldo
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Duvida em escrita de SQL

2014-08-12 Por tôpico Bruno Silva
On Tue, Aug 12, 2014 at 11:05 AM, Pedro B. Alves pedroalve...@gmail.com
wrote:

 SELECT twe.*
   FROM tworkflowetapas twe
   LEFT JOIN tespecializacoes esp ON (twe.idespecializacao =
 esp.idespecializacao)


Por que isso se você não usa nada da tabela tespecializacoes e ainda a usa
como LEFT JOIN?

Bruno E. A. Silva.
Analista de Sistemas.
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Duvida em escrita de SQL

2014-08-12 Por tôpico Pedro B. Alves

 Creio que no segundo SELECT faltou esp.descricao na lista de campos,
 senão não haveria necessidade da tabela tespecializacoes (como
 concluiu o otimizador).


Isso mesmo.
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Duvida em escrita de SQL

2014-08-12 Por tôpico Wellington

Pessoal gostaria de uma dica dos mais esperientes:

Qual a diferença para o banco na escrita destes dois SQLs?

SELECT twe.*
  , (SELECT descricao FROM tespecializacoes WHERE idespecializacao =
twe.idespecializacao) AS especializacao
   FROM tworkflowetapas twe

SELECT twe.*
   FROM tworkflowetapas twe
   LEFT JOIN tespecializacoes esp ON (twe.idespecializacao =
esp.idespecializacao)

Tem alguma diferença de performance, quebra de indices, etc?


Acredito que o LEFT JOIN valeria a pena se fosse para buscar 2 ou mais 
campos na tabela tespecializacoes, o SQL abaixo seria menos performatico, ou 
estou errado ?


SELECT twe.*
 , (SELECT descricao FROM tespecializacoes WHERE 
idespecializacao = twe.idespecializacao) AS especializacao,
 , (SELECT outro_campo FROM tespecializacoes WHERE 
idespecializacao = twe.idespecializacao) AS exemplo
  FROM tworkflowetapas twe 


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


Re: [pgbr-geral] Duvida sobre schema em funcao

2014-07-25 Por tôpico Flavio Henrique Araque Gurgel

quando eu executo o comando SET search_path TO nome_schema dentro de
uma funcao, em uma mesma sessao, o SGDB nao altera o search_path nos
comandos executados apos o primeiro, me parece que o schema fica em um
tipo de cache.

Duvida: Existe alguma forma de contornar isso?

Sei que posso usar o comando Execute passando o schema em uma
variavel, mas gostaria de evitar fazer comandos sql concatenando Strings.


Você parece ter misturado as coisas.
Uma vez feito um SET, isso vai valer até o final da sessão.
Se chamado dentro de uma transação, será desfeito por um rollback.

Por outro lado, dentro de um execute, o search_path da sessão não é 
utilizado.


Só se usa execute quando você precisa de SQL dinâmico, ou seja, a 
consulta e nomes de tabelas e colunas são variáveis. Verifique se sua 
função realmente precisa de execute, se quiser passe o código aqui pra 
gente ver e te ajudar melhor.
Todavia, você pode passar o search_path dentro do execute, colocar um 
ponto-e-vírgula e sua consulta logo após.


[]s
Flavio Gurgel
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Duvida sobre schema em funcao

2014-07-25 Por tôpico Matheus de Oliveira
2014-07-25 3:15 GMT-03:00 Wellington wm...@yahoo.com.br:

  quando eu executo o comando SET search_path TO nome_schema dentro de
 uma funcao, em uma mesma sessao, o SGDB nao altera o search_path nos
 comandos executados apos o primeiro, me parece que o schema fica em um tipo
 de cache.

 Duvida: Existe alguma forma de contornar isso?



O que creio que está acontecendo é que quando você executa uma função
PL/pgSQL a primeira vez é feito o cache dos planos de execução, e esse
cache utiliza o oid das relações e não o nome exato que você passou. Assim
sendo, na primeira execução será usada as tabelas respeitando o search_path
informado, nas próximas execuções, mesmo alterando o search_path, ele irá
continuar com o plano de execução com o search_path anterior.

Agora. O comportamento quanto a isso foi alterado na versão 9.3 [1]:

Force cached plans to be replanned if the search_path changes (Tom Lane)

Previously, cached plans already generated in the current session were not
redone if the query was re-executed with a new search_path setting,
resulting in surprising behavior.

Ou seja, sempre que o search_path é alterado, os planos armazenados são
descartados. O efeito que isso causa é que se você altera sempre o
search_path, sempre irás ter que fazer o planejamento dos planos e não
utilizará o cache.


Sei que posso usar o comando Execute passando o schema em uma variavel,
 mas gostaria de evitar fazer comandos sql concatenando Strings.



Sim. Você pode, na verdade nem precisa passar o schema como variável, as
consultas executadas pelo EXECUTE não têm os planos cacheados, basta
executá-las então que o search_path corrente será sempre respeitado. As
outras alternativas são: clonar sua função em cada esquema ou atualizar
para a 9.3.


[1] http://www.postgresql.org/docs/9.3/static/release-9-3.html

Atenciosamente,
-- 
Matheus de Oliveira
Analista de Banco de Dados
Dextra Sistemas - MPS.Br nível F!
www.dextra.com.br/postgres
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Duvida sobre schema em funcao

2014-07-25 Por tôpico Matheus de Oliveira
2014-07-25 6:30 GMT-03:00 Flavio Henrique Araque Gurgel fha...@gmail.com:

 Por outro lado, dentro de um execute, o search_path da sessão não é
 utilizado.



Opa. Até onde sei o search_path é respeitado dentro de um EXECUTE sim. A
não ser que seja um comportamento que tenha sido alterado nas versões mais
recentes.


 Só se usa execute quando você precisa de SQL dinâmico, ou seja, a consulta
 e nomes de tabelas e colunas são variáveis.


Eu vejo mais um uso para atingir melhor performance, algumas vezes não
queremos um plano genérico, e é melhor colocar uma consulta num EXECUTE do
que executar diretamente (evitando o plano de execução sem os valores
reais, a.k.a, plano genérico). Isso é comum quando a tabela envolvida está
particionada (basicamente um plano genérico vai ter que unir todas tabelas
filhas, mesmo que a consulta use a chave do particionamento). Entretanto, a
partir da versão 9.2 os planos preparados ficaram melhores (basicamente é
feito um re-planejamento no momento da execução em determinadas
situações) e não é mais comum necessitar de recorrer ao EXECUTE para tanto
(apesar de que já ouvi casos onde ainda é necessário, já que as
determinadas situações são difíceis de prever).

Atenciosamente,
-- 
Matheus de Oliveira
Analista de Banco de Dados
Dextra Sistemas - MPS.Br nível F!
www.dextra.com.br/postgres
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Duvida tempo de processamento procedure

2014-01-30 Por tôpico Tiago Adami
Em 30 de janeiro de 2014 10:02, Anderson Marques
jackvalant...@gmail.com escreveu:
 Bom dia, pessoal estamos desenvolvendo um sistema de gerenciamento de
 estoque, porem surgiu essa duvidaa procedure pode travar o sistema
 dependendo da demanda de requisição simultânea, tipo umas 1500 requisições
 simultâneas?

1500 requisições simultâneas (a.k.a ao mesmo tempo) é algo realmente
grande. Cada requisição irá consumir 1 núcleo de CPU, logo haverá
distribuição entre os cores existentes, criando uma fila. Isso não
implica em travar, exceto se a sua procedure concorrer pelos mesmos
registros de uma tabela. Leia sobre níveis de isolamento (ou isolação,
como alguns dizem) [1] para ter uma idéia do que pode ocorrer.

 o problema que estamos resolvendo com a procedure é a movimentação do
 estoque
 , na entrada e saída, fizemos uma simulação onde dois usuários trabalham no
 mesmo item fazendo a saida, do modo que está implementado apenas no código
 ambos trabalharam o mesmo valor de estoque só que o estoque para o 2ª ja não
 era o mesmo.

 a procedure é a melhor implementação para resolver isso?

Levando em consideração a aquisição de LOCK corretamente - usando os
conceitos de [1] - você poderá tratar isso diretamente na aplicação
sem criar objetos de banco. Exceto se existir algum outro agente além
do seu aplicativo que altere valores que impliquem na modificação de
saldos eu vejo que através de um trigger e uma procedure você obterá
resultados mais satisfatórios, porém há de se preocupar com os limites
da regra de negócio - para não misturar metade no programa ou metade
no banco de dados.

O que você precisa é alterar o isolamento da transação no momento de
alterar o registro com saldo com [2] [3]:

1) Selecionar o registro a ser alterado com SELECT ... FOR UPDATE;
2) Alterar o registro pela procedure chamada por trigger, ou, pelo programa;
3) COMMIT na transação pela aplicação;

Quando 2 transações tentarem selecionar o mesmo registro pelo SELECT
... FOR UPDATE, a primeira que tiver acesso ao registro irá conseguir.
Enquanto essa primeira transação não for encerrada (COMMIT ou
ROLLBACK), qualquer outra transação que executar o SELECT ... FOR
UPDATE sobre o mesmo registro (ou vários, incluindo o registro que já
está resevado) irá ficar em LOCK WAIT.

Outra opção é alterar o nível de isolamento e usando cursores dentro
de uma procedure para não precisará usar o SELECT ... FOR UPDATE.

[1] http://www.postgresql.org/docs/9.3/static/transaction-iso.html
[2] http://www.postgresql.org/docs/9.3/static/sql-set-transaction.html
[3] http://www.postgresql.org/docs/9.3/static/explicit-locking.html




TIAGO J. ADAMI
http://www.adamiworks.com
@tiadami
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] duvida com as aspas dentro de aspas ao criar função

2014-01-20 Por tôpico Matheus de Oliveira
2014/1/19 Eloi e...@openmailbox.org


  É, parece que você criou uma bagunça com as aspas mesmo... Acho que vai
  ficar mais fácil refazer a função do que ajustar cada problema nela. Já
 que
  vamos refazer, que tal adicionar algumas dicas de ouro? ;-)
 
 
  Bom, primeiro, veja o modelo que criei (não testei, então pode ter algum
  erro que eu não tenha visto):
 
  CREATE OR REPLACE FUNCTION wosis.fun_create_sequence(sch text)
  RETURNS text
  LANGUAGE plpgsql VOLATILE
  AS
  $BODY$
  DECLARE
  row record;
  BEGIN
  FOR row IN
  SELECT table_name, table_name||'_id' AS id_name, 0 AS
 next_value
  FROM information_schema.tables
  WHERE table_schema = sch
  AND  table_type = 'BASE TABLE'
  ORDER BY table_name
  LOOP
  EXECUTE
  format('SELECT max(%I)+1 FROM %I.%I', row.id_name, sch,
  row.table_name)
  INTO row.next_value;
  EXECUTE
  format(
  'CREATE SEQUENCE %I.%I START %L OWNED BY %I.%I.%I;',
  sch,
  row.table_name||'_'||row.id_name||'_seq',
 row.next_value -- faltava
  sch,
  row.table_name,
  row.id_name
  );
 EXECUTE
 format(
  'ALTER TABLE %I.%I ALTER COLUMN %I SET DEFAULT
  nextval(%L);', -- AQUI FALTAVA A VIRGULA
  sch,
  row.table_name,
  row.id_name,
  row.table_name||'_'||row.id_name||'_seq'
  );
  END LOOP;
  RETURN 'Sequences were created';
  END;
  $BODY$;
 
  Agora vejamos... Em primeiro lugar eu não usei uma tabela temporário,
  simplesmente porque não vi sentido, e acho que acabou deixando a função
  mais confusa ainda. Ao invés disso eu apenas naveguei no resultado da
  consulta à view information_schema.tables. Repare também que não usei
  consulta dinâmica (comando EXECUTE) nesta consulta, simplesmente porque
 não
  é necessário e recomendo evitar o uso de EXECUTE ao máximo.
 
  Em segundo lugar, precisamos de três comandos, um para fazer um `SELECT
  max` para recuperar o maior valor, outro para criar a sequência e o
 último
  para alterar o DEFAULT da tabela. Em ambos os casos a função format ajuda
  bastante, e não precisa de tantos quote_ident's, que podem ser confusos.
 
  Em [1] há um comparativo legal entre format e quote_ident. Veja lá e
 poste
  dúvidas que sobrarem aqui.
 
  Por fim, adicionei a cláusula OWNED BY no CREATE SEQUENCE, para deixar
  idêntico ao que o pseudo-tipo SERIAL faz, e é uma boa prática para
 futuras
  manutenções.
 
  Só tenho mais um comentário. Esses comandos estão (talvez erroneamente)
  assumindo que toda tabela tem um campo nome da tabela_id, mas talvez
  faça parte do seu modelo, mas eu evitaria isso, a não ser que seja algo
  executado somente numa tarefa administrativa.
 
  Ufa... Leia com calma, tentei ser o mais claro possível. ^^
 
  [1]
 
 http://www.postgresql.org/docs/current/static/plpgsql-statements.html#PLPGSQL-QUOTE-LITERAL-EXAMPLE
 
 
  Atenciosamente,

 Obrigado a todos pelas respostas e desculpar-me por não responder antes.

 Gostei das dicas do 'format()', muito parecido ao python e também do
 'INTO row.next_value', não conhecia. E sem duvida que conceptualmente a
 função ficou muito melhor, não complicou. Parece que terei de rever
 todas as minhas funções que estive a escrever na ultima semana.

 Sim, todas as tabelas tem o nome da tabela_id, fiz uma função para
 que assim fosse. E sim, é apenas uma tarefa administrativa num esquema
 com 70 tabelas.



Ok. Fico mais tranquilo agora, +D.



 Foi necessário uns retoques minimos, uma virgula que falatva e passar o
 valor de row.next_value.



É, eu só digitei, não testei nada, então podia ter erros.



 Agora só falta um detalhe, esta a passar o valor de 'next_value' como
 texto e salta erro. Tentei o 'cast' (::int) mas parece-me que isso é
 apenas para o puro SQL.

 ERROR:  syntax error at or near '25476'
 LINE 1: ...E SEQUENCE wosis.class_fao_class_fao_id_seq START '25476' OW...
  ^
 QUERY:  CREATE SEQUENCE wosis.class_fao_class_fao_id_seq START '25476'
 OWNED BY wosis.class_fao.class_fao_id;
 CONTEXT:  PL/pgSQL function fun_create_sequence line 19 at EXECUTE
 statement

 Como faço para passar o valor como inteiro?



Realmente, o next_value devia ser passado como inteiro, não literal. Para
resolver isso, basta usar o %s ao invés de %L. Este irá alocar o valor
diretamente, por isso recomendo um CAST no parâmetro (ele já é inteiro, mas
é só para garantir 100% que não haverá erros):

   format('CREATE SEQUENCE %I.%I START %s OWNED BY %I.%I.%I;',  ,
row.next_value::int, ...);



 Muito obrigado a todos 

Re: [pgbr-geral] duvida com as aspas dentro de aspas ao criar função

2014-01-20 Por tôpico Eloi Ribeiro

Como faço para passar o valor como inteiro?


Realmente, o next_value devia ser passado como inteiro, não literal.
Para resolver isso, basta usar o %s ao invés de %L. Este irá alocar
o valor diretamente, por isso recomendo um CAST no parâmetro (ele já
é inteiro, mas é só para garantir 100% que não haverá erros):

   format('CREATE SEQUENCE %I.%I START %s OWNED BY %I.%I.%I;', 
, row.next_value::int, ...);



OK! Mudando o %L por %s já passa o valor como inteiro e funciona (mesmo 
sem o cast ::int). A função ficou assim.


CREATE OR REPLACE FUNCTION wosis.fun_create_sequence(sch text)
RETURNS text
LANGUAGE plpgsql VOLATILE
AS
$BODY$
DECLARE
row record;
BEGIN
FOR row IN
SELECT table_name, table_name||'_id' AS id_name, 0 AS 
next_value

FROM information_schema.tables
WHERE table_schema = sch
AND  table_type = 'BASE TABLE'
ORDER BY table_name
LOOP
EXECUTE
format(
   'SELECT max(%I)+1 FROM %I.%I;',
   row.id_name,
   sch,
   row.table_name)
   INTO row.next_value;
EXECUTE
format(
   'CREATE SEQUENCE %I.%I START %s OWNED BY 
%I.%I.%I;',

   sch,
   row.table_name||'_'||row.id_name||'_seq',
   row.next_value,
   sch,
   row.table_name,
   row.id_name
  );
   EXECUTE
   format(
  'ALTER TABLE %I.%I ALTER COLUMN %I SET DEFAULT 
nextval(%L);',

  sch,
  row.table_name,
  row.id_name,
  sch || '.' 
||row.table_name||'_'||row.id_name||'_seq'

 );
END LOOP;
RETURN 'Sequences were created';
END;
$BODY$;
ALTER FUNCTION wosis.fun_create_sequence(text) OWNER TO postgres;
COMMENT ON FUNCTION wosis.fun_create_sequence(text) IS 'Create sequences 
in all tables in a given schema';



Muito obrigado pela ajuda!

[]'s

Eloi

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


Re: [pgbr-geral] duvida com as aspas dentro de aspas ao criar função

2014-01-19 Por tôpico Eloi

 É, parece que você criou uma bagunça com as aspas mesmo... Acho que vai
 ficar mais fácil refazer a função do que ajustar cada problema nela. Já que
 vamos refazer, que tal adicionar algumas dicas de ouro? ;-)


 Bom, primeiro, veja o modelo que criei (não testei, então pode ter algum
 erro que eu não tenha visto):

 CREATE OR REPLACE FUNCTION wosis.fun_create_sequence(sch text)
 RETURNS text
 LANGUAGE plpgsql VOLATILE
 AS
 $BODY$
 DECLARE
 row record;
 BEGIN
 FOR row IN
 SELECT table_name, table_name||'_id' AS id_name, 0 AS next_value
 FROM information_schema.tables
 WHERE table_schema = sch
 AND  table_type = 'BASE TABLE'
 ORDER BY table_name
 LOOP
 EXECUTE
 format('SELECT max(%I)+1 FROM %I.%I', row.id_name, sch,
 row.table_name)
 INTO row.next_value;
 EXECUTE
 format(
 'CREATE SEQUENCE %I.%I START %L OWNED BY %I.%I.%I;',
 sch,
 row.table_name||'_'||row.id_name||'_seq',
row.next_value -- faltava
 sch,
 row.table_name,
 row.id_name
 );
EXECUTE
format(
 'ALTER TABLE %I.%I ALTER COLUMN %I SET DEFAULT
 nextval(%L);', -- AQUI FALTAVA A VIRGULA
 sch,
 row.table_name,
 row.id_name,
 row.table_name||'_'||row.id_name||'_seq'
 );
 END LOOP;
 RETURN 'Sequences were created';
 END;
 $BODY$;

 Agora vejamos... Em primeiro lugar eu não usei uma tabela temporário,
 simplesmente porque não vi sentido, e acho que acabou deixando a função
 mais confusa ainda. Ao invés disso eu apenas naveguei no resultado da
 consulta à view information_schema.tables. Repare também que não usei
 consulta dinâmica (comando EXECUTE) nesta consulta, simplesmente porque não
 é necessário e recomendo evitar o uso de EXECUTE ao máximo.

 Em segundo lugar, precisamos de três comandos, um para fazer um `SELECT
 max` para recuperar o maior valor, outro para criar a sequência e o último
 para alterar o DEFAULT da tabela. Em ambos os casos a função format ajuda
 bastante, e não precisa de tantos quote_ident's, que podem ser confusos.

 Em [1] há um comparativo legal entre format e quote_ident. Veja lá e poste
 dúvidas que sobrarem aqui.

 Por fim, adicionei a cláusula OWNED BY no CREATE SEQUENCE, para deixar
 idêntico ao que o pseudo-tipo SERIAL faz, e é uma boa prática para futuras
 manutenções.

 Só tenho mais um comentário. Esses comandos estão (talvez erroneamente)
 assumindo que toda tabela tem um campo nome da tabela_id, mas talvez
 faça parte do seu modelo, mas eu evitaria isso, a não ser que seja algo
 executado somente numa tarefa administrativa.

 Ufa... Leia com calma, tentei ser o mais claro possível. ^^

 [1]
 http://www.postgresql.org/docs/current/static/plpgsql-statements.html#PLPGSQL-QUOTE-LITERAL-EXAMPLE


 Atenciosamente,

Obrigado a todos pelas respostas e desculpar-me por não responder antes.

Gostei das dicas do 'format()', muito parecido ao python e também do
'INTO row.next_value', não conhecia. E sem duvida que conceptualmente a
função ficou muito melhor, não complicou. Parece que terei de rever
todas as minhas funções que estive a escrever na ultima semana.

Sim, todas as tabelas tem o nome da tabela_id, fiz uma função para
que assim fosse. E sim, é apenas uma tarefa administrativa num esquema
com 70 tabelas.

Foi necessário uns retoques minimos, uma virgula que falatva e passar o
valor de row.next_value.

Agora só falta um detalhe, esta a passar o valor de 'next_value' como
texto e salta erro. Tentei o 'cast' (::int) mas parece-me que isso é
apenas para o puro SQL.

ERROR:  syntax error at or near '25476'
LINE 1: ...E SEQUENCE wosis.class_fao_class_fao_id_seq START '25476' OW...
 ^
QUERY:  CREATE SEQUENCE wosis.class_fao_class_fao_id_seq START '25476'
OWNED BY wosis.class_fao.class_fao_id;
CONTEXT:  PL/pgSQL function fun_create_sequence line 19 at EXECUTE
statement

Como faço para passar o valor como inteiro?

Muito obrigado a todos pelas sugestões, correções e explicações.

Eloi



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


Re: [pgbr-geral] duvida com as aspas dentro de aspas ao criar função

2014-01-19 Por tôpico Rafael Fialho Corrêa

 Como faço para passar o valor como inteiro?


Segue exemplo retirado da documentação:

EXECUTE format('UPDATE tbl SET %I = $1 WHERE key = $2', colname)
USING newvalue, keyvalue;

Vide [1] 39.5.4. Executing Dynamic Commands em caso de dúvidas.
[]'s

[1]:
http://www.postgresql.org/docs/9.2/interactive/plpgsql-statements.html#PLPGSQL-QUOTE-LITERAL-EXAMPLE
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] duvida com as aspas dentro de aspas ao criar função

2014-01-17 Por tôpico Heloisa Fernanda
Olá!

Use: EXECUTE $qualquercoisa$SELECT $qualquercoisa$||_variavel||$qualquercoisa$ 
FROM TABELA$qualquercoisa$;

Ou seja, troque as aspas por $qualquercoisa$___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] duvida com as aspas dentro de aspas ao criar função

2014-01-17 Por tôpico Anderson Abreu
Exemplificando melhor


 EXECUTE '  CREATE TEMP TABLE tmp AS
   SELECT table_name, table_name||_id AS id_name, 0 AS
next_value
   FROM information_schema.tables
   WHERE table_schema = sch
   AND  table_type = ''BASE TABLE''
   ORDER BY table_name;';




Atenciosamente,

Anderson Abreu
andersonab...@gmail.com
(61) 8157-6657
OOAD, RUP, SOA, Jboss, IIS
.Net, PHP, CFM, ASP, JAVA
McAffee Partner - Microsoft Partner
MySQL, Oracle, PostgreSQL, SQL Server, DB2, SyBase


2014/1/17 Eloi Ribeiro e...@openmailbox.org

 Ola a todos,

 Estou a tentar criar uma função que crie sequencias em todas as tabelas
 num determinado esquema e não consigo avançar por causa das aspas dentro de
 aspas, alguém pode dar uma ajuda.

 Aqui está o código, e o problema com as aspas esta no primeiro e no
 terceiro EXECUTE:

 CREATE OR REPLACE FUNCTION wosis.fun_create_sequence(sch text)
   RETURNS text AS
 $BODY$
 DECLARE
 row record;
 BEGIN
 EXECUTE '  CREATE TEMP TABLE tmp AS
SELECT table_name, table_name||_id' AS id_name, 0 AS
 next_value
FROM information_schema.tables
WHERE table_schema = sch
AND  table_type = 'BASE TABLE'
ORDER BY table_name;';
 FOR row IN
  SELECT table_name, id_name FROM tmp ORDER BY table_name
 LOOP
 EXECUTE 'UPDATE tmp SET next_value = (SELECT max(' ||
 quote_ident(row.id_name) || ')+1 FROM ' || quote_ident(sch) || '.' ||
 quote_ident(row.table_name) || ') WHERE table_name = ' ||
 quote_ident(row.table_name) || ';'
 END LOOP;
 FOR row IN
  SELECT table_name, id_name, next_value FROM tmp ORDER BY table_name
 LOOP
 EXECUTE 'CREATE SEQUENCE ' || quote_ident(row.table_name) || '_'
 || quote_ident(row.id_name) || '_seq START ' || quote_ident(row.next_value)
 || ';'
 EXECUTE 'ALTER TABLE ' || quote_ident(sch) || '.' ||
 quote_ident(row.table_name) || ' ALTER COLUMN ' || quote_ident(row.id_name)
 || ' SET DEFAULT nextval( ' || quote_ident(row.table_name) || '_' ||
 quote_ident(row.id_name) || '_seq);'
 END LOOP;
 RETURN 'Sequences were created';
 END;
 $BODY$
   LANGUAGE plpgsql VOLATILE
   COST 100;
 ALTER FUNCTION wosis.fun_create_sequence(text) OWNER TO postgres;
 COMMENT ON FUNCTION wosis.fun_create_sequence(text) IS 'Create sequences
 in all tables from a given schema';

 Obrigado,

 --
 Eloi Ribeiro
 GIS Analyst / Programmer
 51.9871, 5.6661
 flavors.me/eloiribeiro
 ___
 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


Re: [pgbr-geral] duvida com as aspas dentro de aspas ao criar função

2014-01-17 Por tôpico Anderson Abreu
Caríssimo,

Utilize duas aspas simples juntas tipo 'select ' '' '|| nome||' '' ' from
pessoa'






Atenciosamente,

Anderson Abreu
andersonab...@gmail.com
(61) 8157-6657
OOAD, RUP, SOA, Jboss, IIS
.Net, PHP, CFM, ASP, JAVA
McAffee Partner - Microsoft Partner
MySQL, Oracle, PostgreSQL, SQL Server, DB2, SyBase


2014/1/17 Eloi Ribeiro e...@openmailbox.org

 Ola a todos,

 Estou a tentar criar uma função que crie sequencias em todas as tabelas
 num determinado esquema e não consigo avançar por causa das aspas dentro de
 aspas, alguém pode dar uma ajuda.

 Aqui está o código, e o problema com as aspas esta no primeiro e no
 terceiro EXECUTE:

 CREATE OR REPLACE FUNCTION wosis.fun_create_sequence(sch text)
   RETURNS text AS
 $BODY$
 DECLARE
 row record;
 BEGIN
 EXECUTE '  CREATE TEMP TABLE tmp AS
SELECT table_name, table_name||_id' AS id_name, 0 AS
 next_value
FROM information_schema.tables
WHERE table_schema = sch
AND  table_type = 'BASE TABLE'
ORDER BY table_name;';
 FOR row IN
  SELECT table_name, id_name FROM tmp ORDER BY table_name
 LOOP
 EXECUTE 'UPDATE tmp SET next_value = (SELECT max(' ||
 quote_ident(row.id_name) || ')+1 FROM ' || quote_ident(sch) || '.' ||
 quote_ident(row.table_name) || ') WHERE table_name = ' ||
 quote_ident(row.table_name) || ';'
 END LOOP;
 FOR row IN
  SELECT table_name, id_name, next_value FROM tmp ORDER BY table_name
 LOOP
 EXECUTE 'CREATE SEQUENCE ' || quote_ident(row.table_name) || '_'
 || quote_ident(row.id_name) || '_seq START ' || quote_ident(row.next_value)
 || ';'
 EXECUTE 'ALTER TABLE ' || quote_ident(sch) || '.' ||
 quote_ident(row.table_name) || ' ALTER COLUMN ' || quote_ident(row.id_name)
 || ' SET DEFAULT nextval( ' || quote_ident(row.table_name) || '_' ||
 quote_ident(row.id_name) || '_seq);'
 END LOOP;
 RETURN 'Sequences were created';
 END;
 $BODY$
   LANGUAGE plpgsql VOLATILE
   COST 100;
 ALTER FUNCTION wosis.fun_create_sequence(text) OWNER TO postgres;
 COMMENT ON FUNCTION wosis.fun_create_sequence(text) IS 'Create sequences
 in all tables from a given schema';

 Obrigado,

 --
 Eloi Ribeiro
 GIS Analyst / Programmer
 51.9871, 5.6661
 flavors.me/eloiribeiro
 ___
 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


Re: [pgbr-geral] duvida com as aspas dentro de aspas ao criar função

2014-01-17 Por tôpico Heloisa Fernanda


Use: EXECUTE $qualquercoisa$SELECT $qualquercoisa$||_variavel||$qualquercoisa$ 
FROM TABELA$qualquercoisa$;

Um detalhe: esse exemplo não funcionaria por que não dá para usar EXECUTE com 
SELECT.

Isso funcionaria: EXECUTE $qualquercoisa$UPDATE TABELA SET 
CAMPO=$qualquercoisa$||_VARIAVEL||$qualquercoisa$ WHERE 
OUTROCAMPO=1$qualquercoisa$;

;)___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] duvida com as aspas dentro de aspas ao criar função

2014-01-17 Por tôpico Flavio Henrique Araque Gurgel

Um detalhe: esse exemplo não funcionaria por que não dá para usar
EXECUTE com SELECT.


Use PERFORM quando precisar gerar consulta dinâmica que retorne 
resultados, como SELECT.


[]s
Flavio Gurgel
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] duvida com as aspas dentro de aspas ao criar função

2014-01-17 Por tôpico Rafael Fialho Corrêa
Em 17 de janeiro de 2014 14:18, Heloisa Fernanda
helois...@yahoo.com.brescreveu:


 Use: EXECUTE $qualquercoisa$SELECT $qualquercoisa$||_variavel||$qualquercoisa$
 FROM TABELA$qualquercoisa$;

 Um detalhe: esse exemplo não funcionaria por que não dá para usar EXECUTE
 com SELECT.


Isto é um equívoco.. Hehehe

É possível sim uma instrução select no execute, inclusive realizando um
execute select into variável, porém o problema neste caso é simplesmente
o execute de um comando pra criação de uma tabela. O problema está na
formatação da string que será executada.

Pro caso que está tentando utilizar, eu recomendaria um loop que retorne as
tabelas e/ou nomes, pra depois realizar a montagem do comando, assim fica
mais fácil de perceber o que está errado para poder consertar.

Poderia dar mais detalhes de qual é a intenção? De repente fica mais fácil
chegar a uma solução. Eu, particularmente, não entendi muito bem o objetivo
do todo.

[]'s
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] duvida com as aspas dentro de aspas ao criar função

2014-01-17 Por tôpico Flavio Henrique Araque Gurgel

Um detalhe: esse exemplo não funcionaria por que não dá para usar
EXECUTE com SELECT.


Use PERFORM quando precisar gerar consulta dinâmica que retorne
resultados, como SELECT.


Eu só esqueci de acrescentar que os resultados serão *descartados* pelo 
perform. A utilidade dele é justamente essa, por exemplo, executar uma 
função, um SELECT...INTO, etc.


[]s
Flavio Gurgel
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] duvida com as aspas dentro de aspas ao criar função

2014-01-17 Por tôpico Matheus de Oliveira
2014/1/17 Flavio Henrique Araque Gurgel fha...@gmail.com

  Um detalhe: esse exemplo não funcionaria por que não dá para usar
 EXECUTE com SELECT.


 Use PERFORM quando precisar gerar consulta dinâmica que retorne
 resultados, como SELECT.


 Eu só esqueci de acrescentar que os resultados serão *descartados* pelo
 perform. A utilidade dele é justamente essa, por exemplo, executar uma
 função, um SELECT...INTO, etc.


Acho que há uma confusão dos colegas nas três afirmações acima... Vou
resumir tudo abaixo para tentar esclarecer.

1. EXECUTE com SELECT é possível sim, por exemplo:

a) uma única linha:

EXECUTE 'SELECT ...' INTO minha_variavel;

b) várias linhas:

FOR variavel_record IN EXECUTE 'SELECT ...' LOOP
-- usar variavel_record.coluna1, ...
END LOOP;

2. O comando PERFORM não serve para executar consultas dinâmicas, apenas
para consultas estáticas (ou seja, não contidas numa variável ou
expressão). Consultas dinâmicas, ignorando ou não o resultado, sempre deve
ser usado o EXECUTE. É um erro que tenho visto bastante ultimamente, não
sei o porquê.

3. De fato o PERFORM descarta o valor. A palavra PERFORM deve ser usado
**exatamente** no lugar de onde estaria um SELECT, mas o resultado desse
SELECT deve ser descartado.

Para exemplificar um PERFORM, se você que chamar a função setval, via SQL
direto poderia simplesmente usar:

SELECT setval(...);

Via PL/pgSQL, também pode usar a forma acima, mas precisa
**obrigatoriamente** salvar o resultado numa variável:

SELECT setval(...) INTO variavel;

Agora, se quiser ignorar o resultado (ou seja, não salvar o valor na
variável), basta usar o mesmo modelo de SQL mas trocando a palavra SELECT
por PERFORM (que só é válido em PL/pgSQL, não SQL puro):

PERFORM setval(...);

Espero que tenha esclarecido (e não confundido mais, :P ).

Atenciosamente,
-- 
Matheus de Oliveira
Analista de Banco de Dados
Dextra Sistemas - MPS.Br nível F!
www.dextra.com.br/postgres
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] duvida com as aspas dentro de aspas ao criar função

2014-01-17 Por tôpico Matheus de Oliveira
On Fri, Jan 17, 2014 at 11:54 AM, Eloi Ribeiro e...@openmailbox.org wrote:

 Ola a todos,

 Estou a tentar criar uma função que crie sequencias em todas as tabelas
 num determinado esquema e não consigo avançar por causa das aspas dentro de
 aspas, alguém pode dar uma ajuda.

 Aqui está o código, e o problema com as aspas esta no primeiro e no
 terceiro EXECUTE:

 CREATE OR REPLACE FUNCTION wosis.fun_create_sequence(sch text)
   RETURNS text AS
 $BODY$
 DECLARE
 row record;
 BEGIN
 EXECUTE '  CREATE TEMP TABLE tmp AS
SELECT table_name, table_name||_id' AS id_name, 0 AS
 next_value
FROM information_schema.tables
WHERE table_schema = sch
AND  table_type = 'BASE TABLE'
ORDER BY table_name;';
 FOR row IN
  SELECT table_name, id_name FROM tmp ORDER BY table_name
 LOOP
 EXECUTE 'UPDATE tmp SET next_value = (SELECT max(' ||
 quote_ident(row.id_name) || ')+1 FROM ' || quote_ident(sch) || '.' ||
 quote_ident(row.table_name) || ') WHERE table_name = ' ||
 quote_ident(row.table_name) || ';'
 END LOOP;
 FOR row IN
  SELECT table_name, id_name, next_value FROM tmp ORDER BY table_name
 LOOP
 EXECUTE 'CREATE SEQUENCE ' || quote_ident(row.table_name) || '_'
 || quote_ident(row.id_name) || '_seq START ' || quote_ident(row.next_value)
 || ';'
 EXECUTE 'ALTER TABLE ' || quote_ident(sch) || '.' ||
 quote_ident(row.table_name) || ' ALTER COLUMN ' || quote_ident(row.id_name)
 || ' SET DEFAULT nextval( ' || quote_ident(row.table_name) || '_' ||
 quote_ident(row.id_name) || '_seq);'
 END LOOP;
 RETURN 'Sequences were created';
 END;
 $BODY$
   LANGUAGE plpgsql VOLATILE
   COST 100;
 ALTER FUNCTION wosis.fun_create_sequence(text) OWNER TO postgres;
 COMMENT ON FUNCTION wosis.fun_create_sequence(text) IS 'Create sequences
 in all tables from a given schema';


É, parece que você criou uma bagunça com as aspas mesmo... Acho que vai
ficar mais fácil refazer a função do que ajustar cada problema nela. Já que
vamos refazer, que tal adicionar algumas dicas de ouro? ;-)


Bom, primeiro, veja o modelo que criei (não testei, então pode ter algum
erro que eu não tenha visto):

CREATE OR REPLACE FUNCTION wosis.fun_create_sequence(sch text)
RETURNS text
LANGUAGE plpgsql VOLATILE
AS
$BODY$
DECLARE
row record;
BEGIN
FOR row IN
SELECT table_name, table_name||'_id' AS id_name, 0 AS next_value
FROM information_schema.tables
WHERE table_schema = sch
AND  table_type = 'BASE TABLE'
ORDER BY table_name
LOOP
EXECUTE
format('SELECT max(%I)+1 FROM %I.%I', row.id_name, sch,
row.table_name)
INTO row.next_value;
EXECUTE
format(
'CREATE SEQUENCE %I.%I START %L OWNED BY %I.%I.%I;',
sch,
row.table_name||'_'||row.id_name||'_seq',
sch,
row.table_name,
row.id_name
);
   EXECUTE
   format(
'ALTER TABLE %I.%I ALTER COLUMN %I SET DEFAULT
nextval(%L);'
sch,
row.table_name,
row.id_name,
row.table_name||'_'||row.id_name||'_seq'
);
END LOOP;
RETURN 'Sequences were created';
END;
$BODY$;

Agora vejamos... Em primeiro lugar eu não usei uma tabela temporário,
simplesmente porque não vi sentido, e acho que acabou deixando a função
mais confusa ainda. Ao invés disso eu apenas naveguei no resultado da
consulta à view information_schema.tables. Repare também que não usei
consulta dinâmica (comando EXECUTE) nesta consulta, simplesmente porque não
é necessário e recomendo evitar o uso de EXECUTE ao máximo.

Em segundo lugar, precisamos de três comandos, um para fazer um `SELECT
max` para recuperar o maior valor, outro para criar a sequência e o último
para alterar o DEFAULT da tabela. Em ambos os casos a função format ajuda
bastante, e não precisa de tantos quote_ident's, que podem ser confusos.

Em [1] há um comparativo legal entre format e quote_ident. Veja lá e poste
dúvidas que sobrarem aqui.

Por fim, adicionei a cláusula OWNED BY no CREATE SEQUENCE, para deixar
idêntico ao que o pseudo-tipo SERIAL faz, e é uma boa prática para futuras
manutenções.

Só tenho mais um comentário. Esses comandos estão (talvez erroneamente)
assumindo que toda tabela tem um campo nome da tabela_id, mas talvez
faça parte do seu modelo, mas eu evitaria isso, a não ser que seja algo
executado somente numa tarefa administrativa.

Ufa... Leia com calma, tentei ser o mais claro possível. ^^

[1]
http://www.postgresql.org/docs/current/static/plpgsql-statements.html#PLPGSQL-QUOTE-LITERAL-EXAMPLE


Atenciosamente,
-- 
Matheus de Oliveira
Analista de Banco de Dados
Dextra Sistemas - 

Re: [pgbr-geral] duvida com as aspas dentro de aspas ao criar função

2014-01-17 Por tôpico Rafael Fialho Corrêa
Em 17 de janeiro de 2014 21:22, Matheus de Oliveira 
matioli.math...@gmail.com escreveu:




 On Fri, Jan 17, 2014 at 11:54 AM, Eloi Ribeiro e...@openmailbox.orgwrote:

 Ola a todos,

 Estou a tentar criar uma função que crie sequencias em todas as tabelas
 num determinado esquema e não consigo avançar por causa das aspas dentro de
 aspas, alguém pode dar uma ajuda.

 Aqui está o código, e o problema com as aspas esta no primeiro e no
 terceiro EXECUTE:

 CREATE OR REPLACE FUNCTION wosis.fun_create_sequence(sch text)
   RETURNS text AS
 $BODY$
 DECLARE
 row record;
 BEGIN
 EXECUTE '  CREATE TEMP TABLE tmp AS
SELECT table_name, table_name||_id' AS id_name, 0 AS
 next_value
FROM information_schema.tables
WHERE table_schema = sch
AND  table_type = 'BASE TABLE'
ORDER BY table_name;';
 FOR row IN
  SELECT table_name, id_name FROM tmp ORDER BY table_name
 LOOP
 EXECUTE 'UPDATE tmp SET next_value = (SELECT max(' ||
 quote_ident(row.id_name) || ')+1 FROM ' || quote_ident(sch) || '.' ||
 quote_ident(row.table_name) || ') WHERE table_name = ' ||
 quote_ident(row.table_name) || ';'
 END LOOP;
 FOR row IN
  SELECT table_name, id_name, next_value FROM tmp ORDER BY table_name
 LOOP
 EXECUTE 'CREATE SEQUENCE ' || quote_ident(row.table_name) || '_'
 || quote_ident(row.id_name) || '_seq START ' || quote_ident(row.next_value)
 || ';'
 EXECUTE 'ALTER TABLE ' || quote_ident(sch) || '.' ||
 quote_ident(row.table_name) || ' ALTER COLUMN ' || quote_ident(row.id_name)
 || ' SET DEFAULT nextval( ' || quote_ident(row.table_name) || '_' ||
 quote_ident(row.id_name) || '_seq);'
 END LOOP;
 RETURN 'Sequences were created';
 END;
 $BODY$
   LANGUAGE plpgsql VOLATILE
   COST 100;
 ALTER FUNCTION wosis.fun_create_sequence(text) OWNER TO postgres;
 COMMENT ON FUNCTION wosis.fun_create_sequence(text) IS 'Create sequences
 in all tables from a given schema';


 É, parece que você criou uma bagunça com as aspas mesmo... Acho que vai
 ficar mais fácil refazer a função do que ajustar cada problema nela. Já que
 vamos refazer, que tal adicionar algumas dicas de ouro? ;-)


 Bom, primeiro, veja o modelo que criei (não testei, então pode ter algum
 erro que eu não tenha visto):

 CREATE OR REPLACE FUNCTION wosis.fun_create_sequence(sch text)
 RETURNS text
 LANGUAGE plpgsql VOLATILE
 AS
 $BODY$
 DECLARE
 row record;
 BEGIN
 FOR row IN
 SELECT table_name, table_name||'_id' AS id_name, 0 AS
 next_value
 FROM information_schema.tables
 WHERE table_schema = sch
 AND  table_type = 'BASE TABLE'
 ORDER BY table_name
 LOOP
 EXECUTE
 format('SELECT max(%I)+1 FROM %I.%I', row.id_name, sch,
 row.table_name)
 INTO row.next_value;
 EXECUTE
 format(
 'CREATE SEQUENCE %I.%I START %L OWNED BY %I.%I.%I;',
 sch,
 row.table_name||'_'||row.id_name||'_seq',
 sch,
 row.table_name,
 row.id_name
 );
EXECUTE
format(
 'ALTER TABLE %I.%I ALTER COLUMN %I SET DEFAULT
 nextval(%L);'
 sch,
 row.table_name,
 row.id_name,
 row.table_name||'_'||row.id_name||'_seq'
 );
 END LOOP;
 RETURN 'Sequences were created';
 END;
 $BODY$;

 Agora vejamos... Em primeiro lugar eu não usei uma tabela temporário,
 simplesmente porque não vi sentido, e acho que acabou deixando a função
 mais confusa ainda. Ao invés disso eu apenas naveguei no resultado da
 consulta à view information_schema.tables. Repare também que não usei
 consulta dinâmica (comando EXECUTE) nesta consulta, simplesmente porque não
 é necessário e recomendo evitar o uso de EXECUTE ao máximo.

 Em segundo lugar, precisamos de três comandos, um para fazer um `SELECT
 max` para recuperar o maior valor, outro para criar a sequência e o último
 para alterar o DEFAULT da tabela. Em ambos os casos a função format ajuda
 bastante, e não precisa de tantos quote_ident's, que podem ser confusos.

 Em [1] há um comparativo legal entre format e quote_ident. Veja lá e poste
 dúvidas que sobrarem aqui.

 Por fim, adicionei a cláusula OWNED BY no CREATE SEQUENCE, para deixar
 idêntico ao que o pseudo-tipo SERIAL faz, e é uma boa prática para futuras
 manutenções.

 Só tenho mais um comentário. Esses comandos estão (talvez erroneamente)
 assumindo que toda tabela tem um campo nome da tabela_id, mas talvez
 faça parte do seu modelo, mas eu evitaria isso, a não ser que seja algo
 executado somente numa tarefa administrativa.

 Ufa... Leia com calma, tentei ser o mais claro possível. ^^

 [1]
 

Re: [pgbr-geral] duvida com as aspas dentro de aspas ao criar função

2014-01-17 Por tôpico Matheus de Oliveira
2014/1/17 Rafael Fialho Corrêa r.fia...@ibest.com.br

 Em 17 de janeiro de 2014 21:22, Matheus de Oliveira 
 matioli.math...@gmail.com escreveu:

 (...)


 Boa Matheus, bom saber que penso da mesma forma que os veteranos da
 lista.. hehehe
 Ia explicar da mesma forma, mas não tive tempo e o assunto ficou bem
 confuso.


Valeu cara. Sua explicação ficou boa sim, eu só achei que valia a pena
sumarizar tudo e explicar mais detalhadamente, pois a coisa estava ficando
meio confusa mesmo.

Quanto ao tempo, as vezes baixa um Chico Xavier em mim e digito um monte de
coisa num tapa só, =P.

Eu não me consideraria um veterano da lista, mas fico feliz pelo elogio.
:)

Atenciosamente,
-- 
Matheus de Oliveira
Analista de Banco de Dados
Dextra Sistemas - MPS.Br nível F!
www.dextra.com.br/postgres
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Duvida sobre sequence

2013-12-16 Por tôpico Matheus de Oliveira
2013/12/15 Guimarães Faria Corcete DUTRA, Leandro l...@dutras.org

 2013/12/15 Wellington wm...@yahoo.com.br:
 
  tenho uma duvida: Eh possivel fazer uma consulta das sequencias que nao
  estao sendo utilizadas em nenhuma tabela ?

 Sim, pelo catálogo, como sempre.  Pense MINUS.




Exatamente. Se quisermos verificar as sequências que não estão no valor
padrão (default) de um atributo, podemos relacionar a pg_class para
recuperar todas as sequências (são aquelas cujo atributo relkind = 'S') com
a tabela pg_attrdef que possui o padrão de um campo (atributo adsrc). Por
exemplo:

SELECT r.oid::regclass
FROM pg_class r LEFT JOIN pg_attrdef d ON d.adsrc LIKE
'%'||(r.oid::regclass::text)||'%'
WHERE r.relkind = 'S' AND d.oid IS NULL;

Ao menos que use nomes estranhos em suas sequências, esta consulta
funcionará perfeitamente.



   Pelo que percebi, ao excluir uma tabela, a sequencia associada a ela
 nao é
  excluida.

 Porque não há associação de fato.  Uma seqüência pode servir várias
 tabelas, ou nenhuma.


Bem, não é **exatamente** assim. Por exemplo, quando cria-se uma sequência
utilizando o pseudo-tipo serial, o PostgreSQL irá sim associar a sequência
a uma tabela (na verdade ao atributo da tabela, e somente a um). Vejam o
exemplo:

postgres=# CREATE TABLE seq_test(a serial);
CREATE TABLE
== a sequência foi *criada* implicitamente
postgres=# SELECT nextval('seq_test_a_seq');
 nextval
-
   1
(1 row)

postgres=# DROP TABLE seq_test;
DROP TABLE
== a sequência foi *excluída* implicitamente
postgres=# SELECT nextval('seq_test_a_seq');
ERROR:  relation seq_test_a_seq does not exist
LINE 1: SELECT nextval('seq_test_a_seq');

Essa associação é feita usando o OWNED BY nos comandos CREATE/ALTER
SEQUENCE. Por exemplo, o código acima é exatamente equivalente a:

CREATE SEQUENCE seq_test_a_seq;
CREATE TABLE seq_test(a integer not null default
nextval('seq_test_a_seq'));
ALTER SEQUENCE seq_test_a_seq OWNED BY seq_test.a;

Com isso, a sequência passa a estar associada à tabela seq_test e
atributo a.

A vantagem é que, além de uma deleção da tabela também remover a sequência,
podemos forçar o TRUNCATE a zerar a sequência:

TRUNCATE seq_test RESTART IDENTITY;

Houve uma discussão sobre isso ano passado, e cheguei a criar uma consulta
para pegar as sequências e suas associações [1]. A mesma pode ser adaptada
para recuperar as sequências que não estão associadas a nenhum atributo (em
geral elas deveriam, mas não é uma regra):

SELECT s.oid::regclass AS sequence
FROM pg_class s
LEFT JOIN pg_depend d ON s.oid = d.objid AND d.deptype = 'a'
 LEFT JOIN pg_class t ON d.refobjid = t.oid
 LEFT JOIN pg_attribute a ON a.attrelid = t.oid AND a.attnum =
d.refobjsubid
WHERE s.relkind = 'S' AND t.oid IS NULL;


[1]
http://listas.postgresql.org.br/pipermail/pgbr-geral/2012-August/031827.html

Atenciosamente,
-- 
Matheus de Oliveira
Analista de Banco de Dados
Dextra Sistemas - MPS.Br nível F!
www.dextra.com.br/postgres
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Duvida sobre sequence

2013-12-16 Por tôpico Guimarães Faria Corcete DUTRA , Leandro
2013/12/16 Matheus de Oliveira matioli.math...@gmail.com:

 Porque não há associação de fato.  Uma seqüência pode servir várias
 tabelas, ou nenhuma.

 Bem, não é **exatamente** assim. Por exemplo, quando cria-se uma sequência
 utilizando o pseudo-tipo serial, o PostgreSQL irá sim associar a sequência a
 uma tabela (na verdade ao atributo da tabela, e somente a um).

Isso é que dá ficar desatualizado… obrigado!



 Essa associação é feita usando o OWNED BY nos comandos CREATE/ALTER
 SEQUENCE.
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Duvida sobre sequence

2013-12-15 Por tôpico Guimarães Faria Corcete DUTRA , Leandro
2013/12/15 Wellington wm...@yahoo.com.br:

 tenho uma duvida: Eh possivel fazer uma consulta das sequencias que nao
 estao sendo utilizadas em nenhuma tabela ?

Sim, pelo catálogo, como sempre.  Pense MINUS.


 Pelo que percebi, ao excluir uma tabela, a sequencia associada a ela nao é
 excluida.

Porque não há associação de fato.  Uma seqüência pode servir várias
tabelas, ou nenhuma.
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Duvida em dump

2013-10-08 Por tôpico Tiago Daniel Jacobs
Rogério, você pode fazer um dump apenas da estrutura. E outro com os dados. No 
dump de dados rode com a opcao de gerar comandos de insert. Feito isso use o 
grep para separar as linhas com o codigo desejado

Enviado via iPhone

 Em Oct 7, 2013, às 4:27 PM, Rogério Grando rogeriogra...@planin.com.br 
 escreveu:
 
 Olá pessoal, boa tarde!
  
 Tenho uma base de dados que armazena várias empresa, sendo dividido por uma 
 coluna co_empresa em todas as tabelas.
 Preciso fazer um backup apenas de uma empresa.
 Sei que com dump não é possível, por não ter clausula WHERE. “Que bom seria.”
 Alguém já precisou fazer isso?
 Versão: Postgres 8.3.20 em Linux: Debian
  
 Outro problema, já a algum tempo não estou recebendo os e-mails da lista, é 
 necessário recadastrar?
  
 Grato, pela habitual atenção de todos.
 ___
 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


Re: [pgbr-geral] Duvida em dump

2013-10-07 Por tôpico Osvaldo Kussama
Em 07/10/13, Rogério Grandorogeriogra...@planin.com.br escreveu:
 Olá pessoal, boa tarde!

 Tenho uma base de dados que armazena várias empresa, sendo dividido por uma
 coluna co_empresa em todas as tabelas.
 Preciso fazer um backup apenas de uma empresa.
 Sei que com dump não é possível, por não ter clausula WHERE. “Que bom
 seria.”
 Alguém já precisou fazer isso?
 Versão: Postgres 8.3.20 em Linux: Debian

 Outro problema, já a algum tempo não estou recebendo os e-mails da lista, é
 necessário recadastrar?



Você está ciente de que a versão 8.3 deixou de ser suportada em Fevereiro/2013?

Existem diversos relatos de que as mensagens da lista estão sendo
consideradas spam. Verifique sua caixa de spam.

Trate o arquivo gerado com o sed.

Osvaldo
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] duvida de uma consulta

2013-08-06 Por tôpico Matheus de Oliveira
2013/8/4 lucas . lucasouz...@hotmail.com

 Ola gente, tenho uma dúvida.

 Usando esta consulta

 SELECT *

 FROM Auth, Publ

 WHERE Auth.pubID = Publ.pubID AND Auth.nome = 'Surajit Chaudhuri'



 índices primários sobre Auth.pubID e Publ.pubID e índice secundário sobre
 Auth.nome.


 O algoritmo escolhido pelo postgre sera o Nested loop. Entendo que ele faz
 esta escolha pelo fato da seleção ser feita antes da junção dessa forma o
 desempenho da junção será melhor com o nested. Confirma?



Em geral, o PostgreSQL tende a usar o nested loop quando está trabalhando
com um conjunto pequeno de dados (pelo menos dos vindos da tabela da
direita), mas veja que a definição de pequeno vai depender dos custos
definidos. Nesse caso o filtro em Auth.nome pode sim explicar essa
escolha. Poste o resultado do seguinte comando para te darmos uma resposta
mais certeira:

ANALYZE Auth;
ANALYZE Publ;
EXPLAIN ANALYZE SELECT *
FROM Auth, Publ
WHERE Auth.pubID = Publ.pubID AND Auth.nome = 'Surajit Chaudhuri'



  E outra dúvida, no pgadmin aonde que eu posso olhar a PEC da consulta?


PEC seria o quê? Plano de execução? Acho que ele tem um botão para executar
e mostrar, mas você também pode usar o EXPLAIN (como acima).


Atenciosamente,
-- 
Matheus de Oliveira
Analista de Banco de Dados
Dextra Sistemas - MPS.Br nível F!
www.dextra.com.br/postgres
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] duvida de uma consulta

2013-08-06 Por tôpico Matheus de Oliveira
2013/8/4 lucas . lucasouz...@hotmail.com

 do postgre

 E eu estou enviando pelo meu email as respostas acho que por isto esta
 bagunçando a lista. Poderia me enviar o link da lista? ja perdi


Pode enviar por e-mail mesmo, mas edite a resposta colocando sua abaixo da
resposta do anterior. Como estou fazendo aqui.

Atenciosamente,
-- 
Matheus de Oliveira
Analista de Banco de Dados
Dextra Sistemas - MPS.Br nível F!
www.dextra.com.br/postgres
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] duvida de uma consulta

2013-08-04 Por tôpico Osvaldo Kussama
Em 04/08/13, lucas .lucasouz...@hotmail.com escreveu:
 Ola gente, tenho uma dúvida.

 Usando esta consulta

 SELECT *FROM Auth, PublWHERE Auth.pubID = Publ.pubID AND Auth.nome =
 'Surajit Chaudhuri'

 índices primários sobre Auth.pubID e Publ.pubID e índice secundário sobre
 Auth.nome.
 O algoritmo escolhido pelo postgre sera o Nested loop. Entendo que ele faz
 esta escolha pelo fato da seleção ser feita antes da junção dessa forma o
 desempenho da junção será melhor com o nested. Confirma?
 E outra dúvida, no pgadmin aonde que eu posso olhar a PEC da consulta?



Para saber o plano de execução da consulta rode um EXPLAIN [1].
Certifique-se de que as estatísticas de seu banco estejam atualizadas
(rode um ANALYZE [2]).

Não é o simples fato de existir um índice que fará com que seu uso
seja considerado a solução mais econômica.

Se desejar forçar a junção faça:
SELECT * FROM
Auth INNER JOIN Publ ON(Auth.pubID = Publ.pubID)
WHERE Auth.nome = 'Surajit Chaudhuri';

Osvaldo

[1] http://www.postgresql.org/docs/current/interactive/sql-explain.html
[2] http://www.postgresql.org/docs/current/interactive/sql-analyze.html
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] duvida de uma consulta

2013-08-04 Por tôpico lucas .
Então não estou julgando que seja pelo indice. Estou dizendo que pelo PEC a 
seleção é feita primeiro diminuindo o numero de junções possiveis. Dessa forma, 
o nested loop é uma escolha melhor

Att,Lucas José Duarte de SouzaBacharelando em Ciência da ComputaçãoUniversidade 
Federal de Lavras.

 Date: Sun, 4 Aug 2013 19:30:27 -0300
 From: osvaldo.kuss...@gmail.com
 To: pgbr-geral@listas.postgresql.org.br
 Subject: Re: [pgbr-geral] duvida de uma consulta
 
 Em 04/08/13, lucas .lucasouz...@hotmail.com escreveu:
  Ola gente, tenho uma dúvida.
 
  Usando esta consulta
 
  SELECT *FROM Auth, PublWHERE Auth.pubID = Publ.pubID AND Auth.nome =
  'Surajit Chaudhuri'
 
  índices primários sobre Auth.pubID e Publ.pubID e índice secundário sobre
  Auth.nome.
  O algoritmo escolhido pelo postgre sera o Nested loop. Entendo que ele faz
  esta escolha pelo fato da seleção ser feita antes da junção dessa forma o
  desempenho da junção será melhor com o nested. Confirma?
  E outra dúvida, no pgadmin aonde que eu posso olhar a PEC da consulta?
 
 
 
 Para saber o plano de execução da consulta rode um EXPLAIN [1].
 Certifique-se de que as estatísticas de seu banco estejam atualizadas
 (rode um ANALYZE [2]).
 
 Não é o simples fato de existir um índice que fará com que seu uso
 seja considerado a solução mais econômica.
 
 Se desejar forçar a junção faça:
 SELECT * FROM
 Auth INNER JOIN Publ ON(Auth.pubID = Publ.pubID)
 WHERE Auth.nome = 'Surajit Chaudhuri';
 
 Osvaldo
 
 [1] http://www.postgresql.org/docs/current/interactive/sql-explain.html
 [2] http://www.postgresql.org/docs/current/interactive/sql-analyze.html
 ___
 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


Re: [pgbr-geral] duvida de uma consulta

2013-08-04 Por tôpico Osvaldo Kussama
Em 04/08/13, lucas .lucasouz...@hotmail.com escreveu:
 Então não estou julgando que seja pelo indice. Estou dizendo que pelo PEC a
 seleção é feita primeiro diminuindo o numero de junções possiveis. Dessa
 forma, o nested loop é uma escolha melhor

 Att,Lucas José Duarte de SouzaBacharelando em Ciência da
 ComputaçãoUniversidade Federal de Lavras.

 Date: Sun, 4 Aug 2013 19:30:27 -0300
 From: osvaldo.kuss...@gmail.com
 To: pgbr-geral@listas.postgresql.org.br
 Subject: Re: [pgbr-geral] duvida de uma consulta

 Em 04/08/13, lucas .lucasouz...@hotmail.com escreveu:
  Ola gente, tenho uma dúvida.
 
  Usando esta consulta
 
  SELECT *FROM Auth, PublWHERE Auth.pubID = Publ.pubID AND Auth.nome =
  'Surajit Chaudhuri'
 
  índices primários sobre Auth.pubID e Publ.pubID e índice secundário
  sobre
  Auth.nome.
  O algoritmo escolhido pelo postgre sera o Nested loop. Entendo que ele
  faz
  esta escolha pelo fato da seleção ser feita antes da junção dessa forma
  o
  desempenho da junção será melhor com o nested. Confirma?
  E outra dúvida, no pgadmin aonde que eu posso olhar a PEC da consulta?
 


 Para saber o plano de execução da consulta rode um EXPLAIN [1].
 Certifique-se de que as estatísticas de seu banco estejam atualizadas
 (rode um ANALYZE [2]).

 Não é o simples fato de existir um índice que fará com que seu uso
 seja considerado a solução mais econômica.

 Se desejar forçar a junção faça:
 SELECT * FROM
 Auth INNER JOIN Publ ON(Auth.pubID = Publ.pubID)
 WHERE Auth.nome = 'Surajit Chaudhuri';

 Osvaldo

 [1] http://www.postgresql.org/docs/current/interactive/sql-explain.html
 [2] http://www.postgresql.org/docs/current/interactive/sql-analyze.html
 ___


Evite top-posting, você bagunça o histórico da lista.

Você está firmando que o plano de execução será este baseado na
análise do código do PostgreSQL ou em teoria?

Osvaldo
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] duvida de uma consulta

2013-08-04 Por tôpico lucas .
do postgre

E eu estou enviando pelo meu email as respostas acho que por isto esta 
bagunçando a lista. Poderia me enviar o link da lista? ja perdi

Att,Lucas José Duarte de SouzaBacharelando em Ciência da ComputaçãoUniversidade 
Federal de Lavras.

 Date: Sun, 4 Aug 2013 19:51:47 -0300
 From: osvaldo.kuss...@gmail.com
 To: pgbr-geral@listas.postgresql.org.br
 Subject: Re: [pgbr-geral] duvida de uma consulta
 
 Em 04/08/13, lucas .lucasouz...@hotmail.com escreveu:
  Então não estou julgando que seja pelo indice. Estou dizendo que pelo PEC a
  seleção é feita primeiro diminuindo o numero de junções possiveis. Dessa
  forma, o nested loop é uma escolha melhor
 
  Att,Lucas José Duarte de SouzaBacharelando em Ciência da
  ComputaçãoUniversidade Federal de Lavras.
 
  Date: Sun, 4 Aug 2013 19:30:27 -0300
  From: osvaldo.kuss...@gmail.com
  To: pgbr-geral@listas.postgresql.org.br
  Subject: Re: [pgbr-geral] duvida de uma consulta
 
  Em 04/08/13, lucas .lucasouz...@hotmail.com escreveu:
   Ola gente, tenho uma dúvida.
  
   Usando esta consulta
  
   SELECT *FROM Auth, PublWHERE Auth.pubID = Publ.pubID AND Auth.nome =
   'Surajit Chaudhuri'
  
   índices primários sobre Auth.pubID e Publ.pubID e índice secundário
   sobre
   Auth.nome.
   O algoritmo escolhido pelo postgre sera o Nested loop. Entendo que ele
   faz
   esta escolha pelo fato da seleção ser feita antes da junção dessa forma
   o
   desempenho da junção será melhor com o nested. Confirma?
   E outra dúvida, no pgadmin aonde que eu posso olhar a PEC da consulta?
  
 
 
  Para saber o plano de execução da consulta rode um EXPLAIN [1].
  Certifique-se de que as estatísticas de seu banco estejam atualizadas
  (rode um ANALYZE [2]).
 
  Não é o simples fato de existir um índice que fará com que seu uso
  seja considerado a solução mais econômica.
 
  Se desejar forçar a junção faça:
  SELECT * FROM
  Auth INNER JOIN Publ ON(Auth.pubID = Publ.pubID)
  WHERE Auth.nome = 'Surajit Chaudhuri';
 
  Osvaldo
 
  [1] http://www.postgresql.org/docs/current/interactive/sql-explain.html
  [2] http://www.postgresql.org/docs/current/interactive/sql-analyze.html
  ___
 
 
 Evite top-posting, você bagunça o histórico da lista.
 
 Você está firmando que o plano de execução será este baseado na
 análise do código do PostgreSQL ou em teoria?
 
 Osvaldo
 ___
 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


Re: [pgbr-geral] duvida

2013-07-08 Por tôpico Fabrízio de Royes Mello
2013/7/8 lucas . lucasouz...@hotmail.com

 Ola galera. Sou novo por aqui, comecei usar o postgresql a pouco tempo e
 tenho uma dúvida. Qual é o comando para criar indices secundários?


Índice secundário??? Vc não quis dizer Chave Secundária (ou Alternativa)
???
Se for este o caso vc define isso adicionando uma restrição do tipo UNIQUE
na
sua tabela, veja documentação [1] e [2]. Ex:

ALTER TABLE tabela ADD CONSTRAINT tabela_skey UNIQUE (campo_unico);

Att,

[1] http://www.postgresql.org/docs/current/interactive/sql-createtable.html
[2] http://www.postgresql.org/docs/current/interactive/sql-altertable.html

-- 
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] duvida

2013-07-08 Por tôpico Bruno Silva
2013/7/8 lucas . lucasouz...@hotmail.com

 Ola galera. Sou novo por aqui, comecei usar o postgresql a pouco tempo e
 tenho uma dúvida. Qual é o comando para criar indices secundários?


Se for só índices mesmo:
http://www.postgresql.org/docs/9.2/interactive/indexes.html

Bruno E. A. Silva.
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] duvida

2013-07-08 Por tôpico lucas .
Sim, mas no caso eu queria saber o comando especifico para criar indices 
secundários. Eu estava achando que era usando o UNIQUE.

Att,Lucas José Duarte de SouzaBacharelando em Ciência da ComputaçãoUniversidade 
Federal de Lavras.

From: bemanuel...@gmail.com
Date: Mon, 8 Jul 2013 10:34:06 -0300
To: pgbr-geral@listas.postgresql.org.br
Subject: Re: [pgbr-geral] duvida


2013/7/8 lucas . lucasouz...@hotmail.com


Ola galera. Sou novo por aqui, comecei usar o postgresql a pouco tempo e tenho 
uma dúvida. Qual é o comando para criar indices secundários?

Se for só índices 
mesmo:http://www.postgresql.org/docs/9.2/interactive/indexes.html

Bruno E. A. Silva.




___
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


Re: [pgbr-geral] duvida

2013-07-08 Por tôpico lucas .
Indice secundario que eu digo é que não determinam a organização do arquivo de 
dados indexado
Att,Lucas José Duarte de SouzaBacharelando em Ciência da ComputaçãoUniversidade 
Federal de Lavras.

From: lucasouz...@hotmail.com
To: pgbr-geral@listas.postgresql.org.br
Date: Mon, 8 Jul 2013 13:39:35 +
Subject: Re: [pgbr-geral] duvida




Sim, mas no caso eu queria saber o comando especifico para criar indices 
secundários. Eu estava achando que era usando o UNIQUE.

Att,Lucas José Duarte de SouzaBacharelando em Ciência da ComputaçãoUniversidade 
Federal de Lavras.

From: bemanuel...@gmail.com
Date: Mon, 8 Jul 2013 10:34:06 -0300
To: pgbr-geral@listas.postgresql.org.br
Subject: Re: [pgbr-geral] duvida


2013/7/8 lucas . lucasouz...@hotmail.com


Ola galera. Sou novo por aqui, comecei usar o postgresql a pouco tempo e tenho 
uma dúvida. Qual é o comando para criar indices secundários?

Se for só índices 
mesmo:http://www.postgresql.org/docs/9.2/interactive/indexes.html

Bruno E. A. Silva.




___
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 mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] duvida

2013-07-08 Por tôpico Flavio Henrique Araque Gurgel


Em 08-07-2013 10:46, lucas . escreveu:

Indice secundario que eu digo é que não determinam a organização do
arquivo de dados indexado


Evite por favor o top-posting.

Você está falando de índice em tabela clusterizada, certo?

Isso não existe no PostgreSQL. Nenhum tipo de índice determina a 
organização do arquivo de dados.


Todavia, uma tabela pode ser organizada, por desejo do administrador, 
quando necessário através do comando CLUSTER.


Resumindo, o que você parece estar querendo é criar um índice comum. Use 
CREATE INDEX e feito.


[]s

__
Flavio Henrique A. Gurgel
Líder de Projetos Especiais
Consultoria, Projetos  Treinamentos 4LINUX
Tel1: +55-11.2125-4747 ou 2125-4748
www.4linux.com.br
email: fla...@4linux.com.br
__
FREE SOFTWARE SOLUTIONS
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] duvida

2013-07-08 Por tôpico lucas .
Acho que sim, seria isto, Flávio. Bom vou tirar esta duvida com meu professor, 
qualquer coisa volto aqui

Att,Lucas José Duarte de SouzaBacharelando em Ciência da ComputaçãoUniversidade 
Federal de Lavras.


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


Re: [pgbr-geral] Duvida básica LEFT JOIN x NOT IN

2013-07-05 Por tôpico Flavio Henrique Araque Gurgel

Em 05-07-2013 14:25, Marcelo da Silva escreveu:

Qual seria o mais eficiente ?

SELECT A.CAMPOS FROM TABELA_A A
LEFT JOIN TABELA_B B ON(B.CODIGO = A.CODIGO)
WHERE (B.CAMPO IS NULL)

ou

SELECT A.CAMPOS FROM TABEL_A A
WHERE (A.CODIGO NOT IN(SELECT CODIGO FROM TABELA_B))


Depende do tamanho das tabelas, índices, distribuição de dados, etc.
EXPLAIN ANALYZE nelas e você saberá.

[]s

__
Flavio Henrique A. Gurgel
Líder de Projetos Especiais
Consultoria, Projetos  Treinamentos 4LINUX
Tel1: +55-11.2125-4747 ou 2125-4748
www.4linux.com.br
email: fla...@4linux.com.br
__
FREE SOFTWARE SOLUTIONS
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Duvida básica LEFT JOIN x NOT IN

2013-07-05 Por tôpico Claudio Bezerra Leopoldino
Não depende apenas da consulta. Depende dos dados armazenados e estatísticas no 
seu servidor.

Peço que use explain e noso envie o reultado:


EXPLAIN SELECT A.CAMPOS FROM TABELA_A A
LEFT JOIN TABELA_B B ON(B.CODIGO = A.CODIGO)
WHERE (B.CAMPO IS NULL)

e

EXPLAIN  SELECT A.CAMPOS FROM TABEL_A A

WHERE (A.CODIGO NOT IN(SELECT CODIGO FROM TABELA_B))

Cordialmente,


Cláudio Leopoldino
postgresqlbr.blogspot.com/
=



 De: Marcelo da Silva marc...@ig.com.br
Para: Comunidade PostgreSQL Brasileira pgbr-geral@listas.postgresql.org.br 
Enviadas: Sexta-feira, 5 de Julho de 2013 14:25
Assunto: [pgbr-geral] Duvida básica LEFT JOIN x NOT IN
 


Qual seria o mais eficiente ?

SELECT A.CAMPOS FROM TABELA_A A
LEFT JOIN TABELA_B B ON(B.CODIGO = A.CODIGO)
WHERE (B.CAMPO IS NULL)

ou

SELECT A.CAMPOS FROM TABEL_A A

WHERE (A.CODIGO NOT IN(SELECT CODIGO FROM TABELA_B))

-- 

Marcelo Silva

Desenvolvedor Delphi / PHP
My Postgres database
Cel.: (11) 99693-4251
___
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


Re: [pgbr-geral] Duvida básica LEFT JOIN x NOT IN

2013-07-05 Por tôpico Marcelo da Silva
Tempo os seguintes resultados:

OPCAO A

explain select a.* from mv_servicos_balcao a
left join mv_servicos_print b on(cod_key_balcao = a.cod_key)
where (b.cod_key is null)
  and(a.obs not in('C'));

Hash Right Join  (cost=9510.11..17269.55 rows=1 width=136)
  Hash Cond: (b.cod_key_balcao = a.cod_key)
  Filter: (b.cod_key IS NULL)
  -  Seq Scan on mv_servicos_print b  (cost=0.00..3746.55 rows=213355
width=8)
  -  Hash  (cost=7913.20..7913.20 rows=127753 width=136)
-  Seq Scan on mv_servicos_balcao a  (cost=0.00..7913.20
rows=127753 width=136)
  Filter: (obs  'C'::bpchar)


OPCAO B

explain select a.* from mv_servicos_balcao a
where (a.obs not in('C'))
  and(a.cod_key not in(select cod_key_balcao from mv_servicos_print))

Seq Scan on mv_servicos_balcao a  (cost=4279.94..12516.98 rows=63876
width=136)
  Filter: ((obs  'C'::bpchar) AND (NOT (hashed SubPlan 1)))
  SubPlan 1
-  Seq Scan on mv_servicos_print  (cost=0.00..3746.55 rows=213355
width=4)


Vou ser sincero... não sei fazer a leitura do explain, mas pelo que vi a
segunda opção se mostrou mais eficiente, haja visto que sem o explain temos
os seguintes valores em ms(milisegundos)

OPCAO A = 571 rows e 496ms
OPCAO B = 571 rows e 300ms

Mito detonado ? rsrsrs



Em 5 de julho de 2013 14:31, Claudio Bezerra Leopoldino 
claudiob...@yahoo.com.br escreveu:

 Não depende apenas da consulta. Depende dos dados armazenados e
 estatísticas no seu servidor.

 Peço que use explain e noso envie o reultado:

 EXPLAIN SELECT A.CAMPOS FROM TABELA_A A
 LEFT JOIN TABELA_B B ON(B.CODIGO = A.CODIGO)
 WHERE (B.CAMPO IS NULL)

 e

 EXPLAIN  SELECT A.CAMPOS FROM TABEL_A A

 WHERE (A.CODIGO NOT IN(SELECT CODIGO FROM TABELA_B))

 Cordialmente,

 Cláudio Leopoldino
 postgresqlbr.blogspot.com/
 =
   --
  *De:* Marcelo da Silva marc...@ig.com.br
 *Para:* Comunidade PostgreSQL Brasileira 
 pgbr-geral@listas.postgresql.org.br
 *Enviadas:* Sexta-feira, 5 de Julho de 2013 14:25
 *Assunto:* [pgbr-geral] Duvida básica LEFT JOIN x NOT IN

 Qual seria o mais eficiente ?

 SELECT A.CAMPOS FROM TABELA_A A
 LEFT JOIN TABELA_B B ON(B.CODIGO = A.CODIGO)
 WHERE (B.CAMPO IS NULL)

 ou

 SELECT A.CAMPOS FROM TABEL_A A
 WHERE (A.CODIGO NOT IN(SELECT CODIGO FROM TABELA_B))


 --
 Marcelo Silva
 
 Desenvolvedor Delphi / PHP
 My Postgres database
 Cel.: (11) 99693-4251

 ___
 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




-- 
Marcelo Silva

Desenvolvedor Delphi / PHP
My Postgres database
Cel.: (11) 99693-4251
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Duvida básica LEFT JOIN x NOT IN

2013-07-05 Por tôpico Flavio Henrique Araque Gurgel


Em 05-07-2013 14:54, Marcelo da Silva escreveu:

Tempo os seguintes resultados:

OPCAO A

explain select a.* from mv_servicos_balcao a
left join mv_servicos_print b on(cod_key_balcao = a.cod_key)
where (b.cod_key is null)
   and(a.obs not in('C'));

Hash Right Join  (cost=9510.11..17269.55 rows=1 width=136)
  Hash Cond: (b.cod_key_balcao = a.cod_key)
  Filter: (b.cod_key IS NULL)
  -  Seq Scan on mv_servicos_print b  (cost=0.00..3746.55 rows=213355
width=8)
  -  Hash  (cost=7913.20..7913.20 rows=127753 width=136)
-  Seq Scan on mv_servicos_balcao a  (cost=0.00..7913.20
rows=127753 width=136)
  Filter: (obs  'C'::bpchar)


OPCAO B

explain select a.* from mv_servicos_balcao a
where (a.obs not in('C'))
   and(a.cod_key not in(select cod_key_balcao from mv_servicos_print))

Seq Scan on mv_servicos_balcao a  (cost=4279.94..12516.98 rows=63876
width=136)
  Filter: ((obs  'C'::bpchar) AND (NOT (hashed SubPlan 1)))
  SubPlan 1
-  Seq Scan on mv_servicos_print  (cost=0.00..3746.55 rows=213355
width=4)


Vou ser sincero... não sei fazer a leitura do explain, mas pelo que vi a
segunda opção se mostrou mais eficiente, haja visto que sem o explain
temos os seguintes valores em ms(milisegundos)

OPCAO A = 571 rows e 496ms
OPCAO B = 571 rows e 300ms

Mito detonado ? rsrsrs


Não só o tempo foi menor como o custo total da consulta também foi (4279 
versus 9510).


Logo, fique com a opção B.
Note que suas tabelas têm poucas linhas, nenhum índice foi utilizado. 
Considere criar índice (se já não houver) na coluna cod_key da tabela 
mv_servicos_balcao. Todavia, dependendo da quantidade de resultados 
dessa tabela em relação ao tamanho total dela, pode ser que o índice 
nunca seja utilizado. Crie-o (se já não houver) e teste novamente.


[]s

__
Flavio Henrique A. Gurgel
Líder de Projetos Especiais
Consultoria, Projetos  Treinamentos 4LINUX
Tel1: +55-11.2125-4747 ou 2125-4748
www.4linux.com.br
email: fla...@4linux.com.br
__
FREE SOFTWARE SOLUTIONS
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Duvida básica LEFT JOIN x NOT IN

2013-07-05 Por tôpico Matheus de Oliveira
2013/7/5 Marcelo da Silva marc...@ig.com.br

 Tempo os seguintes resultados:

 OPCAO A

 explain select a.* from mv_servicos_balcao a
 left join mv_servicos_print b on(cod_key_balcao = a.cod_key)
 where (b.cod_key is null)
   and(a.obs not in('C'));

 Hash Right Join  (cost=9510.11..17269.55 rows=1 width=136)
   Hash Cond: (b.cod_key_balcao = a.cod_key)
   Filter: (b.cod_key IS NULL)
   -  Seq Scan on mv_servicos_print b  (cost=0.00..3746.55 rows=213355
 width=8)
   -  Hash  (cost=7913.20..7913.20 rows=127753 width=136)
 -  Seq Scan on mv_servicos_balcao a  (cost=0.00..7913.20
 rows=127753 width=136)
   Filter: (obs  'C'::bpchar)


 OPCAO B

 explain select a.* from mv_servicos_balcao a
 where (a.obs not in('C'))
   and(a.cod_key not in(select cod_key_balcao from mv_servicos_print))

 Seq Scan on mv_servicos_balcao a  (cost=4279.94..12516.98 rows=63876
 width=136)
   Filter: ((obs  'C'::bpchar) AND (NOT (hashed SubPlan 1)))
SubPlan 1
 -  Seq Scan on mv_servicos_print  (cost=0.00..3746.55 rows=213355
 width=4)


 Vou ser sincero... não sei fazer a leitura do explain, mas pelo que vi a
 segunda opção se mostrou mais eficiente, haja visto que sem o explain temos
 os seguintes valores em ms(milisegundos)

 OPCAO A = 571 rows e 496ms
 OPCAO B = 571 rows e 300ms


Possível. Mas para termos mais certeza, faça o seguinte:

VACUUM ANALYZE  mv_servicos_balcao;
VACUUM ANALYZE mv_servicos_print;

Em seguida, rode novamente as queries, mas ao invés de apenas explain use:

EXPLAIN (ANALYZE, BUFFERS) SELECT ... ;

E rode pelo menos duas vezes cada para evitar efeitos de cache (o ideal
seria executar um restart, mas 2 execuções deve dar um bom retorno).


Mito detonado ? rsrsrs


Qual o mito afinal?

xD


Atenciosamente,
-- 
Matheus de Oliveira
Analista de Banco de Dados
Dextra Sistemas - MPS.Br nível F!
www.dextra.com.br/postgres
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Duvida básica LEFT JOIN x NOT IN

2013-07-05 Por tôpico Claudio Bezerra Leopoldino

Marcelo, a diferença de custos entre as duas opções não é tão significativa. 

Os planos de execução mostram que você está fazendo sequential scans. Neste 
caso, aconselho que tente indexar as colunas utilizadas nas junções e teste se 
há melhoria na sua consulta e depois disso peço que repita o teste do explain.

Cordialmente,


Cláudio Leopoldino
postgresqlbr.blogspot.com/
=



 De: Marcelo da Silva marc...@ig.com.br
Para: Claudio Bezerra Leopoldino claudiob...@yahoo.com.br; Comunidade 
PostgreSQL Brasileira pgbr-geral@listas.postgresql.org.br 
Enviadas: Sexta-feira, 5 de Julho de 2013 14:54
Assunto: Re: [pgbr-geral] Duvida básica LEFT JOIN x NOT IN
 


Tempo os seguintes resultados:

OPCAO A


explain select a.* from mv_servicos_balcao a
left join mv_servicos_print b on(cod_key_balcao = a.cod_key)
where (b.cod_key is null)
  and(a.obs not in('C'));

Hash Right Join  (cost=9510.11..17269.55 rows=1 width=136)
  Hash Cond: (b.cod_key_balcao = a.cod_key)
  Filter: (b.cod_key IS NULL)
  -  Seq Scan on mv_servicos_print b  (cost=0.00..3746.55 rows=213355 
width=8)
  -  Hash  (cost=7913.20..7913.20 rows=127753 width=136)
        -  Seq Scan on mv_servicos_balcao a  (cost=0.00..7913.20 rows=127753 
width=136)
              Filter: (obs  'C'::bpchar)


OPCAO B

explain select a.* from mv_servicos_balcao a
where (a.obs not in('C'))
  and(a.cod_key not in(select cod_key_balcao from mv_servicos_print))

Seq Scan on mv_servicos_balcao a  (cost=4279.94..12516.98 rows=63876 
width=136)
  Filter: ((obs  'C'::bpchar) AND (NOT (hashed SubPlan 1)))
  SubPlan 1
    -  Seq Scan on mv_servicos_print  (cost=0.00..3746.55 rows=213355 
width=4)


Vou ser sincero... não sei fazer a leitura do explain, mas pelo que vi a 
segunda opção se mostrou mais eficiente, haja visto que sem o explain temos os 
seguintes valores em ms(milisegundos)

OPCAO A = 571 rows e 496ms
OPCAO B = 571 rows e 300ms

Mito detonado ? rsrsrs




Em 5 de julho de 2013 14:31, Claudio Bezerra Leopoldino 
claudiob...@yahoo.com.br escreveu:

Não depende apenas da consulta. Depende dos dados armazenados e estatísticas no 
seu servidor.

Peço que use explain e noso envie o reultado:


EXPLAIN SELECT A.CAMPOS FROM TABELA_A A
LEFT JOIN TABELA_B B ON(B.CODIGO = A.CODIGO)
WHERE (B.CAMPO IS NULL)


e


EXPLAIN  SELECT A.CAMPOS FROM TABEL_A A


WHERE (A.CODIGO NOT IN(SELECT CODIGO FROM TABELA_B))


Cordialmente,


Cláudio Leopoldino
postgresqlbr.blogspot.com/
=



 De: Marcelo da Silva marc...@ig.com.br
Para: Comunidade PostgreSQL Brasileira pgbr-geral@listas.postgresql.org.br 
Enviadas: Sexta-feira, 5 de Julho de 2013 14:25
Assunto: [pgbr-geral] Duvida básica LEFT JOIN x NOT IN
 


Qual seria o mais eficiente ?


SELECT A.CAMPOS FROM TABELA_A A
LEFT JOIN TABELA_B B ON(B.CODIGO = A.CODIGO)
WHERE (B.CAMPO IS NULL)


ou


SELECT A.CAMPOS FROM TABEL_A A

WHERE (A.CODIGO NOT IN(SELECT CODIGO FROM TABELA_B))



-- 

Marcelo Silva

Desenvolvedor Delphi / PHP
My Postgres database
Cel.: (11) 99693-4251

___
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




-- 

Marcelo Silva

Desenvolvedor Delphi / PHP
My Postgres database
Cel.: (11) 99693-4251___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Duvida básica LEFT JOIN x NOT IN

2013-07-05 Por tôpico Bruno Silva
2013/7/5 Claudio Bezerra Leopoldino claudiob...@yahoo.com.br

 EXPLAIN  SELECT A.CAMPOS FROM TABEL_A A

 WHERE (A.CODIGO NOT IN(SELECT CODIGO FROM TABELA_B))


Trocaria o NOT IN port NOT EXISTS

Bruno E. A. Silva.
Analista de Sistemas.
Bacharel em Sistemas de Informação
Pós-graduando em Gerência de Projetos
Certified Scrum Master
LPIC-1
SCJP, SE 6
Novell CLA / DCTS ECR
DBA Postgres
---
“A caixa dizia: Requer MS Windows ou superior. Então instalei Linux.” -
Sábio Desconhecido
Alguns prestam serviço/consultoria de Qualidade, os outros vendem licença!
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Duvida básica LEFT JOIN x NOT IN

2013-07-05 Por tôpico Marcelo da Silva
O NOT IN ainda está sendo o mais eficiente




Em 5 de julho de 2013 16:07, Bruno Silva bemanuel...@gmail.com escreveu:


 2013/7/5 Claudio Bezerra Leopoldino claudiob...@yahoo.com.br

 EXPLAIN  SELECT A.CAMPOS FROM TABEL_A A

 WHERE (A.CODIGO NOT IN(SELECT CODIGO FROM TABELA_B))


 Trocaria o NOT IN port NOT EXISTS

 Bruno E. A. Silva.
 Analista de Sistemas.
 Bacharel em Sistemas de Informação
 Pós-graduando em Gerência de Projetos
 Certified Scrum Master
 LPIC-1
 SCJP, SE 6
 Novell CLA / DCTS ECR
 DBA Postgres
 ---
 “A caixa dizia: Requer MS Windows ou superior. Então instalei Linux.” -
 Sábio Desconhecido
 Alguns prestam serviço/consultoria de Qualidade, os outros vendem
 licença!

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




-- 
Marcelo Silva

Desenvolvedor Delphi / PHP
My Postgres database
Cel.: (11) 99693-4251
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Duvida usuários com Pgbouncer

2013-06-05 Por tôpico Jonas Xpto
 Não existe solução perfeita mas a solução *quase* perfeita está descrita
 em [1]. Como a alteração de senhas não é algo frequente, esta solução
 atende muito bem.

 [1]

http://www.depesz.com/2010/12/04/auto-refreshing-password-file-for-pgbouncer/

Euler muito obrigado,

Só mais uma duvida, nas configurações do pgbouncer eu o que eu devo colocar
no auth_file ?

Grato!

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


Re: [pgbr-geral] Duvida usuários com Pgbouncer

2013-06-05 Por tôpico Euler Taveira
On 05-06-2013 10:26, Jonas Xpto wrote:
 Só mais uma duvida, nas configurações do pgbouncer eu o que eu devo
 colocar no auth_file ?
 
O caminho do arquivo de senhas.


-- 
   Euler Taveira   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] Duvida usuários com Pgbouncer

2013-06-04 Por tôpico Euler Taveira
On 04-06-2013 16:37, xpto xpto wrote:
 Gostaria de saber como consigo fazer essa automatização entre as senhas
 do PostgreSQL e Pgbouncer?
 
Não existe solução perfeita mas a solução *quase* perfeita está descrita
em [1]. Como a alteração de senhas não é algo frequente, esta solução
atende muito bem.


[1]
http://www.depesz.com/2010/12/04/auto-refreshing-password-file-for-pgbouncer/


-- 
   Euler Taveira   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] duvida com rule

2013-04-24 Por tôpico Fabrízio de Royes Mello
2013/4/24 Douglas Fabiano Specht douglasfabi...@gmail.com

 Boa tarde pessoal,
 estamos com um problema no nosso sistema em que o campo situacao de uma
 tabela está = O e em algum momento está sendo dado um update nele para O
 tambem.
 em suma preciso  criar uma rule e tentar identificar onde ocorre..


Douglas,

Vc quer dete


-- 
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] duvida com rule

2013-04-24 Por tôpico Fabrízio de Royes Mello
2013/4/24 Fabrízio de Royes Mello fabriziome...@gmail.com


 2013/4/24 Douglas Fabiano Specht douglasfabi...@gmail.com

 Boa tarde pessoal,
 estamos com um problema no nosso sistema em que o campo situacao de uma
 tabela está = O e em algum momento está sendo dado um update nele para O
 tambem.
 em suma preciso  criar uma rule e tentar identificar onde ocorre..


 Douglas,

 Vc quer dete


Pessoal,

Desculpe o email anterior quebrado... cliquei no Send sem querer... :-/

Sobre a dúvida, essa regra que vc quer criar é para não permitir que ocorra
esse UPDATE ?

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] duvida com rule

2013-04-24 Por tôpico Matheus de Oliveira
2013/4/24 Douglas Fabiano Specht douglasfabi...@gmail.com

 Boa tarde pessoal,
 estamos com um problema no nosso sistema em que o campo situacao de uma
 tabela está = O e em algum momento está sendo dado um update nele para O
 tambem.
 em suma preciso  criar uma rule e tentar identificar onde ocorre..


hein?

PS: Apesar de não enteder nadica de nada, não use RULE. Elas são do mal!!!

Atenciosamente,
-- 
Matheus de Oliveira
Analista de Banco de Dados
Dextra Sistemas - MPS.Br nível F!
www.dextra.com.br/postgres
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] duvida com rule

2013-04-24 Por tôpico Douglas Fabiano Specht
Pessoal, o que preciso é:
se o campo situacao='O' e vir um update neste campo tambem como 'O', quero
bloquear e dar uma mensagem..




Em 24 de abril de 2013 19:25, Matheus de Oliveira matioli.math...@gmail.com
 escreveu:


 2013/4/24 Douglas Fabiano Specht douglasfabi...@gmail.com

 Boa tarde pessoal,
 estamos com um problema no nosso sistema em que o campo situacao de uma
 tabela está = O e em algum momento está sendo dado um update nele para O
 tambem.
 em suma preciso  criar uma rule e tentar identificar onde ocorre..


 hein?

 PS: Apesar de não enteder nadica de nada, não use RULE. Elas são do
 mal!!!

 Atenciosamente,
 --
 Matheus de Oliveira
 Analista de Banco de Dados
 Dextra Sistemas - MPS.Br nível F!
 www.dextra.com.br/postgres


 ___
 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


Re: [pgbr-geral] duvida com rule

2013-04-24 Por tôpico Fabrízio de Royes Mello
2013/4/25 Douglas Fabiano Specht douglasfabi...@gmail.com

 Pessoal, o que preciso é:
 se o campo situacao='O' e vir um update neste campo tambem como 'O', quero
 bloquear e dar uma mensagem..


Vc pode fazer mais ou menos assim:

CREATE OR REPLACE FUNCTION trigger_raise_exception(message TEXT)
RETURNS trigger AS
$$
BEGIN
  RAISE EXCEPTION '%', message;
  RETURN NULL;
END;
$$ LANGUAGE plpgsql;

CREATE TRIGGER bloqueia_update_situacao
  BEFORE UPDATE OF situacao ON nome_da_sua_tabela
  WHEN OLD.situacao = 'O' AND NEW.situacao = 'O'
  FOR EACH ROW EXECUTE PROCEDURE trigger_raise_exception(E'Situacao atual e
anterior = \'O\'');


Eu não testei, mas acredito que funcione.

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] Duvida memoria ram

2013-02-25 Por tôpico Juliano Atanazio
Em 14 de fevereiro de 2013 18:39, Itamar Reis Peixoto 
ita...@ispbrasil.com.br escreveu:

 2013/2/14 Edson - Lista edson...@gmail.com:
 
  eu recomendaria um fedora 17 ou 18 que já vem com a versao do
  postgresql mais nova e ext4.
 
  Preconceito meu, mas usar Fedora, Ubuntu desktop ou Debian unstable não é
  uma das coisas que eu gosto de fazer. Prefiro ter distribuições mais
  estáveis. Se eu precisar da versão mais nova do PostgreSQL eu compilo ou
  pego o RPM direto da fonte.

 o proprio Tom Lane que compila os rpms do posgresql que vem no fedora.


Se o problema é ter os pacotes mais atualizados pra Debian ou RedHat,
seguem os respectivos links para auxílio:

https://wiki.postgresql.org/wiki/Apt

http://people.planetpostgresql.org/devrim/index.php?/archives/70-How-to-install-PostgreSQL-9.2-on-RHELCentOSScientific-Linux-5-and-6.html




 --
 

 Itamar Reis Peixoto
 ___
 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


Re: [pgbr-geral] Duvida memoria ram

2013-02-14 Por tôpico Fábio Telles Rodriguez
Em 13 de fevereiro de 2013 23:17, Itamar Reis Peixoto 
ita...@ispbrasil.com.br escreveu:

 2013/2/13 Mauro Risonho de Paula Assumpção mauro.riso...@gmail.com:
  O filesystem pelo que você comentou esta em ext2, correto?
 
  Eu recomendaria Brfs ou ext4 e fazer upgrade para centos 6.3
 
  @firebitsbr
 

 eu recomendaria um fedora 17 ou 18 que já vem com a versao do
 postgresql mais nova e ext4.

 Preconceito meu, mas usar Fedora, Ubuntu desktop ou Debian unstable não é
uma das coisas que eu gosto de fazer. Prefiro ter distribuições mais
estáveis. Se eu precisar da versão mais nova do PostgreSQL eu compilo ou
pego o RPM direto da fonte.


 --
 

 Itamar Reis Peixoto
 http://www.quebarato.com.br/perfil/itamarjp
 ___
 pgbr-geral mailing list
 pgbr-geral@listas.postgresql.org.br
 https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral




-- 
Atenciosamente,
Fábio Telles Rodriguez
blog: http:// http://www.midstorm.org/~telles/shttp://tellesr.wordpress.com/
avepoint.blog.br
e-mail / gtalk / MSN: fabio.tel...@gmail.com
Skype: fabio_telles

Timbira - A empresa brasileira de Postgres
http://www.timbira.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] Duvida memoria ram

2013-02-14 Por tôpico Flavio Henrique Araque Gurgel

Em 14-02-2013 10:20, Rudá Porto Filgueiras escreveu:
 Itamar,

 Debian Stable + Backports faz exatamente isso e tem o Postgresql 9.1 :-)
 Além disso, o Debian Testing e não o Unstable seria uma alternativa ou
 Ubuntu LTS (baseado no Debian Testing).

Não precisa mais depender do backports.
O repositório do pgdg para Debian agora tá muito bem empacotado.

Tá tudo aqui:
http://www.postgresql.org/download/linux/debian/

[]s

__
Flavio Henrique A. Gurgel
Líder de Projetos Especiais
Consultoria, Projetos  Treinamentos 4LINUX
Tel1: +55-11.2125-4747 ou 2125-4748
www.4linux.com.br
email: fla...@4linux.com.br
__
FREE SOFTWARE SOLUTIONS
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Duvida memoria ram

2013-02-14 Por tôpico Mauro Risonho de Paula Assumpção
Archlinux é extremamente estável, mas você terá que fazer tudo na mão,
compilar na mão.

Vale a pena, mas demora um pouco.

@firebitsbr


Em 14 de fevereiro de 2013 15:29, Edson - Lista edson...@gmail.comescreveu:

  Em 14/02/2013 07:47, Fábio Telles Rodriguez escreveu:

 Em 13 de fevereiro de 2013 23:17, Itamar Reis Peixoto 
 ita...@ispbrasil.com.br escreveu:

 2013/2/13 Mauro Risonho de Paula Assumpção mauro.riso...@gmail.com:
  O filesystem pelo que você comentou esta em ext2, correto?
 
  Eu recomendaria Brfs ou ext4 e fazer upgrade para centos 6.3
 
  @firebitsbr
 

  eu recomendaria um fedora 17 ou 18 que já vem com a versao do
 postgresql mais nova e ext4.

  Preconceito meu, mas usar Fedora, Ubuntu desktop ou Debian unstable não
 é uma das coisas que eu gosto de fazer. Prefiro ter distribuições mais
 estáveis. Se eu precisar da versão mais nova do PostgreSQL eu compilo ou
 pego o RPM direto da fonte.


 --
  

 Itamar Reis Peixoto
 http://www.quebarato.com.br/perfil/itamarjp
 ___
 pgbr-geral mailing list
 pgbr-geral@listas.postgresql.org.br
 https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral




  --
 Atenciosamente,
 Fábio Telles Rodriguez
 blog: http:// 
 http://www.midstorm.org/%7Etelles/shttp://tellesr.wordpress.com/
 avepoint.blog.br
 e-mail / gtalk / MSN: fabio.tel...@gmail.com
 Skype: fabio_telles

  Timbira - A empresa brasileira de Postgres
 http://www.timbira.com.br


 ___
 pgbr-geral mailing 
 listpgbr-ge...@listas.postgresql.org.brhttps://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

  Telles,

 Qual distribuição mais  estável você recomendaria?


 ___
 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


Re: [pgbr-geral] Duvida memoria ram

2013-02-14 Por tôpico Émerson Eng .
só faltou citarem gentoo :)
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Duvida memoria ram

2013-02-14 Por tôpico Flávio Alves Granato
Mauro Risonho de Paula Assumpção mauro.riso...@gmail.com writes:

 Archlinux é extremamente estável, mas você terá que fazer tudo na mão,
 compilar na mão.

Não vejo o archlinux tão estável assim. Já houve dois momentos em que
tive que meter a mão no SO para ajustá-lo, um momento em que mudaram o
pid de lugar e o sistema não subia o SGBD, foi necessário um restart da
máquina e um segundo a pouco tempo em que migraram de sysv para systemd
e na recente atualização de versão para a 9.2.3 retiraram o initscript
do pacote, logo o SGBD também não rodava, ai foi uma correria só para
poder migrar tudo para systemd. Quanto ao systemd tá certo que eu
deveria ter migrado antes, mas quanto ao PID, poxa perder um uptime 200+
dias por causa de uma mudancinha? Foi duro... hehehehe...

Em termos de estabilidade recomendo Debian.
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Duvida memoria ram

2013-02-14 Por tôpico Itamar Reis Peixoto
2013/2/14 Edson - Lista edson...@gmail.com:

 eu recomendaria um fedora 17 ou 18 que já vem com a versao do
 postgresql mais nova e ext4.

 Preconceito meu, mas usar Fedora, Ubuntu desktop ou Debian unstable não é
 uma das coisas que eu gosto de fazer. Prefiro ter distribuições mais
 estáveis. Se eu precisar da versão mais nova do PostgreSQL eu compilo ou
 pego o RPM direto da fonte.

o proprio Tom Lane que compila os rpms do posgresql que vem no fedora.



-- 


Itamar Reis Peixoto
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Duvida memoria ram

2013-02-13 Por tôpico Itamar Reis Peixoto
2013/2/13 Wellington wm...@yahoo.com.br:
 Euler,
 segue abaixo:

 procs ---memory-- ---swap-- -io --system--
 -cpu--
  r  b swpd   free   buff  cache   si  sobibo   in   cs us sy id wa
 st
  1  0  172 158084  27296 586856000   164809  6  2  1 95  2 0


 avg-cpu:  %user   %nice %system %iowait  %steal   %idle
 2,110,000,752,350,00   94,78
 Device: tps  Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
 sda   60,15 2627,56  1284,36 1552770309  758997104
 sda10,000,00 0,00   1938 56
 sda23,82   32,67   178,95   19305346  105753944
 sda30,196,11 6,0236079123560352
 sda40,000,00 0,00  10  0
 sda5   56,14 2588,78  1099,38 1529854671  649682752


 top - 17:25:04 up 6 days, 20:07,  2 users,  load average: 2.84, 2.26, 2.11
 Tasks: 337 total,   2 running, 335 sleeping,   0 stopped,   0 zombie
 Cpu(s): 13.7%us,  5.4%sy,  0.0%ni, 64.1%id, 15.5%wa,  0.1%hi,  1.2%si,
 0.0%st
 Mem:   8168272k total, 8128960k used,   39312k free,   25048k buffers
 Swap: 16386292k total,  172k used, 16386120k free,  5958712k cached
   PID USER PR  NI VIRT  RES  SHR S %CPU %MEMTIME+  COMMAND
 25065 postgres 15   0 1014m 895m 841m R 25.6 11.2   3:18.60 postmaster
  4869 postgres 15   0 970m  805m 796m S 21.2 10.1   0:04.81 postmaster
  4448 postgres 15   0 971m  488m 477m S 18.9  6.1   0:06.30 postmaster
 14737 postgres 15   0 978m  857m 841m S 15.6 10.8   8:11.18 postmaster
 14739 postgres 15   0 978m  855m 841m S  9.3 10.7   3:57.58 postmaster
  9745 nobody   15   0 138m  5428 3736 S  8.6  0.1   4:34.71 smbd
  4548 postgres 15   0 969m  154m 146m S  7.3  1.9   0:00.96 postmaster
 25063 postgres 15   0 987m  859m 841m S  5.3 10.8   1:44.62 postmaster
  3810 nobody   15   0 137m  6152 3552 S  5.0  0.1  20:08.59 smbd
  4871 postgres 15   0 968m   90m  84m S  4.3  1.1   0:01.09 postmaster
  6354 postgres 15   0 1015m 893m 841m S  4.0 11.2   4:35.32 postmaster
  4446 postgres 16   0 979m  712m 699m D  3.3  8.9   0:07.62 postmaster
 19466 nobody   15   0 139m  6676 3736 S  2.0  0.1  18:13.41 smbd
 21521 postgres 15   0 1013m 891m 841m S  1.7 11.2   3:24.46 postmaster
  6352 postgres 15   0 986m  859m 841m S  1.3 10.8   1:50.57 postmaster
  4205 postgres 15   0 1016m 893m 841m S  1.0 11.2   1:47.60 postmaster
  4550 postgres 15   0 969m   38m  31m S  1.0  0.5   0:00.28 postmaster

 a versao do CentOS eh 5.4, numero medio de conexoes 40, executando consultas
 30.


 obrigado,
 wellington

 - Original Message -
 From: Euler Taveira eu...@timbira.com
 To: Comunidade PostgreSQL Brasileira pgbr-geral@listas.postgresql.org.br
 Sent: Sunday, February 10, 2013 11:04 PM
 Subject: Re: [pgbr-geral] Duvida memoria ram

 On 09-02-2013 23:52, Wellington wrote:
 Estamos pensando em fazer um upgrade na memoria ram, a duvida  eh:
 Vale a pena investir em 64GB ou 32GB ja estaria de bom tamanho ?

 Você não apresentou dados para verificarmos qual é o gargalo. Que tal
 apresentar um pouco da saída do vmstat ou iostat? E a saída do top?

 Qual o número médio de conexões? Quantas dessas estão executando consultas?
 E
 ociosas?

 Além disso, você não informou a versão do CentOS. Quanto ao sistema de
 arquivos, saia do ext2; ele não oferece nenhuma proteção para os seus dados.


 --
Euler Taveira de Oliveira - Timbira   http://www.timbira.com.br/
PostgreSQL: Consultoria, Desenvolvimento, Suporte 24x7 e Treinamento

o seu gargalo parece ser de disco.





Itamar Reis Peixoto
http://www.quebarato.com.br/perfil/itamarjp
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Duvida memoria ram

2013-02-13 Por tôpico Mauro Risonho de Paula Assumpção
O filesystem pelo que você comentou esta em ext2, correto?

Eu recomendaria Brfs ou ext4 e fazer upgrade para centos 6.3

@firebitsbr


Em 13 de fevereiro de 2013 23:11, Itamar Reis Peixoto 
ita...@ispbrasil.com.br escreveu:

 2013/2/13 Wellington wm...@yahoo.com.br:
  Euler,
  segue abaixo:
 
  procs ---memory-- ---swap-- -io --system--
  -cpu--
   r  b swpd   free   buff  cache   si  sobibo   in   cs us sy id
 wa
  st
   1  0  172 158084  27296 586856000   164809  6  2  1 95
  2 0
 
 
  avg-cpu:  %user   %nice %system %iowait  %steal   %idle
  2,110,000,752,350,00   94,78
  Device: tps  Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
  sda   60,15 2627,56  1284,36 1552770309  758997104
  sda10,000,00 0,00   1938 56
  sda23,82   32,67   178,95   19305346  105753944
  sda30,196,11 6,0236079123560352
  sda40,000,00 0,00  10  0
  sda5   56,14 2588,78  1099,38 1529854671  649682752
 
 
  top - 17:25:04 up 6 days, 20:07,  2 users,  load average: 2.84, 2.26,
 2.11
  Tasks: 337 total,   2 running, 335 sleeping,   0 stopped,   0 zombie
  Cpu(s): 13.7%us,  5.4%sy,  0.0%ni, 64.1%id, 15.5%wa,  0.1%hi,  1.2%si,
  0.0%st
  Mem:   8168272k total, 8128960k used,   39312k free,   25048k buffers
  Swap: 16386292k total,  172k used, 16386120k free,  5958712k cached
PID USER PR  NI VIRT  RES  SHR S %CPU %MEMTIME+  COMMAND
  25065 postgres 15   0 1014m 895m 841m R 25.6 11.2   3:18.60 postmaster
   4869 postgres 15   0 970m  805m 796m S 21.2 10.1   0:04.81 postmaster
   4448 postgres 15   0 971m  488m 477m S 18.9  6.1   0:06.30 postmaster
  14737 postgres 15   0 978m  857m 841m S 15.6 10.8   8:11.18 postmaster
  14739 postgres 15   0 978m  855m 841m S  9.3 10.7   3:57.58 postmaster
   9745 nobody   15   0 138m  5428 3736 S  8.6  0.1   4:34.71 smbd
   4548 postgres 15   0 969m  154m 146m S  7.3  1.9   0:00.96 postmaster
  25063 postgres 15   0 987m  859m 841m S  5.3 10.8   1:44.62 postmaster
   3810 nobody   15   0 137m  6152 3552 S  5.0  0.1  20:08.59 smbd
   4871 postgres 15   0 968m   90m  84m S  4.3  1.1   0:01.09 postmaster
   6354 postgres 15   0 1015m 893m 841m S  4.0 11.2   4:35.32 postmaster
   4446 postgres 16   0 979m  712m 699m D  3.3  8.9   0:07.62 postmaster
  19466 nobody   15   0 139m  6676 3736 S  2.0  0.1  18:13.41 smbd
  21521 postgres 15   0 1013m 891m 841m S  1.7 11.2   3:24.46 postmaster
   6352 postgres 15   0 986m  859m 841m S  1.3 10.8   1:50.57 postmaster
   4205 postgres 15   0 1016m 893m 841m S  1.0 11.2   1:47.60 postmaster
   4550 postgres 15   0 969m   38m  31m S  1.0  0.5   0:00.28 postmaster
 
  a versao do CentOS eh 5.4, numero medio de conexoes 40, executando
 consultas
  30.
 
 
  obrigado,
  wellington
 
  - Original Message -
  From: Euler Taveira eu...@timbira.com
  To: Comunidade PostgreSQL Brasileira 
 pgbr-geral@listas.postgresql.org.br
  Sent: Sunday, February 10, 2013 11:04 PM
  Subject: Re: [pgbr-geral] Duvida memoria ram
 
  On 09-02-2013 23:52, Wellington wrote:
  Estamos pensando em fazer um upgrade na memoria ram, a duvida  eh:
  Vale a pena investir em 64GB ou 32GB ja estaria de bom tamanho ?
 
  Você não apresentou dados para verificarmos qual é o gargalo. Que tal
  apresentar um pouco da saída do vmstat ou iostat? E a saída do top?
 
  Qual o número médio de conexões? Quantas dessas estão executando
 consultas?
  E
  ociosas?
 
  Além disso, você não informou a versão do CentOS. Quanto ao sistema de
  arquivos, saia do ext2; ele não oferece nenhuma proteção para os seus
 dados.
 
 
  --
 Euler Taveira de Oliveira - Timbira   http://www.timbira.com.br/
 PostgreSQL: Consultoria, Desenvolvimento, Suporte 24x7 e Treinamento

 o seu gargalo parece ser de disco.



 

 Itamar Reis Peixoto
 http://www.quebarato.com.br/perfil/itamarjp
 ___
 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


Re: [pgbr-geral] Duvida memoria ram

2013-02-13 Por tôpico Itamar Reis Peixoto
2013/2/13 Mauro Risonho de Paula Assumpção mauro.riso...@gmail.com:
 O filesystem pelo que você comentou esta em ext2, correto?

 Eu recomendaria Brfs ou ext4 e fazer upgrade para centos 6.3

 @firebitsbr


eu recomendaria um fedora 17 ou 18 que já vem com a versao do
postgresql mais nova e ext4.

-- 


Itamar Reis Peixoto
http://www.quebarato.com.br/perfil/itamarjp
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Duvida memoria ram

2013-02-10 Por tôpico Euler Taveira
On 09-02-2013 23:52, Wellington wrote:
 Estamos pensando em fazer um upgrade na memoria ram, a duvida  eh: 
 Vale a pena investir em 64GB ou 32GB ja estaria de bom tamanho ?
 
Você não apresentou dados para verificarmos qual é o gargalo. Que tal
apresentar um pouco da saída do vmstat ou iostat? E a saída do top?

Qual o número médio de conexões? Quantas dessas estão executando consultas? E
ociosas?

Além disso, você não informou a versão do CentOS. Quanto ao sistema de
arquivos, saia do ext2; ele não oferece nenhuma proteção para os seus dados.


-- 
   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


  1   2   3   4   >