Re: [pgbr-geral] Lentidão na aplicação do Archive - Stream Replication

2017-08-31 Por tôpico Marcelo Kruger
Bom dia Flavio,

Neste momento nosso servidor StandBy não está recebendo consultas devido ao
alto delay entre o ultimo archive enviado, e o aplicado no standby. Mas
esta habilitado para receber consultas.

As configurações de max_standby_streaming_delay e max_standby_archive_delay
estão seguindo o padrão do postgres. Não fiz alterações nestes parametros.

 max_standby_archive_delay   | 30s
 max_standby_streaming_delay | 30s

Eles poderiam influenciar?

Quanto as consultas

repositorio=# select * from pg_replication_slots;
  slot_name  | plugin | slot_type | datoid | database | active | active_pid
|   xmin| catalog_xmin | restart_lsn  | confirmed_flush_lsn
-++---++--+++---+--+--+-
 bdreplica01 || physical  ||  | t  |  47368
| 125364835 |  | 928/B400 |

repositorio=# select * from pg_stat_replication;
  pid  | usesysid |   usename   | application_name | client_addr  |
client_hostname | client_port | backend_start |
backend_xmin |   state   | se
nt_location | write_location | flush_location | replay_location |
sync_priority | sync_state
---+--+-+--+--+-+-+---+--+---+---
+++-+---+
 47368 |18025 | replication | walreceiver  | 10.120.5.201 |
|   50464 | 2017-08-29 15:39:31.591119-03 |  |
streaming | 92
9/98687328  | 929/98686000   | 929/98686000   | 88E/91CB7AE0|
  0 | async

O parametro de log checkpoint está habilitado em nosso banco, e a
quantidade de archives gerados simultaneamente é o seguinte.

[root@bdreplica00 config_exporters]# lsof | grep 0 | grep postgres |
grep -v "deleted" | grep pg_xlog | wc -l
169
[root@bdreplica00 config_exporters]# lsof | grep 0 | grep postgres |
grep -v "deleted" | grep pg_xlog | wc -l
159
[root@bdreplica00 config_exporters]# lsof | grep 0 | grep postgres |
grep -v "deleted" | grep pg_xlog | wc -l
189
[root@bdreplica00 config_exporters]# lsof | grep 0 | grep postgres |
grep -v "deleted" | grep pg_xlog | wc -l
209

O consumo do wal_receiver é baixo comparado ao numero de CPUs que temos. O
processo consome em media 20% de CPU em um nucleo. Possuimos 20 nucleos.

12819 postgres  20   0 35,692g   3520   1876 S  19,2  0,0 149:28.23
postgres: wal receiver process   streaming 933/7C8D8000


40604 postgres  20   0 35,686g   3164   1468 D   2,6  0,0 126:44.17
postgres: startup process   recovering 0001088E0097


Os dados do IOSTAT são os seguintes

[root@bdreplica01 config_exporters]# iostat
Linux 3.10.0-327.36.3.el7.x86_64 (bdreplica01) 08/31/2017 _x86_64_ (20 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
   0,260,000,772,970,00   96,01

Device:tpskB_read/skB_wrtn/skB_readkB_wrtn
md02246,70 26805,26 50759,55 18153260865 34375764472

Quanto a escrita e leitura vejo que a mesma não esta saturada. Em nossa
configuração conseguimos atingir 1,5Gb/s de escrita no disco de banco.
Atualmente este disco é um RAID0 de 17 SSDs. O processo de aplicação de
archives esta consumindo proximo a 16Mb/s.

O problema não poderia estar ligado ao tamanho do archive, que no caso é de
16MB. Outro ponto, a blocagem do disco poderia influenciar neste processo
de restore?

Att,


Em 31 de agosto de 2017 09:25, Flavio Henrique Araque Gurgel <
fha...@gmail.com> escreveu:

>
>
> Em qui, 31 de ago de 2017 às 13:24, Daniel Luiz da Silva <
> daniel.si...@ipm.com.br> escreveu:
>
>> *De: *"Marcelo Kruger" <marcelo.kru...@neoway.com.br>
>> *Para: *"Comunidade PostgreSQL Brasileira" <pgbr-geral@listas.postgresql.
>> org.br>
>> *Enviadas: *Quinta-feira, 31 de agosto de 2017 7:42:46
>>
>> *Assunto: *Re: [pgbr-geral]Lentidão na aplicação do Archive -
>> Stream Replication
>>
>> Bom dia Fabio,
>> Creio que tenha me expressado da maneira incorreta. Não faço nenhuma
>> alteração para copia de archives uma vez que todo o pg_xlog é transferido
>> para a outra maquina via WAL Sender sem que tenha que fazer alterações
>> tanto no recovery.conf, quanto no postgres.conf de ambas as maquinas.
>> Criamos um slot e definimos o banco como hot standby, o procedimento que
>> por sua vez fará com que o a replica receba os arquivos da maquina master,
>> e isso esta ocorrendo corretamente e de forma instantanea.
>>
>> Entretanto irei seguir as recomendações passadas por você, e irei testar
>> o procedimento do Euler.
>>
>> Agradeço desde já pela

Re: [pgbr-geral] Lentidão na aplicação do Archive - Stream Replication

2017-08-31 Por tôpico Marcelo Kruger
Bom dia Fabio,

Creio que tenha me expressado da maneira incorreta. Não faço nenhuma
alteração para copia de archives uma vez que todo o pg_xlog é transferido
para a outra maquina via WAL Sender sem que tenha que fazer alterações
tanto no recovery.conf, quanto no postgres.conf de ambas as maquinas.
Criamos um slot e definimos o banco como hot standby, o procedimento que
por sua vez fará com que o a replica receba os arquivos da maquina master,
e isso esta ocorrendo corretamente e de forma instantanea.

Entretanto irei seguir as recomendações passadas por você, e irei testar o
procedimento do Euler.

Agradeço desde já pela atenção.

Att,

Em 31 de agosto de 2017 06:45, Fábio Telles Rodriguez <
fabio.tel...@gmail.com> escreveu:

>
>
> Em 30 de agosto de 2017 19:21, Marcelo Kruger <
> marcelo.kru...@neoway.com.br> escreveu:
>
>> Daniel,
>>
>> Devido ao archive estar por padrão no pg_xlog não foi necessario
>> especificar o archive_command.
>>
>
> Você está fazendo confusão! Jamais copie arquivos diretamente para dentro
> ou para fora do pg_xlog. Deixe que o PostgreSQL gerencie esta área para
> você.
>
> Monte o Standby de acordo com o procedimento normal. Se estiver na dúvida,
> siga o procedimento do artigo do Euler Taveira em:
> http://eulerto.blogspot.com.br/2017/02/replicacao-o-que-mudou.html
>
>
> --
> Atenciosamente,
> Fábio Telles Rodriguez
> blog: http:// <http://www.midstorm.org/%7Etelles/>s
> <http://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
>
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Re: [pgbr-geral] Lentidão na aplicação do Archive - Stream Replication

2017-08-30 Por tôpico Marcelo Kruger
Daniel,

Devido ao archive estar por padrão no pg_xlog não foi necessario
especificar o archive_command.

Att,

Em 30 de agosto de 2017 16:37, Daniel Luiz da Silva <daniel.si...@ipm.com.br
> escreveu:

>
>
> --
> *De: *"Marcelo Kruger" <marcelo.kru...@neoway.com.br>
> *Para: *"Comunidade PostgreSQL Brasileira" <pgbr-geral@listas.postgresql.
> org.br>
> *Enviadas: *Quarta-feira, 30 de agosto de 2017 16:23:54
> *Assunto: *Re: [pgbr-geral]Lentidão na aplicação do Archive -
> Stream Replication
>
> Daniel,
> O arquivo im_the_master é apenas uma trigger para transitar o servidor do
> stand-by para a produção. É um arquivo vazio, nosso processo cria este
> arquivo quando identifica que o servidor principal não esta respondendo.
>
> Quanto ao shared_buffer haviamos lido esta questão do tamanho. Chegamos a
> reduzir o shared, mas o tempo de processamento do archive ficou na mesma
> media de tempo.
>
> Att,
>
> Marcelo,
> Como está o archive_command no slave?
>
> Em 30 de agosto de 2017 16:16, Daniel Luiz da Silva <
> daniel.si...@ipm.com.br> escreveu:
>
>>
>>
>> --
>> *De: *"Marcelo Kruger" <marcelo.kru...@neoway.com.br>
>> *Para: *"Comunidade PostgreSQL Brasileira" <pgbr-geral@listas.postgresql.
>> org.br>
>> *Enviadas: *Quarta-feira, 30 de agosto de 2017 16:03:21
>> *Assunto: *Re: [pgbr-geral]Lentidão na aplicação do Archive -
>> Stream Replication
>>
>> Daniel, quanto a questão do checkpoint_completion_target não havia me
>> atentato. E desta forma justificaria o tempo de descarga dos dados em
>> disco. O shared_buffer é elevado em nosso caso pois nosso processamento de
>> dados exige tal configuração de memoria.
>> Daniel, o arquivo de recovery.conf está da seguinte forma
>>
>> standby_mode   = 'on'
>> primary_slot_name  = 'bdreplica01'
>> primary_conninfo   = 'host=bdreplica00 port=5433 user=replication'
>> trigger_file   = '/var/lib/pgsql/9.6/data/im_the_master'
>>
>> Att,
>>
>> Marcelo,
>>
>> Normalmente não se utiliza o shared_buffer maior que 8GB, justamente
>> porque tem esses malefícios com WAL e recovery caso necessário. Se quiser
>> pesquisar dentro do arquivario do forum PostgreSQL Brasil, existe vários
>> tópicos sobre as desvantagens de ser maior que 8GB. É interessante
>> acompanhar o pg_buffercache do seu cluster, para saber se os arquivos
>> dentro do buffer fica muito tempo, com isso, conseguirá comparar se o
>> tamanho do shared_buffer está suficiente ou não.
>> O que existe dentro do comando im_the_master ?
>>
>> Em 30 de agosto de 2017 15:49, Daniel Luiz da Silva <
>> daniel.si...@ipm.com.br> escreveu:
>>
>>>
>>>
>>> --
>>> *De: *"Marcelo Kruger" <marcelo.kru...@neoway.com.br>
>>> *Para: *"Comunidade PostgreSQL Brasileira" <
>>> pgbr-geral@listas.postgresql.org.br>
>>> *Enviadas: *Quarta-feira, 30 de agosto de 2017 14:55:07
>>> *Assunto: *Re: [pgbr-geral]Lentidão na aplicação do Archive -
>>> Stream Replication
>>>
>>> Daniel, boa tarde.
>>> Para a informação chegar no slave irá demorar mais de 1 dia, uma vez que
>>> tenho 350GB de archives no slave que não foram aplicados ainda. Ou seja, o
>>> processo de WAL Sender envia o arquivo, mas o Slave leva muito tempo para
>>> aplicar na base de dados.
>>>
>>> Aqui existe um detalhe, ela não demorará 1 dia para chegar no slave,
>>> isso será o tempo aproximado para processar o arquivo, o tempo de envio
>>> deverá ser curto.
>>>
>>> Apos finalizar o archive no master o envio para o slave e instantaneo.
>>> Contudo notamos que para gerar um arquivo de 16MB no pg_xlog do master está
>>> levando mais de 10 minutos. E temos operação massiva de inserção e
>>> alteração, que não justificaria a demora para finalizar este archive.
>>>
>>> Para calcular isso terá que acompanhar o checkpoint que ocorre dentro da
>>> base, inclusive, esse cluster está configurado com uma valor bem alto de
>>> shared_buffer, então para ler essa memória e descarregar poderá levar mais
>>> tempo que previsto. Ler esse link  [1]
>>> O seu checkpoint_timeout está em 10 minutos, porém o
>>> checkpoint_completion_target está 0.5, se esse parâmetro estiver com valor
>>> default, como está comentado, e valor no comentário é 0.9, significa que
>>> será feito uma desc

Re: [pgbr-geral] Lentidão na aplicação do Archive - Stream Replication

2017-08-30 Por tôpico Marcelo Kruger
Daniel,

O arquivo im_the_master é apenas uma trigger para transitar o servidor do
stand-by para a produção. É um arquivo vazio, nosso processo cria este
arquivo quando identifica que o servidor principal não esta respondendo.

Quanto ao shared_buffer haviamos lido esta questão do tamanho. Chegamos a
reduzir o shared, mas o tempo de processamento do archive ficou na mesma
media de tempo.

Att,

Em 30 de agosto de 2017 16:16, Daniel Luiz da Silva <daniel.si...@ipm.com.br
> escreveu:

>
>
> --
> *De: *"Marcelo Kruger" <marcelo.kru...@neoway.com.br>
> *Para: *"Comunidade PostgreSQL Brasileira" <pgbr-geral@listas.postgresql.
> org.br>
> *Enviadas: *Quarta-feira, 30 de agosto de 2017 16:03:21
> *Assunto: *Re: [pgbr-geral]Lentidão na aplicação do Archive -
> Stream Replication
>
> Daniel, quanto a questão do checkpoint_completion_target não havia me
> atentato. E desta forma justificaria o tempo de descarga dos dados em
> disco. O shared_buffer é elevado em nosso caso pois nosso processamento de
> dados exige tal configuração de memoria.
> Daniel, o arquivo de recovery.conf está da seguinte forma
>
> standby_mode   = 'on'
> primary_slot_name  = 'bdreplica01'
> primary_conninfo   = 'host=bdreplica00 port=5433 user=replication'
> trigger_file   = '/var/lib/pgsql/9.6/data/im_the_master'
>
> Att,
>
> Marcelo,
>
> Normalmente não se utiliza o shared_buffer maior que 8GB, justamente
> porque tem esses malefícios com WAL e recovery caso necessário. Se quiser
> pesquisar dentro do arquivario do forum PostgreSQL Brasil, existe vários
> tópicos sobre as desvantagens de ser maior que 8GB. É interessante
> acompanhar o pg_buffercache do seu cluster, para saber se os arquivos
> dentro do buffer fica muito tempo, com isso, conseguirá comparar se o
> tamanho do shared_buffer está suficiente ou não.
> O que existe dentro do comando im_the_master ?
>
> Em 30 de agosto de 2017 15:49, Daniel Luiz da Silva <
> daniel.si...@ipm.com.br> escreveu:
>
>>
>>
>> --
>> *De: *"Marcelo Kruger" <marcelo.kru...@neoway.com.br>
>> *Para: *"Comunidade PostgreSQL Brasileira" <pgbr-geral@listas.postgresql.
>> org.br>
>> *Enviadas: *Quarta-feira, 30 de agosto de 2017 14:55:07
>> *Assunto: *Re: [pgbr-geral]Lentidão na aplicação do Archive -
>> Stream Replication
>>
>> Daniel, boa tarde.
>> Para a informação chegar no slave irá demorar mais de 1 dia, uma vez que
>> tenho 350GB de archives no slave que não foram aplicados ainda. Ou seja, o
>> processo de WAL Sender envia o arquivo, mas o Slave leva muito tempo para
>> aplicar na base de dados.
>>
>> Aqui existe um detalhe, ela não demorará 1 dia para chegar no slave, isso
>> será o tempo aproximado para processar o arquivo, o tempo de envio deverá
>> ser curto.
>>
>> Apos finalizar o archive no master o envio para o slave e instantaneo.
>> Contudo notamos que para gerar um arquivo de 16MB no pg_xlog do master está
>> levando mais de 10 minutos. E temos operação massiva de inserção e
>> alteração, que não justificaria a demora para finalizar este archive.
>>
>> Para calcular isso terá que acompanhar o checkpoint que ocorre dentro da
>> base, inclusive, esse cluster está configurado com uma valor bem alto de
>> shared_buffer, então para ler essa memória e descarregar poderá levar mais
>> tempo que previsto. Ler esse link  [1]
>> O seu checkpoint_timeout está em 10 minutos, porém o
>> checkpoint_completion_target está 0.5, se esse parâmetro estiver com valor
>> default, como está comentado, e valor no comentário é 0.9, significa que
>> será feito uma descarga da memória para o disco de arquivos WAL a cada +-5
>> minutos (10 minutos * 0.5), se estiver configurado padrão, e +-9 minutos (
>> 10 minutos * 0.9), se configurado dessa forma. É importante intender como
>> funciona esse processo.
>>
>> Mas existe algum problema na slave ainda. Como está configurado seu
>> "recovery.conf"? Esse arquivo deveria ler os arquivos que chega
>> instantaneamente.
>>
>> [1] https://www.postgresql.org/docs/9.6/static/wal-configuration.html
>>
>> Att,
>>
>>
>>
>> Em 30 de agosto de 2017 14:31, Daniel Luiz da Silva <
>> daniel.si...@ipm.com.br> escreveu:
>>
>>>
>>>
>>> --
>>> *De: *"Marcelo Kruger" <marcelo.kru...@neoway.com.br>
>>> *Para: *"Comunidade PostgreSQL Brasileira" <
>>> pgbr-geral@listas.postgresql.org.br>
>>> *Envia

Re: [pgbr-geral] Lentidão na aplicação do Archive - Stream Replication

2017-08-30 Por tôpico Marcelo Kruger
Daniel, note que estamos recebendo um archive muito a frente do que estamos
aplicando.



12819 postgres  20   0 35.692g   3520   1876 S   9.0  0.0  73:08.54
postgres: wal receiver process   streaming 8E6/BF2EC000


40607 postgres  20   0 35.688g   5548   1412 S   4.7  0.0  17:49.45
postgres: checkpointer process


40604 postgres  20   0 35.686g   3160   1468 D   4.3  0.0  87:32.05
postgres: startup process   recovering 00010888005B

O processo de recovering esta levando muito tempo para processar um unico
archive (mais de 10 segundos).

Att,

Em 30 de agosto de 2017 16:03, Marcelo Kruger <marcelo.kru...@neoway.com.br>
escreveu:

> Daniel, quanto a questão do checkpoint_completion_target não havia me
> atentato. E desta forma justificaria o tempo de descarga dos dados em
> disco. O shared_buffer é elevado em nosso caso pois nosso processamento de
> dados exige tal configuração de memoria.
>
> Daniel, o arquivo de recovery.conf está da seguinte forma
>
> standby_mode   = 'on'
> primary_slot_name  = 'bdreplica01'
> primary_conninfo   = 'host=bdreplica00 port=5433 user=replication'
> trigger_file   = '/var/lib/pgsql/9.6/data/im_the_master'
>
> Att,
>
> Em 30 de agosto de 2017 15:49, Daniel Luiz da Silva <
> daniel.si...@ipm.com.br> escreveu:
>
>>
>>
>> --
>> *De: *"Marcelo Kruger" <marcelo.kru...@neoway.com.br>
>> *Para: *"Comunidade PostgreSQL Brasileira" <pgbr-geral@listas.postgresql.
>> org.br>
>> *Enviadas: *Quarta-feira, 30 de agosto de 2017 14:55:07
>> *Assunto: *Re: [pgbr-geral]Lentidão na aplicação do Archive -
>> Stream Replication
>>
>> Daniel, boa tarde.
>> Para a informação chegar no slave irá demorar mais de 1 dia, uma vez que
>> tenho 350GB de archives no slave que não foram aplicados ainda. Ou seja, o
>> processo de WAL Sender envia o arquivo, mas o Slave leva muito tempo para
>> aplicar na base de dados.
>>
>> Aqui existe um detalhe, ela não demorará 1 dia para chegar no slave, isso
>> será o tempo aproximado para processar o arquivo, o tempo de envio deverá
>> ser curto.
>>
>> Apos finalizar o archive no master o envio para o slave e instantaneo.
>> Contudo notamos que para gerar um arquivo de 16MB no pg_xlog do master está
>> levando mais de 10 minutos. E temos operação massiva de inserção e
>> alteração, que não justificaria a demora para finalizar este archive.
>>
>> Para calcular isso terá que acompanhar o checkpoint que ocorre dentro da
>> base, inclusive, esse cluster está configurado com uma valor bem alto de
>> shared_buffer, então para ler essa memória e descarregar poderá levar mais
>> tempo que previsto. Ler esse link  [1]
>> O seu checkpoint_timeout está em 10 minutos, porém o
>> checkpoint_completion_target está 0.5, se esse parâmetro estiver com valor
>> default, como está comentado, e valor no comentário é 0.9, significa que
>> será feito uma descarga da memória para o disco de arquivos WAL a cada +-5
>> minutos (10 minutos * 0.5), se estiver configurado padrão, e +-9 minutos (
>> 10 minutos * 0.9), se configurado dessa forma. É importante intender como
>> funciona esse processo.
>>
>> Mas existe algum problema na slave ainda. Como está configurado seu
>> "recovery.conf"? Esse arquivo deveria ler os arquivos que chega
>> instantaneamente.
>>
>> [1] https://www.postgresql.org/docs/9.6/static/wal-configuration.html
>>
>> Att,
>>
>>
>>
>> Em 30 de agosto de 2017 14:31, Daniel Luiz da Silva <
>> daniel.si...@ipm.com.br> escreveu:
>>
>>>
>>>
>>> --
>>> *De: *"Marcelo Kruger" <marcelo.kru...@neoway.com.br>
>>> *Para: *"Comunidade PostgreSQL Brasileira" <
>>> pgbr-geral@listas.postgresql.org.br>
>>> *Enviadas: *Quarta-feira, 30 de agosto de 2017 14:14:04
>>> *Assunto: *Re: [pgbr-geral]Lentidão na aplicação do Archive -
>>> Stream Replication
>>>
>>> Lucas, boa tarde.
>>> Não é utilizado Parallel Query no Slave.
>>>
>>> Att,
>>>
>>> Em 30 de agosto de 2017 14:07, Lucas Viecelli <lviecelli...@gmail.com>
>>> escreveu:
>>>
>>>>
>>>>> Hoje temos 1,6 dias de lag entre o archive da produção, e o archive da
>>>>> replica.
>>>>>
>>>>> Gostaria de apoio para resolver este problema de lentidão no momento
>>>>> do recovery destes archives
>>>>>
>>>>> 12819 postgres  20   0 35.692g   3

Re: [pgbr-geral] Lentidão na aplicação do Archive - Stream Replication

2017-08-30 Por tôpico Marcelo Kruger
Daniel, quanto a questão do checkpoint_completion_target não havia me
atentato. E desta forma justificaria o tempo de descarga dos dados em
disco. O shared_buffer é elevado em nosso caso pois nosso processamento de
dados exige tal configuração de memoria.

Daniel, o arquivo de recovery.conf está da seguinte forma

standby_mode   = 'on'
primary_slot_name  = 'bdreplica01'
primary_conninfo   = 'host=bdreplica00 port=5433 user=replication'
trigger_file   = '/var/lib/pgsql/9.6/data/im_the_master'

Att,

Em 30 de agosto de 2017 15:49, Daniel Luiz da Silva <daniel.si...@ipm.com.br
> escreveu:

>
>
> --
> *De: *"Marcelo Kruger" <marcelo.kru...@neoway.com.br>
> *Para: *"Comunidade PostgreSQL Brasileira" <pgbr-geral@listas.postgresql.
> org.br>
> *Enviadas: *Quarta-feira, 30 de agosto de 2017 14:55:07
> *Assunto: *Re: [pgbr-geral]Lentidão na aplicação do Archive -
> Stream Replication
>
> Daniel, boa tarde.
> Para a informação chegar no slave irá demorar mais de 1 dia, uma vez que
> tenho 350GB de archives no slave que não foram aplicados ainda. Ou seja, o
> processo de WAL Sender envia o arquivo, mas o Slave leva muito tempo para
> aplicar na base de dados.
>
> Aqui existe um detalhe, ela não demorará 1 dia para chegar no slave, isso
> será o tempo aproximado para processar o arquivo, o tempo de envio deverá
> ser curto.
>
> Apos finalizar o archive no master o envio para o slave e instantaneo.
> Contudo notamos que para gerar um arquivo de 16MB no pg_xlog do master está
> levando mais de 10 minutos. E temos operação massiva de inserção e
> alteração, que não justificaria a demora para finalizar este archive.
>
> Para calcular isso terá que acompanhar o checkpoint que ocorre dentro da
> base, inclusive, esse cluster está configurado com uma valor bem alto de
> shared_buffer, então para ler essa memória e descarregar poderá levar mais
> tempo que previsto. Ler esse link  [1]
> O seu checkpoint_timeout está em 10 minutos, porém o
> checkpoint_completion_target está 0.5, se esse parâmetro estiver com valor
> default, como está comentado, e valor no comentário é 0.9, significa que
> será feito uma descarga da memória para o disco de arquivos WAL a cada +-5
> minutos (10 minutos * 0.5), se estiver configurado padrão, e +-9 minutos (
> 10 minutos * 0.9), se configurado dessa forma. É importante intender como
> funciona esse processo.
>
> Mas existe algum problema na slave ainda. Como está configurado seu
> "recovery.conf"? Esse arquivo deveria ler os arquivos que chega
> instantaneamente.
>
> [1] https://www.postgresql.org/docs/9.6/static/wal-configuration.html
>
> Att,
>
>
>
> Em 30 de agosto de 2017 14:31, Daniel Luiz da Silva <
> daniel.si...@ipm.com.br> escreveu:
>
>>
>>
>> --
>> *De: *"Marcelo Kruger" <marcelo.kru...@neoway.com.br>
>> *Para: *"Comunidade PostgreSQL Brasileira" <pgbr-geral@listas.postgresql.
>> org.br>
>> *Enviadas: *Quarta-feira, 30 de agosto de 2017 14:14:04
>> *Assunto: *Re: [pgbr-geral]Lentidão na aplicação do Archive -
>> Stream Replication
>>
>> Lucas, boa tarde.
>> Não é utilizado Parallel Query no Slave.
>>
>> Att,
>>
>> Em 30 de agosto de 2017 14:07, Lucas Viecelli <lviecelli...@gmail.com>
>> escreveu:
>>
>>>
>>>> Hoje temos 1,6 dias de lag entre o archive da produção, e o archive da
>>>> replica.
>>>>
>>>> Gostaria de apoio para resolver este problema de lentidão no momento do
>>>> recovery destes archives
>>>>
>>>> 12819 postgres  20   0 35.692g   3552   1908 S   9.3  0.0  57:05.46
>>>> postgres: wal receiver process   streaming 8D8/A623D4B8
>>>>
>>>>
>>>> 40604 postgres  20   0 35.686g   3184   1500 D   4.7  0.0  76:29.52
>>>> postgres: startup process   recovering 000108860038
>>>>
>>>>
>>> Marcelo, você está usando o recurso de Parallel Query nessa banco Slave?
>>> Se sim, as consultas são demoradas?
>>> --
>>>
>>> Atenciosamente.
>>>
>>> *Lucas Viecelli*
>>>
>>> <http://www.leosoft.com.br/coopcred>
>>>
>>> ___
>>> pgbr-geral mailing list
>>> pgbr-geral@listas.postgresql.org.br
>>> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>>>
>>
>> Marcelo,
>>
>> Faz o seguinte teste, identifica um arquivo WAL gerado de

Re: [pgbr-geral] Lentidão na aplicação do Archive - Stream Replication

2017-08-30 Por tôpico Marcelo Kruger
Daniel, boa tarde.

Para a informação chegar no slave irá demorar mais de 1 dia, uma vez que
tenho 350GB de archives no slave que não foram aplicados ainda. Ou seja, o
processo de WAL Sender envia o arquivo, mas o Slave leva muito tempo para
aplicar na base de dados.

Apos finalizar o archive no master o envio para o slave e instantaneo.
Contudo notamos que para gerar um arquivo de 16MB no pg_xlog do master está
levando mais de 10 minutos. E temos operação massiva de inserção e
alteração, que não justificaria a demora para finalizar este archive.

Att,



Em 30 de agosto de 2017 14:31, Daniel Luiz da Silva <daniel.si...@ipm.com.br
> escreveu:

>
>
> --
> *De: *"Marcelo Kruger" <marcelo.kru...@neoway.com.br>
> *Para: *"Comunidade PostgreSQL Brasileira" <pgbr-geral@listas.postgresql.
> org.br>
> *Enviadas: *Quarta-feira, 30 de agosto de 2017 14:14:04
> *Assunto: *Re: [pgbr-geral]Lentidão na aplicação do Archive -
> Stream Replication
>
> Lucas, boa tarde.
> Não é utilizado Parallel Query no Slave.
>
> Att,
>
> Em 30 de agosto de 2017 14:07, Lucas Viecelli <lviecelli...@gmail.com>
> escreveu:
>
>>
>>> Hoje temos 1,6 dias de lag entre o archive da produção, e o archive da
>>> replica.
>>>
>>> Gostaria de apoio para resolver este problema de lentidão no momento do
>>> recovery destes archives
>>>
>>> 12819 postgres  20   0 35.692g   3552   1908 S   9.3  0.0  57:05.46
>>> postgres: wal receiver process   streaming 8D8/A623D4B8
>>>
>>>
>>> 40604 postgres  20   0 35.686g   3184   1500 D   4.7  0.0  76:29.52
>>> postgres: startup process   recovering 000108860038
>>>
>>>
>> Marcelo, você está usando o recurso de Parallel Query nessa banco Slave?
>> Se sim, as consultas são demoradas?
>> --
>>
>> Atenciosamente.
>>
>> *Lucas Viecelli*
>>
>> <http://www.leosoft.com.br/coopcred>
>>
>> ___
>> pgbr-geral mailing list
>> pgbr-geral@listas.postgresql.org.br
>> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>>
>
> Marcelo,
>
> Faz o seguinte teste, identifica um arquivo WAL gerado dentro da pg_xlog/
> no server master agora, e acompanha quanto tempo esse arquivo demorar para
> chegar no slave. Além disso, faz uma consulta em alguma tabela que está no
> servidor master, recupera algumas linhas, e verifica quanto tempo +- demora
> para chegar essa informação no slave.
>
> Obrigado.
> ___
> 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] Lentidão na aplicação do Archive - Stream Replication

2017-08-30 Por tôpico Marcelo Kruger
Lucas, boa tarde.

Não é utilizado Parallel Query no Slave.

Att,

Em 30 de agosto de 2017 14:07, Lucas Viecelli <lviecelli...@gmail.com>
escreveu:

>
>> Hoje temos 1,6 dias de lag entre o archive da produção, e o archive da
>> replica.
>>
>> Gostaria de apoio para resolver este problema de lentidão no momento do
>> recovery destes archives
>>
>> 12819 postgres  20   0 35.692g   3552   1908 S   9.3  0.0  57:05.46
>> postgres: wal receiver process   streaming 8D8/A623D4B8
>>
>>
>> 40604 postgres  20   0 35.686g   3184   1500 D   4.7  0.0  76:29.52
>> postgres: startup process   recovering 000108860038
>>
>>
> Marcelo, você está usando o recurso de Parallel Query nessa banco Slave?
> Se sim, as consultas são demoradas?
> --
>
> Atenciosamente.
>
> *Lucas Viecelli*
>
> <http://www.leosoft.com.br/coopcred>
>
> ___
> 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] Lentidão na aplicação do Archive - Stream Replication

2017-08-30 Por tôpico Marcelo Kruger
Boa tarde Daniel,

O tempo para chegar um arquivo do master para a replica é de milesegundos.
O envio do archive quando gravado no pg_xlog é enviado para a replica
instantaneamente.

O arquivo gerado no pg_xlog da master é recebido na replica e visto da
seguinte forma.

12819 postgres  20   0 35,692g   3572   1928 S   2,7  0,0  65:16.78
postgres: wal receiver process   streaming 8DF/7DD

Quanto ao tempo de atraso ele pode ser calculado da seguinte forma.

SELECT (CASE WHEN pg_last_xlog_receive_location() =
pg_last_xlog_replay_location()
THEN 0
ELSE EXTRACT (EPOCH FROM now() -
pg_last_xact_replay_timestamp())
END) AS log_delay;

Já a movimentação para o PG_XLOG é feita pelo proprio stream replication,
não havendo nenhuma configuração. O trafego destes arquivo para a replica é
feito atravez da configuração recovery.conf.

standby_mode   = 'on'
primary_slot_name  = 'slot'
primary_conninfo   = 'host=hostname port=5433 user=replication
trigger_file   = '/var/lib/pgsql/9.6/data/im_the_master

Att,

Em 30 de agosto de 2017 13:54, Daniel Luiz da Silva <daniel.si...@ipm.com.br
> escreveu:

>
> --
> *De: *"Marcelo Kruger" <marcelo.kru...@neoway.com.br>
> *Para: *pgbr-geral@listas.postgresql.org.br
> *Enviadas: *Quarta-feira, 30 de agosto de 2017 12:09:56
> *Assunto: *[pgbr-geral] Lentidão na aplicação do Archive - Stream
> Replication
>
> Boa tarde a todos,
> Possuimos uma arquitetura na nuvem da Azure com duas maquinas de banco com
> a versão 9.6 do Postgres. Esta estrutura trabalha com uma maquina sendo o
> banco principal, e a outra sendo a replica deste banco. A replicação é de
> forma assincrona e via Stream Replication, utilizando um Slot para
> replicação.
>
> Ambas as maquinas possuem os mesmos recursos de hardware, e as mesmas
> otimizações em SO
>
>
> Disco: 17TB para database, sendo 9TB consumido. Disco é um RAID 0 de
> 17SSDs de 1TB
> 144 GB de memoria
> 20 nucleos de processamento
>
> A maquina principal tem otima performance, enviando os archives do pg_xlog
> em uma rede de banda maxima de 1,5GB/s. Identificamos que não existe
> problema e lentidão no envio e recebimento dos arquivos na replica.
> Entretando quando o postgres replicado inicia o processo de recovery destes
> archives demora um tempo muito elevado, estando em media 15 segundos para
> processar um archive. Isso esta causando uma diferença de dados entre os
> bancos muito elevada, fazendo desta forma que a replicação nunca finalize o
> processamento dos archives.
>
> Hoje temos 1,6 dias de lag entre o archive da produção, e o archive da
> replica.
>
> Gostaria de apoio para resolver este problema de lentidão no momento do
> recovery destes archives
>
> 12819 postgres  20   0 35.692g   3552   1908 S   9.3  0.0  57:05.46
> postgres: wal receiver process   streaming 8D8/A623D4B8
>
>
> 40604 postgres  20   0 35.686g   3184   1500 D   4.7  0.0  76:29.52
> postgres: startup process   recovering 000108860038
>
> Segue abaixo configuração do postgresql.conf da replica.
>
> listen_addresses = '*'
> port = 5433
> max_connections = 2000
> superuser_reserved_connections = 3
> shared_buffers = 35257MB
> work_mem = 18051kB
> maintenance_work_mem = 8GB
> #autovacuum_work_mem = 4GB
> max_stack_depth = 5MB
> dynamic_shared_memory_type = posix
> vacuum_cost_delay = 20
> vacuum_cost_limit = 200
> bgwriter_delay = 10ms
> bgwriter_lru_maxpages = 700
> bgwriter_lru_multiplier = 2.0
> fsync = off
> synchronous_commit = off
> full_page_writes = off
> wal_buffers = 16MB
> wal_writer_delay = 1ms
> checkpoint_timeout = 10min
> max_wal_size = 8GB
> min_wal_size = 4GB
> #checkpoint_completion_target = 0.9
> effective_cache_size = 105772MB
> default_statistics_target = 500
> log_destination = 'csvlog'
> logging_collector = off
> log_directory = 'pg_log'
> log_filename = 'postgresql-%w.log'
> log_file_mode = 0640
> log_truncate_on_rotation = on
> log_rotation_age = 1d
> log_rotation_size = 600MB
> log_min_duration_statement = 0
> log_checkpoints = on
> log_connections = off
> log_disconnections = off
> log_duration = on
> log_line_prefix = '%t [%p]: [%l-1] db=%d,user=%u,app=%a,client=%h'
> log_lock_waits = on
> log_timezone = 'Brazil/East'
> autovacuum = on
> log_autovacuum_min_duration = -1
> autovacuum_max_workers = 8
> autovacuum_naptime = 30s
> autovacuum_vacuum_threshold = 20
> autovacuum_analyze_threshold = 20
> autovacuum_vacuum_scale_factor = 0.2
> autovacuum_analyze_scale_factor = 0.1
> autovacuum_vacuum_cost_delay = -1
> datestyle = 'iso, mdy'
> timezone = 'Brazil/East'
> lc_messages = 'en_US.UTF-8'
> lc_monetary = 'en_US.UTF-8'
> lc

[pgbr-geral] Lentidão na aplicação do Archive - Stream Replication

2017-08-30 Por tôpico Marcelo Kruger
Boa tarde a todos,

Possuimos uma arquitetura na nuvem da Azure com duas maquinas de banco com
a versão 9.6 do Postgres. Esta estrutura trabalha com uma maquina sendo o
banco principal, e a outra sendo a replica deste banco. A replicação é de
forma assincrona e via Stream Replication, utilizando um Slot para
replicação.

Ambas as maquinas possuem os mesmos recursos de hardware, e as mesmas
otimizações em SO


Disco: 17TB para database, sendo 9TB consumido. Disco é um RAID 0 de 17SSDs
de 1TB
144 GB de memoria
20 nucleos de processamento

A maquina principal tem otima performance, enviando os archives do pg_xlog
em uma rede de banda maxima de 1,5GB/s. Identificamos que não existe
problema e lentidão no envio e recebimento dos arquivos na replica.
Entretando quando o postgres replicado inicia o processo de recovery destes
archives demora um tempo muito elevado, estando em media 15 segundos para
processar um archive. Isso esta causando uma diferença de dados entre os
bancos muito elevada, fazendo desta forma que a replicação nunca finalize o
processamento dos archives.

Hoje temos 1,6 dias de lag entre o archive da produção, e o archive da
replica.

Gostaria de apoio para resolver este problema de lentidão no momento do
recovery destes archives

12819 postgres  20   0 35.692g   3552   1908 S   9.3  0.0  57:05.46
postgres: wal receiver process   streaming 8D8/A623D4B8


40604 postgres  20   0 35.686g   3184   1500 D   4.7  0.0  76:29.52
postgres: startup process   recovering 000108860038

Segue abaixo configuração do postgresql.conf da replica.

listen_addresses = '*'
port = 5433
max_connections = 2000
superuser_reserved_connections = 3
shared_buffers = 35257MB
work_mem = 18051kB
maintenance_work_mem = 8GB
#autovacuum_work_mem = 4GB
max_stack_depth = 5MB
dynamic_shared_memory_type = posix
vacuum_cost_delay = 20
vacuum_cost_limit = 200
bgwriter_delay = 10ms
bgwriter_lru_maxpages = 700
bgwriter_lru_multiplier = 2.0
fsync = off
synchronous_commit = off
full_page_writes = off
wal_buffers = 16MB
wal_writer_delay = 1ms
checkpoint_timeout = 10min
max_wal_size = 8GB
min_wal_size = 4GB
#checkpoint_completion_target = 0.9
effective_cache_size = 105772MB
default_statistics_target = 500
log_destination = 'csvlog'
logging_collector = off
log_directory = 'pg_log'
log_filename = 'postgresql-%w.log'
log_file_mode = 0640
log_truncate_on_rotation = on
log_rotation_age = 1d
log_rotation_size = 600MB
log_min_duration_statement = 0
log_checkpoints = on
log_connections = off
log_disconnections = off
log_duration = on
log_line_prefix = '%t [%p]: [%l-1] db=%d,user=%u,app=%a,client=%h'
log_lock_waits = on
log_timezone = 'Brazil/East'
autovacuum = on
log_autovacuum_min_duration = -1
autovacuum_max_workers = 8
autovacuum_naptime = 30s
autovacuum_vacuum_threshold = 20
autovacuum_analyze_threshold = 20
autovacuum_vacuum_scale_factor = 0.2
autovacuum_analyze_scale_factor = 0.1
autovacuum_vacuum_cost_delay = -1
datestyle = 'iso, mdy'
timezone = 'Brazil/East'
lc_messages = 'en_US.UTF-8'
lc_monetary = 'en_US.UTF-8'
lc_numeric = 'en_US.UTF-8'
lc_time = 'en_US.UTF-8'
default_text_search_config = 'pg_catalog.english'
max_locks_per_transaction = 256
pgpool.pg_ctl = '/usr/pgsql-9.6/bin/pg_ctl'
huge_pages=on
hot_standby = on
hot_standby_feedback = off
wal_receiver_timeout = 0


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

Re: [pgbr-geral] DBF ==> Postgresql (dbf to postgresql)

2017-07-02 Por tôpico Marcelo Costa
Hi all

Eu faço isto com o Pentaho Data Integrator (PDI/Kettle) é rápido e prático.



Marcelo Costa
-
http://www.infoq.com/br/author/Marcelo-Costa



2017-06-28 18:34 GMT-03:00 Leandro Guimarães Faria Corcete DUTRA <
l...@dutras.org>:

> Le mercredi 28 juin 2017 à 15:58 -0300, André Ormenese a écrit :
> >
> > No Freebsd já utilizei o pgdbf (Instalei via ports). Funcionou
> > perfeitamente. No Linux não sei se existe.
>
> l@dcf-350092:~$ apt search pgdbf
> En train de trier... Fait
> Recherche en texte intégral... Fait
> pgdbf/testing,unstable,now 0.6.2-1.1+b2 amd64  [installé]
>   converter of XBase / FoxPro tables to PostgreSQL
>
> l@dcf-350092:~$
>
> É raro algo não existir em GNU/Linux, e geralmente está empacotado para
> Debian e (ou) derivados.
>
>
> --
> 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
>
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

[pgbr-geral] Ajuda com o Query Planner

2017-06-22 Por tôpico Marcelo Costa
Pessoal,

Alguém que saque de query planner pra ajudar?

Quero entender pq ele roda um planner global ao invés de parciais.

Minha query:

select count(*) from table1 where time > (select time from table2 where X =
Y)

O PG está fazendo uma seqscan na table1 mesmo que a coluna time seja uma
coluna indexada.

Mas ele usa o indice se eu faço:

select count(*) from table1 where time > 1498083552

Então meu problema é que, como ele não sabe o valor de filtragem de time,
na duvida manda fazer seqscan.

Pergunta:

Existe alguma forma de mandar ele rodar o query planner por etapas?

Primeiro pra subquery e depois pra query principal?

Obrigado

Marcelo Costa
-
http://www.infoq.com/br/author/Marcelo-Costa
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Re: [pgbr-geral] Conexões inativas não são liberadas

2016-08-09 Por tôpico Marcelo Zoel
Olá Glauco, eu cheguei a dar uma lida a respeito. Esta é a solução indicada
para este tipo de situação?

A sugestão dada pelo Raphael funcionou para meu caso e estou usando
provisóriamente, de qualquer maneira vamos tentar resolver o problema da
aplicação.

Mas obrigado por esta dica vou fazer uns testes com as ferramentas.

Abs,

Marcelo

Em 8 de agosto de 2016 08:41, Glauco Torres <torres.gla...@gmail.com>
escreveu:

>
>>
>> O Postgre acusa que não há mais conexões disponíveis após algum tempo de
>> uso do sistema, No momento não tenho outra solução a não ser derrubar o
>> banco e iniciar novamente.
>>
>> Acredito que o problema esteja relacionado a forma como o sistema está
>> interagindo com o banco, porém não conseguirei obter resposta do
>> desenvolvedor para uma possível solução em curto prazo.
>>
>> Reparei que as conexões estão em IDLE e minha expectativa é que o Postgre
>> derrubasse essas conexões por inatividade após algum período de tempo
>> determinado em configuração. Fiz algumas pesquisas e fiquei surpresa que
>> ele não tem nenhum suporte nativo para esta função.
>>
>> Minha pergunta é como posso implementar isso da melhor forma e sem
>> precisar mexer muito na minha infraestrutura e a aplicação.
>>
>> minha versão é a 9.3 rodando em RHEL 6.8.
>>
>> Agradeço a todos pela paciência.
>>
>>
>> Você esta utilizando algum poool de conexão? (pgPool ou pgBouncer)
>
> Se não tiver, estude e dê preferência ao pgBouncer se o foco for somente
> pool de conexões.
>
> -
> Glauco Torres
>
>
> ___
> 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] Conexões inativas não são liberadas

2016-08-07 Por tôpico Marcelo Zoel
Sim claro, é esta nossa expectativa. Só queria uma solução temporária para
ganhar tempo até a solução da aplicação ocorrer.

Em 7 de agosto de 2016 17:14, Osvaldo Kussama <osvaldo.kuss...@gmail.com>
escreveu:

> Em 07/08/16, Marcelo Zoel<marcelo.z...@gmail.com> escreveu:
> > Boa tarde a todos,
> >
> > sou novato no PostgreSQL e gostaria de pedir ajuda nesta lista para
> > solucionar um problema que está ocorrendo com um sistema desenvolvido por
> > terceiros para minha empresa.
> >
> > O Postgre acusa que não há mais conexões disponíveis após algum tempo de
> > uso do sistema, No momento não tenho outra solução a não ser derrubar o
> > banco e iniciar novamente.
> >
> > Acredito que o problema esteja relacionado a forma como o sistema está
> > interagindo com o banco, porém não conseguirei obter resposta do
> > desenvolvedor para uma possível solução em curto prazo.
> >
> > Reparei que as conexões estão em IDLE e minha expectativa é que o Postgre
> > derrubasse essas conexões por inatividade após algum período de tempo
> > determinado em configuração. Fiz algumas pesquisas e fiquei surpresa que
> > ele não tem nenhum suporte nativo para esta função.
> >
> > Minha pergunta é como posso implementar isso da melhor forma e sem
> precisar
> > mexer muito na minha infraestrutura e a aplicação.
> >
> > minha versão é a 9.3 rodando em RHEL 6.8.
> >
> > Agradeço a todos pela paciência.
> >
> > Marcelo
> >
>
> Lembrando que o ideal é que a aplicação fosse corrigida e fechasse a
> conexão ao final da utilização.
>
> 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] Conexões inativas não são liberadas

2016-08-07 Por tôpico Marcelo Zoel
Vou tentar isso amanhã. Obrigado Raphael.

Em 7 de agosto de 2016 15:17, Raphael Coutinho <rcoutosi...@gmail.com>
escreveu:

> Raphael Coutinho
>
> Em 07/08/2016 3:15 PM, "Marcelo Zoel" <marcelo.z...@gmail.com> escreveu:
> >
> > Obrigado pela resposta Raphael.
> >
> > Exatamente o que você faz para derrubar as conexões, executa alguma
> query no banco? Seria algo deste tipo?
> >
> > SELECT pg_terminate_backend(pid) FROM pg_stat_activity WHERE datname =
> 'regress' AND pid <> pg_backend_pid() AND state = 'idle' AND state_change <
> current_timestamp - INTERVAL '5' MINUTE;
> >
> > Acredito que este método seja uma boa solução de contorno.
>
> Exatamente Marcelo
> >
> > Em 7 de agosto de 2016 14:50, Raphael Coutinho <rcoutosi...@gmail.com>
> escreveu:
> >>
> >> Raphael Coutinho
> >>
> >> Em 07/08/2016 2:44 PM, "Marcelo Zoel" <marcelo.z...@gmail.com>
> escreveu:
> >> >
> >> > Boa tarde a todos,
> >> >
> >> > sou novato no PostgreSQL e gostaria de pedir ajuda nesta lista para
> solucionar um problema que está ocorrendo com um sistema desenvolvido por
> terceiros para minha empresa.
> >> >
> >> > O Postgre acusa que não há mais conexões disponíveis após algum tempo
> de uso do sistema, No momento não tenho outra solução a não ser derrubar o
> banco e iniciar novamente.
> >> >
> >> > Acredito que o problema esteja relacionado a forma como o sistema
> está interagindo com o banco, porém não conseguirei obter resposta do
> desenvolvedor para uma possível solução em curto prazo.
> >> >
> >> > Reparei que as conexões estão em IDLE e minha expectativa é que o
> Postgre derrubasse essas conexões por inatividade após algum período de
> tempo determinado em configuração. Fiz algumas pesquisas e fiquei surpresa
> que ele não tem nenhum suporte nativo para esta função.
> >> >
> >> > Minha pergunta é como posso implementar isso da melhor forma e sem
> precisar mexer muito na minha infraestrutura e a aplicação.
> >> >
> >> > minha versão é a 9.3 rodando em RHEL 6.8.
> >> >
> >> > Agradeço a todos pela paciência.
> >> >
> >> > Marcelo
> >>
> >> Olá Marcelo,
> >>
> >> Também estava com esse problema, o que fiz foi um shell para eliminar
> conexões com status IDLE a X tempo.
> >>
> >> Utilizei a view pg_settings para consultar os referidos processos.
> >>
> >> Abraço,
> >> Raphael
> >> >
> >> > ___
> >> > 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
>
>
> ___
> 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] Conexões inativas não são liberadas

2016-08-07 Por tôpico Marcelo Zoel
Obrigado pela resposta Raphael.

Exatamente o que você faz para derrubar as conexões, executa alguma query
no banco? Seria algo deste tipo?

SELECT pg_terminate_backend(pid)
FROM pg_stat_activity
WHERE datname = 'regress'
  AND pid <> pg_backend_pid()
  AND state = 'idle'
  AND state_change < current_timestamp - INTERVAL '5' MINUTE;

Acredito que este método seja uma boa solução de contorno.

Em 7 de agosto de 2016 14:50, Raphael Coutinho <rcoutosi...@gmail.com>
escreveu:

> Raphael Coutinho
>
> Em 07/08/2016 2:44 PM, "Marcelo Zoel" <marcelo.z...@gmail.com> escreveu:
> >
> > Boa tarde a todos,
> >
> > sou novato no PostgreSQL e gostaria de pedir ajuda nesta lista para
> solucionar um problema que está ocorrendo com um sistema desenvolvido por
> terceiros para minha empresa.
> >
> > O Postgre acusa que não há mais conexões disponíveis após algum tempo de
> uso do sistema, No momento não tenho outra solução a não ser derrubar o
> banco e iniciar novamente.
> >
> > Acredito que o problema esteja relacionado a forma como o sistema está
> interagindo com o banco, porém não conseguirei obter resposta do
> desenvolvedor para uma possível solução em curto prazo.
> >
> > Reparei que as conexões estão em IDLE e minha expectativa é que o
> Postgre derrubasse essas conexões por inatividade após algum período de
> tempo determinado em configuração. Fiz algumas pesquisas e fiquei surpresa
> que ele não tem nenhum suporte nativo para esta função.
> >
> > Minha pergunta é como posso implementar isso da melhor forma e sem
> precisar mexer muito na minha infraestrutura e a aplicação.
> >
> > minha versão é a 9.3 rodando em RHEL 6.8.
> >
> > Agradeço a todos pela paciência.
> >
> > Marcelo
>
> Olá Marcelo,
>
> Também estava com esse problema, o que fiz foi um shell para eliminar
> conexões com status IDLE a X tempo.
>
> Utilizei a view pg_settings para consultar os referidos processos.
>
> Abraço,
> Raphael
> >
> > ___
> > 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

[pgbr-geral] Conexões inativas não são liberadas

2016-08-07 Por tôpico Marcelo Zoel
Boa tarde a todos,

sou novato no PostgreSQL e gostaria de pedir ajuda nesta lista para
solucionar um problema que está ocorrendo com um sistema desenvolvido por
terceiros para minha empresa.

O Postgre acusa que não há mais conexões disponíveis após algum tempo de
uso do sistema, No momento não tenho outra solução a não ser derrubar o
banco e iniciar novamente.

Acredito que o problema esteja relacionado a forma como o sistema está
interagindo com o banco, porém não conseguirei obter resposta do
desenvolvedor para uma possível solução em curto prazo.

Reparei que as conexões estão em IDLE e minha expectativa é que o Postgre
derrubasse essas conexões por inatividade após algum período de tempo
determinado em configuração. Fiz algumas pesquisas e fiquei surpresa que
ele não tem nenhum suporte nativo para esta função.

Minha pergunta é como posso implementar isso da melhor forma e sem precisar
mexer muito na minha infraestrutura e a aplicação.

minha versão é a 9.3 rodando em RHEL 6.8.

Agradeço a todos pela paciência.

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

Re: [pgbr-geral] Porque o UBER trocou o PostgreSQL para o MySQL

2016-07-27 Por tôpico Marcelo Maia
dahora

Att,

Marcelo Maia

Em 27 de julho de 2016 08:51, Flavio Henrique Araque Gurgel <
fha...@gmail.com> escreveu:

> > Segue link com as informações:
> >
> > https://eng.uber.com/mysql-migration/
>
> Pra quem puder, sigam as listas internacionais onde o assunto é bastante
> destrinchado desde o momento da publicação:
> https://www.postgresql.org/list/
>
> Convém notar que alguns pontos levantados são legítimos, outros são
> discutíveis e outros são pura besteira ou, simplesmente, má engenharia.
>
> A decisão lá foi puramente de uma nova liderança que chegou na empresa e
> decidiu que era melhor pular pro MySQL. É apenas um chute, mas acho que
> aí tem dedo da Oracle pra abraçar um contratinho logo logo, senão eles
> teriam partido pra MariaDB ou Cassandra.
>
> Sinceramente, eu os desejo muito boa sorte. Toda escolha em tecnologia
> tem pontos altos e baixos.
>
> []s
> Flavio Gurgel
> ___
> 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] Lentidão será que é indice?

2015-08-12 Por tôpico Marcelo Silva
Boa tarde pessoal,

Estou tentando resolver um problema de lentidão no meu servidor, mas não estou 
tendo exito,

Cenario:

Cloud Locaweb com Linux Debian 8, HD 100GB, 32GB memoria
Apache2
PHP5
PostgresSQL 9.4

Já tuneir o PHP e Apache e Postgres

O PostgresSQL persistem em ficar no TOP da lista de processos, já revisei o 
banco a procura de algum indice faltando, mas no meu ver está tudo OK

Meu postgressql.conf mudei essas linha


default_statistics_target = 100 # pgtune wizard 2015-04-23
maintenance_work_mem = 1GB # pgtune wizard 2015-04-23
constraint_exclusion = on # pgtune wizard 2015-04-23
checkpoint_completion_target = 0.9 # pgtune wizard 2015-04-23
effective_cache_size = 22GB # pgtune wizard 2015-04-23
work_mem = 192MB # pgtune wizard 2015-04-23
wal_buffers = 16MB # pgtune wizard 2015-04-23
checkpoint_segments = 32 # pgtune wizard 2015-04-23
shared_buffers = 2560MB # pgtune wizard 2015-04-23
max_connections = 2000 # pgtune wizard 2015-04-23

Bem como não sou DBA, estou na tentativa e erro, rsrsrs
Se alguem puder dar umas dicas, fico muito agradecido, rssrs




Grato,

Marcelo da Silva
-
Skype: marc...@ig.com.br
Fixo: (11) 2962-7390
Tim: (11) 9 5250-1407 – Whatsapp
Vivo: (11) 9 9693-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] Nao instalou o Template0

2015-08-06 Por tôpico Marcelo Silva

Em 06/08/2015 14:22, Euler Taveira eu...@timbira.com.br escreveu:

 On 06-08-2015 14:08, Marcelo Silva wrote:
  Pessoal, instalei o PG 9.1 no meu linux mas ele nao criou o template0
  então não consigo criar um bando com UTF8
  Como resolver?
 
 9.1.oque? Acho improvável já que o initdb iria falhar. Provavelmente 
 alguém o apagou (?) após o initdb.

 O template1 ainda existe? Caso exista:

 CREATE DATABASE template0 TEMPLATE = template1;
 UPDATE pg_database set datistemplate = true WHERE datname = 'template0';

Fui tentar criar o template0 ele disse que já tem,  mas não lista no pgadmin3, 
estranho.  Então criei o banco usando o template0 manualmente e aceitou. 

Obrigado Euler


 Como você não detalhou o seu ambiente (ex.: um \l) pode ser que alguma 
 coisa relativa a codificações não fiquem exatamente como antes.

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


[pgbr-geral] PGCli – Autopreenchimento de comandos e destaques no PostgreSQL

2015-08-06 Por tôpico Marcelo Costa
PGCli http://pgcli.com/index é uma interface de linha de comando
desenvolvida por Amjith Ramanujam https://github.com/amjith com suporte a
autopreenchimento de comandos e destaques (highlighting) para o banco de
dados PostgreSQL.

PGCli se propõe a ser visualmente mais fácil de trabalhar exibindo
destaques (highlighting) para a notação SQL conforme for digitando os
comandos no console.

http://www.infoq.com/br/news/2015/08/pgcli-postgresql


Marcelo Costa
-
http://www.infoq.com/br/author/Marcelo-Costa
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


[pgbr-geral] Nao instalou o Template0

2015-08-06 Por tôpico Marcelo Silva
Pessoal, instalei o PG 9.1 no meu linux mas ele nao criou o template0 então não 
consigo criar um bando com UTF8

Como resolver?


Grato,

Marcelo da Silva
-
Skype: marc...@ig.com.br
Fixo: (11) 2962-7390
Tim: (11) 9 5250-1407 – Whatsapp
Vivo: (11) 9 9693-4251___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


[pgbr-geral] Habilitar acesso remoto e segurança

2015-04-07 Por tôpico Marcelo Moacir Florindo
Bom dia pessoal,
O serviço de hospedagem do cliente não habilita o acesso remoto do
postgres, devido a segurança, isto procede?
Vários serviços de hospedagens, grandes, habilitam esta funcionalidade.

O problema é que eu preciso habilitar o acesso remoto para poder trabalhar
com ferramentas locais e claro, é muito mais tranquilo trabalhar local e
depois sincronizar a base

-- 
**
*Marcelo Moacir Florindo*
*Analista/Desenvolvedor*
*http://www.bbfweb.com.br http://www.bbfweb.com.br*
*skype: marcelo.moacir.florindo*
**
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Habilitar acesso remoto e segurança

2015-04-07 Por tôpico Marcelo Moacir Florindo
Mas Matheus, o que eu preciso saber é se realmente tem este problema que
relatam, pois muitos serviços de hospedagem trabalham com liberação do
acesso remoto...

Em 7 de abril de 2015 08:27, Matheus de Oliveira matioli.math...@gmail.com
escreveu:


 2015-04-07 8:25 GMT-03:00 Marcelo Moacir Florindo 
 marceloflori...@gmail.com:

 O problema é que eu preciso habilitar o acesso remoto para poder
 trabalhar com ferramentas locais e claro, é muito mais tranquilo trabalhar
 local e depois sincronizar a base


 Você tem acesso SSH ao servidor? Se tiver você pode simplesmente
 configurar um túnel SSH.

 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




-- 
**
*Marcelo Moacir Florindo*
*Analista/Desenvolvedor*
*http://www.bbfweb.com.br http://www.bbfweb.com.br*
*skype: marcelo.moacir.florindo*
**
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Habilitar acesso remoto e segurança

2015-04-07 Por tôpico Marcelo Moacir Florindo
Perguntei isto porque várias empresas de hospedagens liberam... Pois
desenvolver aqui e ficar enviando para o servidor para testar. não tem
condições.


Em 7 de abril de 2015 09:57, Glauco Torres torres.gla...@gmail.com
escreveu:



 Mas Matheus, o que eu preciso saber é se realmente tem este problema que
 relatam, pois muitos serviços de hospedagem trabalham com liberação do
 acesso remoto...



 Além do ssh-tunnel, você pode sugerir que eles façam um NAT somente para o
 seu IP, claro dai você vai ter que ter um IP fixo.

 Como o Matheus já falou fazer um NAT para escancarado para a internet é
 arriscado mesmo, mais VPN dependendo do modo que é feito é tão perigoso
 quanto.

 Att Glauco




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




-- 
**
*Marcelo Moacir Florindo*
*Analista/Desenvolvedor*
*http://www.bbfweb.com.br http://www.bbfweb.com.br*
*skype: marcelo.moacir.florindo*
**
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


[pgbr-geral] Postgres Embarcado- Existe?

2015-04-06 Por tôpico Marcelo Silva
Pessoal, existe postgres embarcado?
Ou uma versão de instalação sem intervenção do usuario, mas levando em conta 
que já pode existir postgres na máquina.

Gostaria de distribuir algumas aplicações simples, porem com um banco de dados 
robusto.

Pensei em usar o SQLite só pra localhost, mas como uso Posgres nas minhas 
aplicações em rede, gostaria de manter o padrão.


Marcelo Silva
---
Skype: marc...@ig.com.br
Fixo: (11) 2962-7390
Tim: (11) 9 5250-1407 – ZapZap
Vivo: (11) 9 9693-4251

MVSoftware – www.mvsoftware.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] Sistema financeiro em PostgreSQL

2015-03-20 Por tôpico Marcelo Silva


From: Carlos Antônio Pereira (VidaUTI) 
Sent: Friday, March 20, 2015 10:37 AM
To: Comunidade PostgreSQL Brasileira 
Subject: [pgbr-geral] Sistema financeiro em PostgreSQL

Bom dia, senhores.

Alguém conhece algum Sistema Financeiro (Contas a pagar e receber, etc) que use 
o PostgreSQL como base de dados?

Att Carlos Antônio Pereira


Não sei do que precisa, mas a titulo de informação
Eu tenho um ERP para segurança do trabalho com o financeiro, tudo em Delphi e 
Postgres

Marcelo Silva
Skype: marc...@ig.com.br



___
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] Consulta lenta

2015-03-13 Por tôpico Marcelo Silva
Olha, vou te atazanar neste assunto 
Essa cultura que vem de aplicações Desktop, lá dos primordios dos DBFs onde se 
usavam TTables, cultura muito usada no Clipper também.
Entendo que é muito bom você trabalhar com registros em Cache, mas hoje em dia 
com o numero de informações que trabalhamos não é viável.
Você não só prejudica o usuário da maquina que quer todos esses registros, como 
toda a rede.
Imagino que você deve estar usando Query.Filter, é rápido quando o grid já está 
carregado, mas com o tempo sua aplicação vai começar a travar legal.
Eu já tive este problema com usuários que queriam trabalhar com esse monte de 
registros abertos, mas resolvi encaram de frente e mudar essa política.
Hoje meus Grids, trazem os 50 ultimos registros, e a tela de pesquisa dá a 
opção pro cara trazer os registros conforme precisa, mas nesta pesquisa ele 
pode trazer 1 ou todos os registros... mas aí ele já sabe que se puxar todos os 
sistema vai ficar mais lento, ou seja transferi essa responsabilidade pra ele.
De inicio como trago somente os 50 ultimos em todas as maquinas, o servidor não 
sobrecarrega nem a rede.
Com o tempo o usuário acaba aprendendo a trabalhar com menos registros e nem 
sente falta dos famigerados (todos registros).
Ou seja, a opção está lá, mas ele usa quando quer.
Sinceramente, ainda não consegui encontrar uma boa explicação (ou argumento) 
para se trabalhar com tantos registros assim.

A questão de trazer registros conforme um filtro?
Um select resolve isso tranquilamente e você trabalha com dados em tempo 
real, não corre o risco de informações obsoletas.

Outra coisa que estou estudando é trabalhar como o facebook quando carrega os 
posts, conforme o cara vai chegando proximo dos ultimos registros vou trazendo 
mais.
Mas devemos lembrar que o limite não está somente no servidor e rede, mas na 
maquina local, pois quando você traz essas informações e não cabe na memoria 
ele passa a fazer uso da memoria virtual (no disco) ai não tem jeito, fica 
lento mesmo.

Marcelo Silva




From: Junior Miranda 
Sent: Friday, March 13, 2015 1:47 PM
To: Comunidade PostgreSQL Brasileira 
Subject: Re: [pgbr-geral] Consulta lenta

Tentei fazer isso, é uma mudança de cultura e não foi bem recebida... outros 
bancos, como firebird, essa lentidão não é tão acentuada... Alguma sugestão 
dentro deste cenário??

Júnior Miranda 
Analista de Sistemas
Especializando em Sistemas Computacionais
E-mail: flmirandajun...@gmail.com
Tel.: (75) 9191-1678/ 34143042/ 34143149/ 34143020


Em 13 de março de 2015 13:43, Vinicius Santos vinicius.santos.li...@gmail.com 
escreveu:

  Porque não força o usuário a fazer o filtro antes? Abra a tabela depois que 
tiver o filtro.


  Em 13 de março de 2015 13:34, Junior Miranda flmirandajun...@gmail.com 
escreveu: 


O usuário visualiza todos num grid e a partir dai realiza os filtros que 
desejar.


Júnior Miranda 
Analista de Sistemas
Especializando em Sistemas Computacionais
E-mail: flmirandajun...@gmail.com
Tel.: (75) 9191-1678/ 34143042/ 34143149/ 34143020



Em 13 de março de 2015 13:32, Junior Miranda flmirandajun...@gmail.com 
escreveu: 


  Tenho uma consulta de produtos que possue, no momento, 20 mil registros. 
Infelizmente para esta consulta eu precisaria retornar todos para que a partir 
dai o usuário pudesse realizar os seus filtros. Com essa quantidade de 
registros apresenta uma lentidão na abertura da pesquisa. Não fetch X em X por 
que nem sem ele consegui retornar os registros.


  Júnior Miranda 
  Analista de Sistemas
  Especializando em Sistemas Computacionais
  E-mail: flmirandajun...@gmail.com
  Tel.: (75) 9191-1678/ 34143042/ 34143149/ 34143020



  Em 13 de março de 2015 13:27, Matheus de Oliveira 
matioli.math...@gmail.com escreveu:


2015-03-13 13:26 GMT-03:00 Junior Miranda flmirandajun...@gmail.com:

  A questão é que inicialmente precisarei retornar todos os registro, e 
como a tendência é que eles aumentem um pouco, precisaria fazer FETCH de X em X 
para diminuir o gargalo na abertura. A tendência é que com o aumento essa 
lentidão aumente...

Poucas informações para que possamos ajudar. Você diz pra fazer de X em 
X, mas você não fez isso. Pode compartilhar conosco o uso de tantos registros 
assim?


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




  ___
  pgbr-geral mailing list
  pgbr-geral

Re: [pgbr-geral] 10 desvantagens do PostgreSQL em relação ao Oracle

2015-01-09 Por tôpico Marcelo Florindo
Douglas,
O ambiente de administração do oracle é apex……a Oracle está investindo 
pesadamente nele.


Abraço,

Marcelo

 Em 09/01/2015, à(s) 20:38, Douglas Fabiano Specht douglasfabi...@gmail.com 
 escreveu:
 
 
 
 Em 9 de janeiro de 2015 17:33, Marcelo Florindo marceloflori...@gmail.com 
 mailto:marceloflori...@gmail.com escreveu:
 Dentro deste comparativo, não só ao oracle banco, mas um item que gostaria de 
 ver no postgres é o apex (apex.oracle.com http://apex.oracle.com/).
 
 Já imaginaram um ambiente de desenvolvimento utilizando o postgres de cabo a 
 rabo?? Seria muito show!
 
 Abraço a todos,
 
 Marcelo
 
 Em 09/01/2015, à(s) 17:10, Dadilton Melo dadil...@gmail.com 
 mailto:dadil...@gmail.com escreveu:
 
 Olá pessoal,
 
 Me metendo nessa conversa de gente grande, não sei se é exatamente uma 
 desvantagem, mas o fato de o postgresql não utilizar mais que um core de cpu 
 por consulta (Query) pode se revelar um problema em alguns ambientes.
 Este assunto já é discutido em 
 http://www.postgresql.org/message-id/48fcd67d.4070...@sun.com 
 http://www.postgresql.org/message-id/48fcd67d.4070...@sun.com , e pelo que 
 parece, estão tentando implementar isso no PostgreSQL.
 
 Já vi que houve alguma discussão aqui sobre isso e já falaram que as 
 consultas paralelas do ORACLE servem como gambiarra para resolver o problema 
 de performance de consultas mal feitas. Mas a verdade é que, em alguns 
 casos, isso realmente pode se mostrar uma boa forma de melhorar o desempenho 
 do sistema. Até mesmo porque o DBA, infelizmente, não pode contar muito com 
 o conhecimento do desenvolvedor ao fazer suas consultas na base de dados. 
 Além do mais, as consultas paralelas não funcionam sempre, mas só em alguns 
 casos, por exemplo, quando é necessário fazer um full table scan, ou quando 
 numa mesma consulta existem blocos que, separados, podem trazem resultados 
 independentes, etc. Sem falar que consomem mais recursos de hardware. Além 
 do mais, a ORACLE deu um jeito de permitir gambiarra, e permite a execução 
 do seguinte comando ALTER SESSION FORCE PARALLEL QUERY. para forçar o uso de 
 vários cores de CPU. Tem mais alguns detalhes aqui 
 http://www.dba-oracle.com/art_builder_opq_cpu.htm 
 http://www.dba-oracle.com/art_builder_opq_cpu.htm
 
 Corrijam-me, em caso de eu haver falado besteira, por favor :)
 
 Já me falaram até que o fato de o ORACLE permitir HINTs (para ignorar 
 obrigar o uso de índices, ou consultas paralelas - coisa que o PostgreSQL 
 não tem) já indicam que o otimizador de consultas dele pode não ser lá muito 
 eficiente.
 
 Mas aí já é outro papo, rs.
 
 Abraços.
 
 Em 9 de janeiro de 2015 16:06, Fabiano Machado Dias 
 fabi...@wolaksistemas.com.br mailto:fabi...@wolaksistemas.com.br 
 escreveu:
 Postgres 9.4 : Aggregate FILTER clause (Uma mão na roda!)
 
 Abraço,
 Fabiano Machado Dias
 
 
 
 
 
 Em 9 de janeiro de 2015 15:58, Cleysson Lima listapostgre...@gmail.com 
 mailto:listapostgre...@gmail.com escreveu:
 
 Hehehe concordo com o Flávio :)
 
 Tópico
 - Certificação
 
 
 
 Em 9 de janeiro de 2015 12:13, Flavio Henrique Araque Gurgel 
 fha...@gmail.com mailto:fha...@gmail.com escreveu:
 
 Eu sei, eu sei... mas existem né? Nem tudo é perfeito AINDA.
 
 Comecei a escrever uma trilogia comparando o Oracle com o PostgreSQL e
 queria saber na opinião de vocês onde vocês acham que o Oracle leva
 vantagem sobre o PostgreSQL.
 
 Sem flames, por favor!!!
 
 Troll pode?
 Vantagem Oracle:
 Larry Ellison é bilionário.
 
 Desvantagem PostgreSQL:
 Tom Lane bebe cerveja na PgCon.
 
 Mas eu acho que o segundo se diverte mais :)
 ___
 pgbr-geral mailing list
 pgbr-geral@listas.postgresql.org.br 
 mailto:pgbr-geral@listas.postgresql.org.br
 https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral 
 https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
 
 
 ___
 pgbr-geral mailing list
 pgbr-geral@listas.postgresql.org.br 
 mailto:pgbr-geral@listas.postgresql.org.br
 https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral 
 https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
 
 
 
 ___
 pgbr-geral mailing list
 pgbr-geral@listas.postgresql.org.br 
 mailto:pgbr-geral@listas.postgresql.org.br
 https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral 
 https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
 
 
 
 
 -- 
 
 Dadilton Bastos Melo
 ___
 pgbr-geral mailing list
 pgbr-geral@listas.postgresql.org.br 
 mailto:pgbr-geral@listas.postgresql.org.br
 https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral 
 https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
 
 
 ___
 pgbr-geral mailing list
 pgbr-geral@listas.postgresql.org.br 
 mailto:pgbr-geral@listas.postgresql.org.br
 https

[pgbr-geral] Envio de email

2015-01-09 Por tôpico Marcelo Florindo
Boa tarde colegas,

Alguém aqui envia email através do postgres???


Grato a todos,

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


Re: [pgbr-geral] Controle de transação - Delphi

2015-01-09 Por tôpico Marcelo Florindo
Usava:
Zeoslib
Unidac

Att,

Marcelo

 Em 09/01/2015, à(s) 17:41, Fernando Cambiaghi cambia...@gmail.com escreveu:
 
 Marcelo, se você não usava odbc, que conector você usava?
 
 Nos parâmetros do odbc eu pesquisei sobre autocommit, mas não encontrei.
 
 Na conexão com o banco Sybase eu uso autocommit=false, com isso não preciso 
 iniciar as transações.
 
 Em 09/01/2015 17:37, Marcelo Florindo marceloflori...@gmail.com 
 mailto:marceloflori...@gmail.com escreveu:
 Ele está se perdendo no select, parece que ele está executando tudo de uma 
 vez…
 
 Eu trabalhei algum tempo com delphi…. e nunca usei odbc.. Tu não precisas 
 informar nada no odbc ou no componente conexão sobre a transação
 
 Att,
 
 Marcelo
 
 Em 09/01/2015, à(s) 12:49, Fernando Cambiaghi cambia...@gmail.com 
 mailto:cambia...@gmail.com escreveu:
 
 Bom dia Colegas, estou com um problema e não encontrei solução com buscas no 
 Google, então gostaria da ajuda dos senhores.
 
 Tenho uma conexão com PostgreSQL via odbc e aplicação em Delphi 7
 
 Ao executar um insert com controle de transação, o PostgreSQL gera o erro 
 
 2015-01-09 10:08:16 BRT ERROR:  syntax error at or near SELECT at 
 character 16
 2015-01-09 10:08:16 BRT STATEMENT:  SELECT INVALID SELECT STATEMENT TO FORCE 
 ODBC DRIVER TO UNPREPARED STATE
 
 no log, e o insert não acontece, mas também não retorna erro para a 
 aplicação. Então, ao executar os inserts das tabelas filhas, temos os erros 
 de FK.
 
 Se o controle de transação for removido da aplicação, o commit acontece 
 automaticamente, o que gera problema se algum dos inserts posteriores não 
 der certo, pois não tenho a opção de Rollback.
 
 Comandos da aplicação:
 TADOCommand. Connection.BeginTrans; // Controla o início da transação
 
 .
 
  sequencia de inserts
 ...
 
 ...
 
 Controle de conclusão de transação.
 TADOCommand.Connection.CommitTrans; ou TADOCommand.Connection.RollbackTrans;
 
 
 
 Versão do Banco
 PostgreSQL 9.4.0, compiled by Visual C++ build 1800, 64-bit
 
 Quem poderá me ajudar?
 
 
 
 Fernando Luís Cambiaghi
 cambia...@gmail.com mailto:cambia...@gmail.com
 ___
 pgbr-geral mailing list
 pgbr-geral@listas.postgresql.org.br 
 mailto:pgbr-geral@listas.postgresql.org.br
 https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral 
 https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
 
 
 ___
 pgbr-geral mailing list
 pgbr-geral@listas.postgresql.org.br 
 mailto:pgbr-geral@listas.postgresql.org.br
 https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral 
 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] 10 desvantagens do PostgreSQL em relação ao Oracle

2015-01-09 Por tôpico Marcelo Florindo
Dentro deste comparativo, não só ao oracle banco, mas um item que gostaria de 
ver no postgres é o apex (apex.oracle.com http://apex.oracle.com/).

Já imaginaram um ambiente de desenvolvimento utilizando o postgres de cabo a 
rabo?? Seria muito show!

Abraço a todos,

Marcelo

 Em 09/01/2015, à(s) 17:10, Dadilton Melo dadil...@gmail.com escreveu:
 
 Olá pessoal,
 
 Me metendo nessa conversa de gente grande, não sei se é exatamente uma 
 desvantagem, mas o fato de o postgresql não utilizar mais que um core de cpu 
 por consulta (Query) pode se revelar um problema em alguns ambientes.
 Este assunto já é discutido em 
 http://www.postgresql.org/message-id/48fcd67d.4070...@sun.com 
 http://www.postgresql.org/message-id/48fcd67d.4070...@sun.com , e pelo que 
 parece, estão tentando implementar isso no PostgreSQL.
 
 Já vi que houve alguma discussão aqui sobre isso e já falaram que as 
 consultas paralelas do ORACLE servem como gambiarra para resolver o problema 
 de performance de consultas mal feitas. Mas a verdade é que, em alguns casos, 
 isso realmente pode se mostrar uma boa forma de melhorar o desempenho do 
 sistema. Até mesmo porque o DBA, infelizmente, não pode contar muito com o 
 conhecimento do desenvolvedor ao fazer suas consultas na base de dados. Além 
 do mais, as consultas paralelas não funcionam sempre, mas só em alguns casos, 
 por exemplo, quando é necessário fazer um full table scan, ou quando numa 
 mesma consulta existem blocos que, separados, podem trazem resultados 
 independentes, etc. Sem falar que consomem mais recursos de hardware. Além do 
 mais, a ORACLE deu um jeito de permitir gambiarra, e permite a execução do 
 seguinte comando ALTER SESSION FORCE PARALLEL QUERY. para forçar o uso de 
 vários cores de CPU. Tem mais alguns detalhes aqui 
 http://www.dba-oracle.com/art_builder_opq_cpu.htm 
 http://www.dba-oracle.com/art_builder_opq_cpu.htm
 
 Corrijam-me, em caso de eu haver falado besteira, por favor :)
 
 Já me falaram até que o fato de o ORACLE permitir HINTs (para ignorar obrigar 
 o uso de índices, ou consultas paralelas - coisa que o PostgreSQL não tem) já 
 indicam que o otimizador de consultas dele pode não ser lá muito eficiente.
 
 Mas aí já é outro papo, rs.
 
 Abraços.
 
 Em 9 de janeiro de 2015 16:06, Fabiano Machado Dias 
 fabi...@wolaksistemas.com.br mailto:fabi...@wolaksistemas.com.br escreveu:
 Postgres 9.4 : Aggregate FILTER clause (Uma mão na roda!)
 
 Abraço,
 Fabiano Machado Dias
 
 
 
 
 
 Em 9 de janeiro de 2015 15:58, Cleysson Lima listapostgre...@gmail.com 
 mailto:listapostgre...@gmail.com escreveu:
 
 Hehehe concordo com o Flávio :)
 
 Tópico
 - Certificação
 
 
 
 Em 9 de janeiro de 2015 12:13, Flavio Henrique Araque Gurgel 
 fha...@gmail.com mailto:fha...@gmail.com escreveu:
 
 Eu sei, eu sei... mas existem né? Nem tudo é perfeito AINDA.
 
 Comecei a escrever uma trilogia comparando o Oracle com o PostgreSQL e
 queria saber na opinião de vocês onde vocês acham que o Oracle leva
 vantagem sobre o PostgreSQL.
 
 Sem flames, por favor!!!
 
 Troll pode?
 Vantagem Oracle:
 Larry Ellison é bilionário.
 
 Desvantagem PostgreSQL:
 Tom Lane bebe cerveja na PgCon.
 
 Mas eu acho que o segundo se diverte mais :)
 ___
 pgbr-geral mailing list
 pgbr-geral@listas.postgresql.org.br 
 mailto:pgbr-geral@listas.postgresql.org.br
 https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral 
 https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
 
 
 ___
 pgbr-geral mailing list
 pgbr-geral@listas.postgresql.org.br 
 mailto:pgbr-geral@listas.postgresql.org.br
 https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral 
 https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
 
 
 
 ___
 pgbr-geral mailing list
 pgbr-geral@listas.postgresql.org.br 
 mailto:pgbr-geral@listas.postgresql.org.br
 https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral 
 https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
 
 
 
 
 -- 
 
 Dadilton Bastos Melo
 ___
 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] REF: INSERT tem mais expressões do que colunas alvo.

2015-01-09 Por tôpico Marcelo Florindo
Tens que converter ou colocar entre aspas o valor númerico. A virgula para ele 
é mais um expressão!
 Em 09/01/2015, à(s) 11:52, Luiz Rafael Culik l...@xharbour.com.br escreveu:
 
 Buenas
 
 Acho que o problema e seu valor numerico, ele esta usando , em vez de .
 
 []s
 Luiz
 
 Em 9 de janeiro de 2015 11:45, Paulo Afonso Pereira 
 pa...@visualpsistemas.com.br mailto:pa...@visualpsistemas.com.br escreveu:
 Olá Pessoal,
 
 Estou estranhando este erro. Não consegui achar o problema.
 
 Os dados estão vindo de um XML de retorno do banco.
 
 Não sei se é algum tipo de dado estranho, causando isso.
 
  
 
 CREATE TABLE tabela_ofx
 
 (
 
   idreg serial NOT NULL,
 
   datalan date NOT NULL,
 
   valorlan numeric(18,2),
 
   trancrdr character varying(10),
 
   tranidbc character varying(10),
 
   checknum character varying(20),
 
   refnum character varying(20),
 
   tramemo character varying(200),
 
   CONSTRAINT pk_idreg PRIMARY KEY (idreg )
 
 );
 
  
 
 INSERT INTO tabela_ofx
 
 (datalan, valorlan, trancrdr, tranidbc, checknum, refnum, tramemo)
 
 VALUES
 
 ('2015-01-07', 533,57, 'CREDIT', 'N10043', '1911127', '', 'RESGATE DE 
 PAPEIS');
 
  
 
 ERRO:  INSERT tem mais expressões do que colunas alvo
 
 LINE 4: ...1-07', 533,57, 'CREDIT', 'N10043', '1911127', '', 'RESGATE D...
 
 ** Error **
 
 ERRO: INSERT tem mais expressões do que colunas alvo
 
 SQL state: 42601
 
 Character: 159
 
  
 
 ALGUMA DICA ?
 
  
 
 Obrigado,
 
 Paulo.
 
  
 
  
 
 
 
   http://www.avast.com/ 
 Este email foi escaneado pelo Avast antivírus. 
 www.avast.com http://www.avast.com/
 
 ___
 pgbr-geral mailing list
 pgbr-geral@listas.postgresql.org.br 
 mailto:pgbr-geral@listas.postgresql.org.br
 https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral 
 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] Problema UTF8 e LATIN1

2015-01-08 Por tôpico Marcelo Florindo
Fiz uma nova base de dados com encoding UTF8 e restaurei nela… e agora está 
redondo.

Valeu!

 Em 08/01/2015, à(s) 13:17, Marcelo Silva marc...@ig.com.br escreveu:
 
 Colega isso é muito comum quanto o usuário copia e cola um texto da web ou 
 Word,  depois quando você vai abrir no delphi por exemplo da uns pau.
 A solução é tratar o texto. 
 
 
 Enviado por Samsung Mobile
 
 
  Mensagem original 
 De : Flavio Henrique Araque Gurgel
 Data:08/01/2015 08:51 (GMT-03:00)
 Para: pgbr-geral@listas.postgresql.org.br
 Assunto: Re: [pgbr-geral] Problema UTF8 e LATIN1
 
  Bom dia colegas,
 
  minha aplicação apresenta o seguinte erro:
 
  “UTF8” has no equivalent in encoding “LATIN1”
 
 Sua aplicação ou o banco de dados?
 
  Se eu alterar o encoding da minha aplicação para Latin1 todos os acentos 
  aparecem com caracter estranho ?
  Como eu poderia resolver isto??
 
 Se sua aplicação não pode usar Latin1, continue usando UTF8 oras.
 
 Na verdade, não entendi bem sua pergunta. Qual o encoding do banco de 
 dados e qual o encoding da aplicação?
 
 Se o banco de dados estiver em UTF8 e você setar client_encoding como 
 Latin1 não dá certo porque alguns caracteres do UTF8 não existem no 
 Latin1, o inverso funciona.
 
 []s
 Flavio Gurgel
 ___
 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


[pgbr-geral] Erro de coluna indefinida

2015-01-08 Por tôpico Marcelo Florindo
Colegas,

Estou começando a usar os recursos do banco para ter produtividade.
Porém, mesmo pesquisando no google, estou fazendo algo errado (com certeza)

O aplicativo me apresenta este erro:

SQLSTATE[42703]: Undefined column: 7 ERROR: column p_nome_tabela does not 
exist LINE 1: ... '||p_nome_campo||' from into'||ordem_atual||’ 

O meu script é este:

CREATE OR REPLACE FUNCTION ordenar_ordem_grid(
p_tabela text,
p_nome_campo text,
p_novo_valor integer,
p_id integer)
  RETURNS void AS
$BODY$
DECLARE
registro record;
ordem int;
ordem_atual int;
BEGIN
-- se ordem atual diferente da ordem do parametro executar processo
execute 'select '||p_nome_campo||' from into'||ordem_atual||' 
'||p_nome_tabela||' where id='||p_id; (A LINHA DO ERRO)

if (ordem_atualp_ordem)
then
-- atualizar posicao atual
execute 'update '||p_tabela||' set 
'||p_nome_campo||'='||p_novo_valor||'+1 where 
'||p_nome_campo||'='||p_novo_valor;

-- atualizar nova posicao
execute 'update '||p_tabela||' set 
'||p_nome_campo||'='||p_novo_valor||' where '||'id='||p_id;

-- inicializacao da ordem
ordem = 1;
-- selecionar todos e corrigir a ordem
FOR registro IN EXECUTE 'select * from '|| p_tabela ||' order 
by '|| p_nome_campo
LOOP
execute 'update '||p_tabela||' set 
'||p_nome_campo||'='||ordem||' where '||'id'||'='||registro.id;
ordem = ordem + 1;
END LOOP;

end if;

END;
$BODY$
  LANGUAGE plpgsql

Alguma ideia colegas???


Obrigado a todos

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


Re: [pgbr-geral] Problema UTF8 e LATIN1

2015-01-08 Por tôpico Marcelo Florindo
Flavio,

Minha aplicação está em UFT8 e o banco LATIN1 - E quando envio um texto está 
dando o erro: “UTF8” has no equivalent in encoding “LATIN1”

Se altero a minha aplicação para LATIN1 os caracteres acentuados viram ?  
(ESTOU USANDO PHP)

Pelo que entendi parece-me que a solução mais provável (pesquisando) seria 
refazer o banco de dados para UTF8, correto?

Grato!

 Em 08/01/2015, à(s) 08:51, Flavio Henrique Araque Gurgel fha...@gmail.com 
 escreveu:
 
 Bom dia colegas,
 
 minha aplicação apresenta o seguinte erro:
 
 “UTF8” has no equivalent in encoding “LATIN1”
 
 Sua aplicação ou o banco de dados?
 
 Se eu alterar o encoding da minha aplicação para Latin1 todos os acentos 
 aparecem com caracter estranho ?
 Como eu poderia resolver isto??
 
 Se sua aplicação não pode usar Latin1, continue usando UTF8 oras.
 
 Na verdade, não entendi bem sua pergunta. Qual o encoding do banco de dados e 
 qual o encoding da aplicação?
 
 Se o banco de dados estiver em UTF8 e você setar client_encoding como Latin1 
 não dá certo porque alguns caracteres do UTF8 não existem no Latin1, o 
 inverso funciona.
 
 []s
 Flavio Gurgel
 ___
 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] Ordenando conforme itens na clausula in

2015-01-08 Por tôpico Marcelo Florindo
Valeu pessoal!

Utlizei a função e fechou!

CREATE OR REPLACE FUNCTION fordenacao(
vfield text,
vin text)
  RETURNS text AS
$BODY$
DECLARE
vorder integer DEFAULT 1;
vindice integer;
vcodigo integer[] DEFAULT string_to_array(vin,',')::integer[];
vordenacao text DEFAULT '';
BEGIN
FOR vindice IN array_lower(vcodigo,1)..array_upper(vcodigo,1) LOOP
vordenacao  := vordenacao||' WHEN 
'||vcodigo[vindice]::text||' THEN '||vorder::text;
vorder  := vorder + 1;
END LOOP;
vordenacao  := '(CASE '||vfield||' '||vordenacao||' END)';
RETURN vordenacao;
END;
$BODY$
  LANGUAGE

Muito obrigado pessoal!


 Em 08/01/2015, à(s) 08:28, Matheus de Oliveira matioli.math...@gmail.com 
 escreveu:
 
 
 2015-01-07 16:32 GMT-02:00 Sebastian Webber sebastian...@gmail.com 
 mailto:sebastian...@gmail.com:
 -- workaround starts
 DROP SEQUENCE IF EXISTS temp_seq;
 CREATE TEMP sequence temp_seq;
 -- workaround ends
 
 WITH items_parafiltrar as (
   SELECT UNNEST(ARRAY[1,5,20,12]) AS filtro
 ), lista as (
   SELECT nextval('temp_seq') As row_number, items_parafiltrar.filtro as 
 item FROM items_parafiltrar
 )
 SELECT foo.id http://foo.id/, foo.name http://foo.name/ , 
 lista.row_number FROM foo, lista
 where foo.id http://foo.id/ = lista.item
 order by lista.row_number;
 
 
 Nossa cara, desculpe, mas por favor não faça isso. Criar uma sequence 
 (mesmo temporária) para ter algo que uma simples WINDOW FUNCTION row_number 
 (o mesmo do seu alias) já faz, me parece péssimo, além disso para array o 
 generate_subscripts já resolve, você viu a solução que eu propus?
 
 De qualquer forma a ideia de um JOIN com o resultado do unnest pode não ser 
 ruim, mas seria interessante testar bem a diferença de performance desse 
 método, sei que para grandes listas isso pode ser melhor que usar IN, mas é 
 difícil determinar o que é grande.
 
 Atenciosamente,
 -- 
 Matheus de Oliveira
 Analista de Banco de Dados
 Dextra Sistemas - MPS.Br nível F!
 www.dextra.com.br/postgres http://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


[pgbr-geral] Problema UTF8 e LATIN1

2015-01-08 Por tôpico Marcelo Florindo
Bom dia colegas,

minha aplicação apresenta o seguinte erro:

“UTF8” has no equivalent in encoding “LATIN1”

Se eu alterar o encoding da minha aplicação para Latin1 todos os acentos 
aparecem com caracter estranho ?  
Como eu poderia resolver isto??

Muito obrigado a todos!

Att,


Marcelo

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


Re: [pgbr-geral] Problema UTF8 e LATIN1

2015-01-08 Por tôpico Marcelo Silva
Colega isso é muito comum quanto o usuário copia e cola um texto da web ou 
Word,  depois quando você vai abrir no delphi por exemplo da uns pau.
A solução é tratar o texto. 


Enviado por Samsung Mobile

div Mensagem original /divdivDe : Flavio Henrique Araque 
Gurgel fha...@gmail.com /divdivData:08/01/2015  08:51  (GMT-03:00) 
/divdivPara: pgbr-geral@listas.postgresql.org.br /divdivAssunto: Re: 
[pgbr-geral] Problema UTF8 e LATIN1 /divdiv
/div Bom dia colegas,

 minha aplicação apresenta o seguinte erro:

 “UTF8” has no equivalent in encoding “LATIN1”

Sua aplicação ou o banco de dados?

 Se eu alterar o encoding da minha aplicação para Latin1 todos os acentos 
 aparecem com caracter estranho ?
 Como eu poderia resolver isto??

Se sua aplicação não pode usar Latin1, continue usando UTF8 oras.

Na verdade, não entendi bem sua pergunta. Qual o encoding do banco de 
dados e qual o encoding da aplicação?

Se o banco de dados estiver em UTF8 e você setar client_encoding como 
Latin1 não dá certo porque alguns caracteres do UTF8 não existem no 
Latin1, o inverso funciona.

[]s
Flavio Gurgel
___
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] Ordenando conforme itens na clausula in

2015-01-08 Por tôpico Marcelo Florindo
Matheus,

Para mim funcionou pois eu retorno uma string e depois que irei executar.

Grato,

Marcelo

 Em 08/01/2015, à(s) 13:12, Matheus de Oliveira matioli.math...@gmail.com 
 escreveu:
 
 
 2015-01-08 8:32 GMT-02:00 Marcelo Florindo marceloflori...@gmail.com 
 mailto:marceloflori...@gmail.com:
 CREATE OR REPLACE FUNCTION fordenacao(
 vfield text,
 vin text)
   RETURNS text AS
 $BODY$
 DECLARE
 vorder integer DEFAULT 1;
 vindice integer;
 vcodigo integer[] DEFAULT string_to_array(vin,',')::integer[];
 vordenacao text DEFAULT '';
 BEGIN
   FOR vindice IN array_lower(vcodigo,1)..array_upper(vcodigo,1) LOOP
   vordenacao  := vordenacao||' WHEN 
 '||vcodigo[vindice]::text||' THEN '||vorder::text;
   vorder  := vorder + 1;
   END LOOP;
   vordenacao  := '(CASE '||vfield||' '||vordenacao||' END)';
   RETURN vordenacao;
 END;
 $BODY$
   LANGUAGE
 
 Muito obrigado pessoal!
 
 Marcelo,
 
 Como eu já comentei em [1], essa função está incorreta. Ou estou enganado e 
 alguém quer me ajudar a entender como isso seria uma solução correta?
 
 [1] 
 http://www.mail-archive.com/pgbr-geral@listas.postgresql.org.br/msg39367.html 
 http://www.mail-archive.com/pgbr-geral@listas.postgresql.org.br/msg39367.html
 
 Atenciosamente,
 -- 
 Matheus de Oliveira
 Analista de Banco de Dados
 Dextra Sistemas - MPS.Br nível F!
 www.dextra.com.br/postgres http://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


[pgbr-geral] Ordenando conforme itens na clausula in

2015-01-06 Por tôpico Marcelo Florindo
Boa noite colegas,

Eu tenho este sql:

Select * from fabricante where id in (10,14,29,49,20)

Preciso que o select venha na mesma ordem do in, alguma ideia?

Grato a todos e feliz 2015!!!


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


Re: [pgbr-geral] Ordenando conforme itens na clausula in

2015-01-06 Por tôpico Marcelo Florindo
Marcos,

No meu caso os valores são dinâmicos. Existe alguma forma de automatizar isto?

Obrigado!

Marcelo




 Em 06/01/2015, à(s) 22:24, Marcos Thomaz marcosthom...@gmail.com escreveu:
 
 order by (case when 10 then 1 when 14 then 2 when 29 then 3 when 49 then 4 
 when 20 then 5 end)
 
 Em 6 de janeiro de 2015 19:19, Marcelo Florindo marceloflori...@gmail.com 
 mailto:marceloflori...@gmail.com escreveu:
 Boa noite colegas,
 
 Eu tenho este sql:
 
 Select * from fabricante where id in (10,14,29,49,20)
 
 Preciso que o select venha na mesma ordem do in, alguma ideia?
 
 Grato a todos e feliz 2015!!!
 
 
 Marcelo
 ___
 pgbr-geral mailing list
 pgbr-geral@listas.postgresql.org.br 
 mailto:pgbr-geral@listas.postgresql.org.br
 https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral 
 https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
 
 
 
 -- 
 
 
 Marcos Thomaz da Silva
 Analista de Tecnologia da Informaçã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] PostgreSQL vs MS SQL Server

2014-11-18 Por tôpico Marcelo Costa
Muito boa esta análise.

http://www.pg-versus-ms.com

I work as a data analyst in a global professional services firm (one you
have certainly heard of). I have been doing this for about a decade. I have
spent that decade dealing with data, database software, database hardware,
database users, database programmers and data analysis methods, so I know a
fair bit about these things. I frequently come into contact with people who
know very little about these things – although some of them don't realise it
http://en.wikipedia.org/wiki/Dunning%E2%80%93Kruger_effect.

Marcelo Costa
-
http://www.infoq.com/br/author/Marcelo-Costa
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


[pgbr-geral] Enquete no Y Combinator/Hackernews

2014-05-11 Por tôpico Marcelo Costa
Qual é o banco de dados que você ou sua empresa utilizam

https://news.ycombinator.com/item?id=7729603



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


Re: [pgbr-geral] Alterar um element/node JSON/XML

2014-03-25 Por tôpico Marcelo Costa
On Tue, Mar 25, 2014 at 5:46 PM, Renato Poleti ren...@poleti.com.br wrote:

 Boa tarde a todos,

 Caros, preciso de uma função pl/pgSQL ou nativo do postgresql para
 alterar um element/node de um JSON e XML.

 Este link faz a mesma pergunta:

 http://dba.stackexchange.com/questions/54663/how-can-i-update-a-json-element-in-postgresql-json-datatype

 Na pratica seria +/- assim:

 JSON
 UPDATE table SET coluna::json#'{a,2}'='outro valor' WHERE id=1;
 --coluna= '{a:[1,2,3],b:[4,5,6]}'

 XML
 UPDATE table SET xpath('/my:a/text()',coluna)='outro valor' WHERE id=1;
 --coluna= ' my:a xmlns:my=http://example.com;test/my:a'

 Obrigado



Você já usou hstore como tipo de dado?



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


Re: [pgbr-geral] Fwd: Conexão com banco de dados

2014-02-13 Por tôpico Marcelo Silva
Eu uso o Zeos no XE tranquilo


From: Pedro B. Alves 
Sent: Thursday, February 13, 2014 10:06 AM
To: Comunidade PostgreSQL Brasileira 
Subject: [pgbr-geral] Fwd: Conexão com banco de dados




Pessoal,  

Uso a muito tempo o Zeos com D7 para fazer a conexão com meu banco de dados em 
PostgreSQL.

Estou migrando minhas Aplicações parar XE5. Todavia o XE5 possui o componente 
FireDAC que já possui configuração para conexão com o PostgreSQL.

Peço aos colegas, se alguém sabe algo de qual componente é melhor pra mim fazer 
a conexão com os dados?




___
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] Postgre embarcado? é Possivel?

2014-01-30 Por tôpico Marcelo Silva

Dentro deste mesmo tópico,
Sei que Instalar o gerenciador do DB e Embarcado tem muita diferença.
Sei que o Firebird tem uma versão embarcada, mas não sei se está continuada.
Vejo algumas aplicações que instalam MySQL ou Firebird (não embarcados) já 
na instalação do aplicativo...
O Postgres possui alguma versão neste sentido, onde poderiamos setar os 
parametros e instalar o Postgres de modo automático (sem nenhuma 
intervenção)?
Caso sim, Se o cara já tiver um Postgres na mesma máquina, não teremos 
problemas?


Marcelo Silva
--


-Mensagem Original- 
From: Flavio Henrique Araque Gurgel

Sent: Thursday, January 30, 2014 9:08 AM
To: pgbr-geral@listas.postgresql.org.br
Subject: Re: [pgbr-geral] Postgre embarcado? é Possivel?


Tem como usar o postgres embarcado numa aplicação java?


Não. O PostgreSQL não foi desenhado para isso.


Pelo menos que o instalador já instale o .jar e o banco?


Isso você pode fazer.

Diga qual seu objetivo exato. Normalmente recebemos uma pergunta A mas
seu problema pode ser B e uma solução pode existir.

[]s
Flavio Gurgel
___
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] Americam Express usando o Elefante???

2014-01-09 Por tôpico Marcelo Costa
Olhem o campo Client no anexo.

Sempre que recebo esses emails fico imaginando a quantidade de empresas no
mundo que usam o elefante e não revelam.

Conheço um dos TOP 3 bancos privado no Brasil que faz uso do elefante mas
faz questão de esconder. Já recebi ligação as 3:00 da matina para ajudar um
amigo em apuros.

PostgreSQL Opportunity Available Please contact me if you are
interested!

Andrew 
VanderWerfhttp://www.linkedin.com/profile/view?id=165450757goback=%2Egde_51776_member_5826748437512605696Technical
Recruiter at Experis IT

http://recruiterav.wordpress.com/2014/01/08/postgresql-developer/http://www.linkedin.com/redirect?url=http%3A%2F%2Frecruiterav%2Ewordpress%2Ecom%2F2014%2F01%2F08%2Fpostgresql-developer%2Furlhash=qmUv_t=tracking_anet
http://www.linkedin.com/news?viewArticle=articleID=9090562285833201045gid=51776type=memberitem=5826748437512605696articleURL=http%3A%2F%2Frecruiterav%2Ewordpress%2Ecom%2F2014%2F01%2F08%2Fpostgresql-developer%2Furlhash=qmUvgoback=%2Egde_51776_member_5826748437512605696
PostgreSQL 
Developerhttp://www.linkedin.com/news?viewArticle=articleID=9090562285833201045gid=51776type=memberitem=5826748437512605696articleURL=http%3A%2F%2Frecruiterav%2Ewordpress%2Ecom%2F2014%2F01%2F08%2Fpostgresql-developer%2Furlhash=qmUvgoback=%2Egde_51776_member_5826748437512605696
 recruiterav.wordpress.com

Job Title: PostgreSQL Developer *Client: American Express* Type: Contract
Duration: 12 Months Start Date: 1-13-2014 TOP 3 SKILLS: PostgreSQL
Development and Scripting query creation and analysis SQL ...


Marcelo Costa
-
http://www.infoq.com/br/author/Marcelo-Costa
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] RES: Extensões mais úteis para o PostgreSQL

2014-01-09 Por tôpico Marcelo Costa
Pessoal não estou discutindo minhas necessidades de extensão. Estou pedindo
relatos de extensões que vocês costumam utilizar.

Depois que levantar isso vou analisar e escrever sobre elas.

Marcelo Costa
-
http://www.infoq.com/br/author/Marcelo-Costa




2014/1/8 Bruno Silva bemanuel...@gmail.com

 2014/1/8 Celso - Gmail clorenzett...@gmail.com:
  Pessoal,
 
 
 
  Estou aceitando dicas de extensões para o elefante que vocês considerem
 mais
  úteis em seu dia a dia.
 
 
 
  Basta apenas indicar a extensão sem precisar se extender explicando o
  motivo.
 
 
 
  Aguardo as respostas, estou escrevendo sobre isso para o InfoQ Brasil.
 
 
 Depende, tem de ver quais são as suas necessidades.
 No geral: plpgsql
 Se for migração de Oracle para Postgres: ora2fce
 Se for interligação de clusters Postgres: Postgres_FDW
 Se for administração do banco: adminpack, pg_buffercache,
 pg_freespacemap, pg_stat_statements,pgrowlocks, pgstattuple
 Se for índice: pg_trgm, btree_gist, btree_gin


 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

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


[pgbr-geral] Extensões mais úteis para o PostgreSQL

2014-01-08 Por tôpico Marcelo Costa
Pessoal,

Estou aceitando dicas de extensões para o elefante que vocês considerem
mais úteis em seu dia a dia.

Basta apenas indicar a extensão sem precisar se extender explicando o
motivo.

Aguardo as respostas, estou escrevendo sobre isso para o InfoQ Brasil.

Atte,

Marcelo Costa
-
http://www.infoq.com/br/author/Marcelo-Costa
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


[pgbr-geral] PostgreSQL Armazenando dados em formato Schemaless (hstore)

2013-10-23 Por tôpico Marcelo Costa
Olá, boa noite

Críticas e sugestões são muito bem vindas.

http://www.infoq.com/br/articles/postgresql-schemaless

Atte,

Marcelo Costa
-
http://www.infoq.com/br/author/Marcelo-Costa
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Automatizar processo em determinada hora tem como?

2013-09-04 Por tôpico Marcelo da Silva
Se for Linux tem alternativas como:

CRON :
http://www.vivaolinux.com.br/artigo/Usando-cron-e-crontab-para-agendar-tarefas

ou pelo WebAdmin (gratuito) : http://www.webmin.com/ que é muito bom pra
gerenciar o Servidor de longe.




Em 4 de setembro de 2013 08:23, Rafael Fialho Corrêa
r.fia...@ibest.com.brescreveu:

 pgAgent..

 Ele tem schedules (para colocar horários e dias determinados) e jobs
 (passos que serão realizados) que podem ser tanto em SQL, quanto em
 arquivos do tipo .bat, .sh, etc..
 Dependendo do SO da um trabalhinho pra configurar, mas funciona muito
 bem...

 []'s


 Em 4 de setembro de 2013 08:15, Rudimar corsar...@gmail.com escreveu:

 Pessoal,

 existe alguma forma no PostgreSQL de eu agendar alguns updates para rodar
 em determinada hora?

 ___
 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


[pgbr-geral] Existe isso, Funcao dentro de Funcao ?

2013-09-03 Por tôpico Marcelo da Silva
Pessoal, posso criar uma função no postgres e dentro dela uma subfunção ?

Exemplo:

CREATE OR REPLACE FUNCTION fcontatos(integer, integer)
  RETURNS character varying AS
$BODY$
begin
   Function SubFuncao(Parametros)
   Returns text as
   ...
   FimDaSubFuncao

   TrataDadosDaPrimeiraFuncao

   Return = Chama SubFuncao(parametros)

end;



Ou tenho que criar sempre funções separadas ?

A ideia é simplesmente tratar um texto dentro da propria função pra
traze-lo formatado conforme o numero de caracteres

Exemplo:

Funcao(Codigo)
inicio
  SubFuncao(Texto)
  inicio
 condição1
retorna 1
 condicao2
retorna2
  fim subfuncao

  select numa tabela conforme o parametro

  retorna = SubFuncao(ResultadoDoSelect)
fim funcao


ps. Estou criando uma função para tratar a formatação de telefones conforme
o novo padrão com 9 na frente e os antigos

(11) 2962-7390
(11) 9 9693-4251
0800 753-8895
0800 7563-8966

E assim por diante, conforme o numero de caracter

-- 
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] Insert é só pra tabela ?

2013-09-03 Por tôpico Marcelo da Silva
Pessoal no Delphi tenho a função INSERT que serve para inserir uma string
dentro da outra, por exemplo:

S := insert('s', 'tete', 3);

S = teste

Existe alguma função que faça isso no postgres?
Já procurei no manuel, mas não encontrei.


-- 
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] Insert é só pra tabela ?

2013-09-03 Por tôpico Marcelo da Silva
Com a ajuda do colegas cheguei a uma função que vai me ajudar, segue aí pra
quem precisar:

Primeiro criamos a função de insert, chamei de finsert pra não confundir
com insert do SQL :)

CREATE OR REPLACE FUNCTION finsert(text, text, integer)
  RETURNS text AS
$BODY$
  select overlay($2 placing $1 from $3 for 0);
$BODY$
  LANGUAGE sql IMMUTABLE
  COST 100;
ALTER FUNCTION finsert(text, text, integer)
  OWNER TO postgres;


Então criamos a função para formatar os telefones conforme o numero de
caractere, que deve ter no minimo 10 digitos

CREATE OR REPLACE FUNCTION fgetmascfone(text)
  RETURNS character varying AS
$BODY$
  declare
fone text;
begin
  fone = $1;
  if (length(fone)  10) then
fone = right('  '||fone, 10); -- caso não haja DDD colocamos 10
caracteres no minimo
  end if;
  if (left(fone, 4) = '0800') then
case
when length(fone) in(10,11) then
  fone = finsert(' ', fone, 5);
  fone = finsert('-', fone, 9);
when length(fone) in(12) then
  fone = finsert(' ', fone, 5);
  fone = finsert('-', fone, 10);
when length(fone) in(13,14) then
  fone = finsert(' ', fone, 5);
  fone = finsert('-', fone, 10);
  fone = finsert('-', fone, 15);
else fone = fone;
end case;
  else
case
when length(fone) in(9) then
  fone = finsert('(', fone, 1);
  fone = finsert(') ', fone, 4);
  fone = finsert('-', fone, 9);
when length(fone) in(10) then
  fone = finsert('(', fone, 1);
  fone = finsert(') ', fone, 4);
  fone = finsert('-', fone, 10);
when length(fone) in(11) then
  fone = finsert('(', fone, 1);
  fone = finsert(') ', fone, 4);
  fone = finsert('-', fone, 7);
  fone = finsert('-', fone, 12);
when length(fone) in(12,13,14) then
  fone = finsert('(', fone, 1);
  fone = finsert(') ', fone, 4);
  fone = finsert('-', fone, 7);
  fone = finsert('-', fone, 12);
  fone = finsert('-', fone, 17);
else fone = fone;
end case;
  end if;
  return fone;
end;
$BODY$
  LANGUAGE plpgsql IMMUTABLE
  COST 100;
ALTER FUNCTION fgetmascfone(text)
  OWNER TO postgres;


A função foi feito meio na correria, mas pelos testes está a contento :)
depois (bem depois rsrsrs) dou mais uma garimpada.


Fica aí pra quem precisar

Obrigado a todos mais uma vez...


Marcelo Silva
---



Em 3 de setembro de 2013 12:37, Matheus de Oliveira 
matioli.math...@gmail.com escreveu:




 2013/9/3 Juliano Atanazio juliano.l...@gmail.com




 Em 3 de setembro de 2013 12:23, Matheus de Oliveira 
 matioli.math...@gmail.com escreveu:




 2013/9/3 Marcelo da Silva marc...@ig.com.br

 Pessoal no Delphi tenho a função INSERT que serve para inserir uma
 string dentro da outra, por exemplo:

 S := insert('s', 'tete', 3);

 S = teste

 Existe alguma função que faça isso no postgres?
 Já procurei no manuel, mas não encontrei.


 Existe a função overlay [1]:

 SELECT overlay('tete' placing 's' from 3 for 0);

 Você pode criar uma insert +ou- assim:

 CREATE FUNCTION insert(text,text,int)
 RETURNS TEXT
 LANGUAGE SQL AS $$
 SELECT overlay($1 placing $2 from $3 for 0);
 $$;

 [1]
 http://www.postgresql.org/docs/current/static/functions-binarystring.html



 O exemplo do Matheus foi muito mais objetivo rs
 De qualquer forma é bom ter uma certa variedade de formas de fazer a
 mesma coisa.


 =D


 Adicionalmente, este link [1] tem funções de tratamento de strings no
 PostgreSQL.
 Extremamente útil :)

 [1] http://www.postgresql.org/docs/9.2/static/functions-string.html



 Faz mais sentido que o link que eu mandei... aliás, o link que eu mandei
 não faz sentido algum (é pra bytea, apesar de ter a mesma função),
 considerem este do Juliano, 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




-- 
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] Delphi + Zeos: Alterar campos de tabela via trigger

2013-09-03 Por tôpico Marcelo da Silva
Olha vou dar um xutão aqui...

Se estiver executando sua Trigger num ZQuery normal, possivelmente ele vai
dar erro porque o ZQuery precisa de um retorno do SQL
Em outras palavras, ele serve pra SELECT * FROM TABELA
Assim como o ZUpdate serve pra UPDATE :-)
Pra executar Procedures e Triggers do banco você deve executar diretamente
no SQL direto

Exemplo:

var
  zqrLocal: TZQuery;
begin
  zqrLocal := TZQuery.Create(nil);
  zqrLocal.Connection := SeuZconecta;
  zqrLocal.Close;
  zqrLocal.SQL.Add('SEU SQL');
  zqrLocal.ExecSQL;
  FreeAndNil(zqrLocal);
end;

Veja ai se funciona


Marcelo Silva
---


Em 3 de setembro de 2013 17:35, Rafael Fialho Corrêa
r.fia...@ibest.com.brescreveu:

 Já passei por algo parecido sim, Rafael.
 Normalmente o erro estava no próprio SQL repassado ao Zeos.
 Eu utilizo sempre esta estrutura para escrita/edição de dados:
 select * from tabela where id_tabela = :id_tabela
 Neste caso, ao efetuar insert ou update, o sistema sempre se comporta de
 maneira correta.

 De qualquer forma, creio que deves verificar as propriedades do teu
 TZQuery, antes de mais nada, e verificar se a estrutura de query repassada
 ao componente está de maneira simples e filtrada.


 Em 3 de setembro de 2013 17:06, Rafael Naves emaildorafaelna...@gmail.com
  escreveu:

 Boa tarde a todos,

 Eu tenho uma trigger simples para preencher alguns campos da minha tabela
 a cada alteração de registro:

 *CREATE TRIGGER tabela_teste_trigger_ui
 *
 *  BEFORE INSERT OR UPDATE *
 *  ON public.tabela_teste FOR EACH ROW *
 *  EXECUTE PROCEDURE public.atualiza_campos_ultimos();*

 * Ela aciona uma a função abaixo:*

 *CREATE OR REPLACE FUNCTION public.atualiza_campos_ultimos(
 *
 *)*
 *RETURNS trigger AS*
 *$body$*
 *BEGIN
 *
 *
 *
 *  if (TG_OP = 'INSERT') then*
 *operacao := 'I';*
 *  else*
 *operacao := 'A';  *
 *  end if;*
 *  *
 *  new.DATA_ALTERACAO:= current_timestamp;*
 *  new.TIPO_OPERACAO := operacao;
 *
 *  *
 *  if (TG_OP = 'INSERT') then
 *
 *return old;*
 *  else*
 *return new;*
 *  end if;*
 *
 *
 *END;
 *
 *$body$*
 *LANGUAGE 'plpgsql'*
 *VOLATILE*
 *RETURNS NULL ON NULL INPUT*
 *SECURITY INVOKER*
 *COST 100;*

 *Problemática:*

 Ao executar pelo banco de dados, através de scripts funciona normalmente,
 no entanto, quando é executada via aplicação usando Delphi 2007 + Zeos
 7.0.4 eu recebo o erro:

 *'0 record(s) updated. Only one record should have been updated.'*
 *
 *
 Em minhas pesquisas e testes realizado pude perceber que o problema esta
 relacionado com o update dos campos da tabela, fato é que, ao desativar a
 trigger a aplicação consegue gravar os dados normalmente na tabela.

 Alguém já passou por isso ou percebeu alguma coisa na função que possa
 estar ocasionando o problema?

 Obrigado.



 --
 
 Rafael M. Naves
 Analista/Programador
 (31)9861-4047 (*novo!*)
 (31)8636-8910
 http://www.twitter.com/navesrafael
 http://www.rafaelnaves.com


 ___
 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] Tabela com Bytea

2013-08-30 Por tôpico Marcelo da Silva
Achei essa materia aqui também:
http://www.microolap.com/products/connectivity/postgresdac/help/TipsAndTricks/ByteaVsOid.htm


Em 30 de agosto de 2013 16:36, Guimarães Faria Corcete DUTRA, Leandro 
l...@dutras.org escreveu:

 2013/8/30 Glauco Torres torres.gla...@gmail.com:
 
  Tenho uma tabela com um único campo bytea com  572645 registros, para
 buscar
  um único registro é tarefa árdua, hoje só essa tabela passa fácil do 100
 GB
  o que dificulta a manipulação não só dela como do restante do banco.
 
  Já estamos buscando formas de resolver esse problema em novos projetos.

 Busquem a palestra do Diogo Biazus no primeiro PgBR.  Algo deve ter
 mudado, mas creio que as informações básicas ainda valem.
 ___
 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


[pgbr-geral] Select vazio, mas com linhas, é possível?

2013-08-28 Por tôpico Marcelo da Silva
Pessoal, de vez em quando surge umas necessidades doidas e aí vem as ideias
doidas também.

Preciso em um relatório mostrar um determinado número de linhas mesmo
(branco) quando a query não me traz nenhum registro.
Bem nó codigo consigo fazer de boa, mas como a query é usada em mais de um
local, gostaria de fazer nela.
Algo do tipo

SELECT CONTA(5),
  CAMPO1,
  CAMPO2,
  CAMPO3
FROM TABELA
WHERE (CONDICAO)
  OR(1  0)



-- 
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] Select vazio, mas com linhas, é possível?

2013-08-28 Por tôpico Marcelo da Silva
Caraca mano, Matheus, rsrsrs
Acertou na mosca...
Matou 2 coelhos com uma caixa d'água só.

Certinho aqui... muito obrigado...


Em 28 de agosto de 2013 16:02, Matheus de Oliveira 
matioli.math...@gmail.com escreveu:


 2013/8/28 Marcelo da Silva marc...@ig.com.br

 Pessoal, de vez em quando surge umas necessidades doidas e aí vem as
 ideias doidas também.

 Preciso em um relatório mostrar um determinado número de linhas mesmo
 (branco) quando a query não me traz nenhum registro.
 Bem nó codigo consigo fazer de boa, mas como a query é usada em mais de
 um local, gostaria de fazer nela.


 Se entendi bem, você queria, por exemplo, que a query retornasse ao menos
 N linhas, sendo que se retornar menos, sejam adicionadas linhas em branco
 (digamos NULL) para completar N linhas. É isso? Se não for explique
 melhor...

 Se for, isso funciona:

 WITH t AS (
 SELECT id, value FROM foo
 )
 SELECT t.* FROM t
 UNION ALL
 SELECT null, null FROM generate_series(1, (SELECT N - count(*) FROM t));


 (trocar N pelo número mínimo de linhas).

 Claro que pode ter implicações negativas em performance caso a consulta
 retorne muitas linhas (devido ao count).

 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




-- 
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] Pra que serve OIDS ?

2013-08-26 Por tôpico Marcelo da Silva
Sempre que vou criar tabelas deixo o OIDS = FALSE

Isso porque vem por padrão False no pgAdmin

Já vi umas bases que usam esses OIDS, pra que servem ?


-- 
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] Pra que serve OIDS ?

2013-08-26 Por tôpico Marcelo da Silva
Imaginei ser isso, então concordo que serve pra quase nada mesmo... a menos
que o fulano queira saber em que ordem os registros foram inseridos
originalmente... pode ser?



Em 26 de agosto de 2013 17:07, Guimarães Faria Corcete DUTRA, Leandro 
l...@dutras.org escreveu:

 2013/8/26 Marcelo da Silva marc...@ig.com.br:
  Já vi umas bases que usam esses OIDS, pra que servem ?

 Basicamente, para nada.

 Mas, se o gajo não sabe para que servem chaves naturais, os OIDs
 servem como chaves artificiais...
 ___
 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] Pra que serve OIDS ?

2013-08-26 Por tôpico Marcelo da Silva
bem, entao deixamos que os oids não servem pra nós mesmo :)

Sorte que quando criei minhas bases não usei esse cara :)


Em 26 de agosto de 2013 17:44, Marcone marconepe...@gmail.com escreveu:

 Em 26 de agosto de 2013 17:07, Guimarães Faria Corcete DUTRA, Leandro 
 l...@dutras.org escreveu:

 2013/8/26 Marcelo da Silva marc...@ig.com.br:
  Já vi umas bases que usam esses OIDS, pra que servem ?

 Basicamente, para nada.


 Conforme [1], os OID são bem utilizados internamente pelo postgres como
 PKs de tabelas do sistema.

 Em 26 de agosto de 2013 17:32, Marcelo da Silva marc...@ig.com.br
  escreveu:

 Imaginei ser isso, então concordo que serve pra quase nada mesmo... a
 menos que o fulano queira saber em que ordem os registros foram inseridos
 originalmente... pode ser?


 A documentação [1] não dá orientação alguma sobre isso. O OID é um inteiro
 sem sinal de 4 bytes que dá um número bem grande de registros, mas que pode
 vir a ser estourado, aí o OID será reiniciado e sua lógica de ordenação
 perdida.

 1 - http://www.postgresql.org/docs/9.2/static/datatype-oid.html

 --
 Marcone Peres - DBA
 http://www.linkedin.com/in/marconeperes
 oraculogeo.blogspot.com
 @marconeperes
 (61) 8146-0028

 ___
 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


[pgbr-geral] Estouro de dados no view

2013-08-23 Por tôpico Marcelo Miranda
Caros usuários do PostgresSQL
Tenho um view no banco de dados que varia o número de linhas de acordo com a
tabela que esta vinculado. Quando essa tabela ultrapassa 110.000 linhas
aparece essa mensagem de erro:
ERROR: Could not execute table metadada query: ERRO: valor do intervalo:
estouro (overflow).
Alguém pode dar uma dica como resolver isso?
 
Marcelo Miranda


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


[pgbr-geral] Sintaxe INSERT

2013-08-19 Por tôpico Marcelo da Silva
Mesmo depois de olhar a sintaxe do INSERT no site do postgres resolvi
perguntas aos gurus aqui da lista :)

Teria como fazer um insert tratando uma condição ?

Exemplo:

INSERT INTO TABELA (CAMPO1, CAMPO2)
VALUES(VALOR1, VALOR2)
WHERE (CAMPO1 NOT IN(X))

Ou seja, gostaria de verificar se existe um determinado registro antes de
inserir

Mas gostaria de saber se dá pra fazer isso no insert simples e não criar
uma função pra isso.

Cada ideia né :)

Mas vai que cola... rsrsrs

-- 
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] Sintaxe INSERT

2013-08-19 Por tôpico Marcelo da Silva
Opa... belesa...

Simplifica muito...

Valeu Edson



Em 19 de agosto de 2013 17:41, Edson Neto edson.edsn...@gmail.comescreveu:

 Em 19 de agosto de 2013 17:22, Marcelo da Silva marc...@ig.com.brescreveu:

 Mesmo depois de olhar a sintaxe do INSERT no site do postgres resolvi
 perguntas aos gurus aqui da lista :)

 Teria como fazer um insert tratando uma condição ?

 Exemplo:

 INSERT INTO TABELA (CAMPO1, CAMPO2)
 VALUES(VALOR1, VALOR2)
 WHERE (CAMPO1 NOT IN(X))

 Ou seja, gostaria de verificar se existe um determinado registro antes de
 inserir

 Mas gostaria de saber se dá pra fazer isso no insert simples e não criar
 uma função pra isso.


 O Postgres permite que você realize insert baseado em uma consulta. Com
 isso você poderia fazer o seguinte

 INSERT INTO TABELA (CAMPO1, CAMPO2)  select VALOR1,VALOR2  where not
 exists(select 1 from TABELA  where CAMPO1 =X);

 Nesse caso apenas ocorreria o insert caso não existisse campo1 com valor x
 na tabela.

 []s

 Edson


 ___
 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] Não consigo acessar o postgresql

2013-08-14 Por tôpico Marcelo da Silva
Qual sistema operacional ?
Se for Linux talvez tenha que executar o fsck para concertar


Em 14 de agosto de 2013 17:20, Eric Patrick ericpatric...@gmail.comescreveu:

 Caros,

 Hoje fui tentar acessar o postgresql e obtive a seguinte mensagem:

 psql: FATAL:  could not open file global/11672: Read-only file system

 olhei o respectivo arquivo e a permissão está ok, conforme abaixo:

 -rw---  1 postgres postgres 16384 May 31 11:37 11672

 Alguém poderia me dar uma ideia do que pode estar acontecendo?

 ___
 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] Não consigo acessar o postgresql

2013-08-14 Por tôpico Marcelo da Silva
Eita... consertar rsrsrs



Em 14 de agosto de 2013 17:26, Marcelo da Silva marc...@ig.com.brescreveu:

 Qual sistema operacional ?
 Se for Linux talvez tenha que executar o fsck para concertar


 Em 14 de agosto de 2013 17:20, Eric Patrick ericpatric...@gmail.comescreveu:

 Caros,

 Hoje fui tentar acessar o postgresql e obtive a seguinte mensagem:

 psql: FATAL:  could not open file global/11672: Read-only file system

 olhei o respectivo arquivo e a permissão está ok, conforme abaixo:

 -rw---  1 postgres postgres 16384 May 31 11:37 11672

 Alguém poderia me dar uma ideia do que pode estar acontecendo?

 ___
 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




-- 
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] CASE + CAST + CONCAT

2013-08-12 Por tôpico Marcelo da Silva
Estou tentando fazer algo do tipo:

...
case
when ((a.data_qui is null)and(a.data_ven  current_date)) then
  cast(current_date - a.data_ven) as text)||' dias'
when (a.data_qui is not null) then
  'Quitado'
else cast(0 as char(1)) end as status,
...

Explicando:

Preciso mostrar a qtd de dias quando vencido, quando quitado mostrar
quitado,
ou seja hora será integer hora será text, mas pra não dar conflito estava
tentando com cast, mudar tudo para text

Ele reclama da conversão dentro do Case
-- 
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] CASE + CAST + CONCAT

2013-08-12 Por tôpico Marcelo da Silva
Assim deu certo:

  case
when ((a.data_qui is null)and(a.data_ven  current_date)) then
  cast(current_date - a.data_ven as text)
when (a.data_qui is not null) then
  'Quitado'
  else 'Vence hoje' end as vencido,


Obrigado a todos que se dispuseram...




Em 12 de agosto de 2013 08:41, Rafael Naves
emaildorafaelna...@gmail.comescreveu:

 Bom dia,

 Não esta faltando apenas o ) na linha?

 cast((current_date - a.data_ven) as text)||' dias'

 Em 12 de agosto de 2013 08:37, Matheus de Oliveira
 matioli.math...@gmail.com escreveu:
 
  On Mon, Aug 12, 2013 at 8:34 AM, Marcelo da Silva marc...@ig.com.br
 wrote:
 
  Estou tentando fazer algo do tipo:
 
  ...
  case
  when ((a.data_qui is null)and(a.data_ven  current_date)) then
cast(current_date - a.data_ven) as text)||' dias'
  when (a.data_qui is not null) then
'Quitado'
  else cast(0 as char(1)) end as status,
  ...
 
  Explicando:
 
  Preciso mostrar a qtd de dias quando vencido, quando quitado mostrar
  quitado,
  ou seja hora será integer hora será text, mas pra não dar conflito
 estava
  tentando com cast, mudar tudo para text
 
  Ele reclama da conversão dentro do Case
 
 
  Não testei, mas me parece que ele deve estar reclamando por causa desta
  parte: `cast(0 as char(1))`. Os demais estão text, então use text aí
 também
  (ao invés de char) ou então, já que é constante, use '0'.
 
 
  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
 



 --
 
 Rafael M. Naves
 Analista/Programador
 (31)9861-4047 (novo!)
 (31)8636-8910
 http://www.twitter.com/navesrafael
 http://www.rafaelnaves.com
 ___
 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


[pgbr-geral] Para imagens - Bytea ou Oid ?

2013-08-09 Por tôpico Marcelo da Silva
Hoje utilizo Bytea para gravar imagens no banco.
Estava passeando pela web e vi que pode-se usar Oid.
Fazendo uns testes com Selects e Componentes Delphi, vi que

Com Oid posso exportar a imagem diretamente do banco
Mas um componente DBImage do delphi não exibe a imagem diretamente do banco
quando o campo é Oid.
Já com Bytea posso visualizar a imagem diretamente do banco, mas não posso
esporta-la diretamente do banco.

O Comentário acima é só para terem uma ideia dos testes realizados

A pergunta é: Qual o mais indicado para guardar Imagem diretamente no banco
?

Quais os prós e contras fora os já citados acima?





-- 
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] Fwd: Funcão para contar dias uteis

2013-08-06 Por tôpico Marcelo da Silva
Valeu Fabio..., como eu citei eu não manjo, mas aqui tenho que fazer papel
de DBA e tudo mais, sabcomé, então nem sobra tempo pra estudar essas
funções detalhadamente, as dicas aqui da lista são excelentes...
Vou tratar de mudar a função :)

Mais uma vez, muito obrigado...


Em 6 de agosto de 2013 08:50, Fábio Telles Rodriguez fabio.tel...@gmail.com
 escreveu:

 Marcelo, lamento lhe informar mas você está fazendo isso do jeito
 errado. Não é que sua função não funcione, mas por princípio não
 devemos substituir um SQL puro por um PL. Quando você faz isso, o
 otimizador de desempenho do postgres vai para o vinagre. Além disso,
 você declarou sua função como VOLATILE. Se declarar como IMMUTABLE,
 veria ganhos imediatos, vide:
 http://www.postgresql.org/docs/current/static/sql-createfunction.html

 Eu escrevi um pouco sobre como trabalhar com datas aqui:

 http://savepoint.blog.br/brincando-com-algumas-funcoes-com-data-no-postgresql/

 2013/8/5 Marcelo da Silva marc...@ig.com.br:
  Desculpa estava esquecendo de uma linha...
 
  Agora está OK
 
  -- Function: fproxdiautil(date)
 
  -- DROP FUNCTION fproxdiautil(date);
 
  CREATE OR REPLACE FUNCTION fdiasuteis(pData date, pDias integer)
RETURNS date AS
  $BODY$
  declare
Dia integer;
SomaDias integer;
NovaData date;
  Begin
SomaDias = 0;
NovaData = pData;
while (SomaDias  pDias) loop
  NovaData = NovaData + 1;
  Dia = extract(dow from NovaData);
  while (Dia = 0 or Dia = 6) loop
NovaData = NovaData + 1;
Dia = extract(dow from NovaData);
  end loop;
  SomaDias = SomaDias + 1;
end loop;
return fproxdiautil(NovaData);
  end;
  $BODY$
LANGUAGE plpgsql VOLATILE
COST 100;
  ALTER FUNCTION fdiasuteis(date, integer)
OWNER TO postgres;
 
 
  Marcelo Silva
 
  ___
  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://savepoint.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




-- 
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] Fwd: Funcão para contar dias uteis

2013-08-06 Por tôpico Marcelo da Silva
Outro detalhe, relendo seu Post, você está dizendo que é melhor utilizar a
verificação em cada select do que ter uma função pra isso? Não entendi.


Em 6 de agosto de 2013 08:54, Marcelo da Silva marc...@ig.com.br escreveu:

 Valeu Fabio..., como eu citei eu não manjo, mas aqui tenho que fazer papel
 de DBA e tudo mais, sabcomé, então nem sobra tempo pra estudar essas
 funções detalhadamente, as dicas aqui da lista são excelentes...
 Vou tratar de mudar a função :)

 Mais uma vez, muito obrigado...


 Em 6 de agosto de 2013 08:50, Fábio Telles Rodriguez 
 fabio.tel...@gmail.com escreveu:

 Marcelo, lamento lhe informar mas você está fazendo isso do jeito
 errado. Não é que sua função não funcione, mas por princípio não
 devemos substituir um SQL puro por um PL. Quando você faz isso, o
 otimizador de desempenho do postgres vai para o vinagre. Além disso,
 você declarou sua função como VOLATILE. Se declarar como IMMUTABLE,
 veria ganhos imediatos, vide:
 http://www.postgresql.org/docs/current/static/sql-createfunction.html

 Eu escrevi um pouco sobre como trabalhar com datas aqui:

 http://savepoint.blog.br/brincando-com-algumas-funcoes-com-data-no-postgresql/

 2013/8/5 Marcelo da Silva marc...@ig.com.br:
  Desculpa estava esquecendo de uma linha...
 
  Agora está OK
 
  -- Function: fproxdiautil(date)
 
  -- DROP FUNCTION fproxdiautil(date);
 
  CREATE OR REPLACE FUNCTION fdiasuteis(pData date, pDias integer)
RETURNS date AS
  $BODY$
  declare
Dia integer;
SomaDias integer;
NovaData date;
  Begin
SomaDias = 0;
NovaData = pData;
while (SomaDias  pDias) loop
  NovaData = NovaData + 1;
  Dia = extract(dow from NovaData);
  while (Dia = 0 or Dia = 6) loop
NovaData = NovaData + 1;
Dia = extract(dow from NovaData);
  end loop;
  SomaDias = SomaDias + 1;
end loop;
return fproxdiautil(NovaData);
  end;
  $BODY$
LANGUAGE plpgsql VOLATILE
COST 100;
  ALTER FUNCTION fdiasuteis(date, integer)
OWNER TO postgres;
 
 
  Marcelo Silva
 
  ___
  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://savepoint.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




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




-- 
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] Fwd: Funcão para contar dias uteis

2013-08-06 Por tôpico Marcelo da Silva
O mais importante deixei de lado:

Quando devo usar

VOLATILE
IMMUTABLE
STABLE

?


Em 6 de agosto de 2013 10:22, Marcelo da Silva marc...@ig.com.br escreveu:

 Fabio, desculpa aproveitar da sua bondade, mas como cuido de muita coisa
 aqui, fica meio dificil assimilar algumas coisas no postgres, sei que para
 isso seria bom fazer um cursinho, mesmo que rápido em DBA Postgres, mas
 sabcome né, então eu lhe pergunto quais as diferenças entre IMMUTABLE,
 VOLATILE, e STABLE ?
 Li no manual, mas confeço que fiquei meio confuso, pois ele se refere a
 dados vindos de tabelas ou não, e ao mesmo tempo cita que os dados podem
 ser mudados ou não, não compreendi, pois na minha concepção a volatilidade
 dos dados dependeriam dos dados de entrada também, então o que torna uma
 função volatil ou não ? Pelo meu ver toda função seria volatil, a menos que
 se guardasse o resultado em alguma variavel ou tabela, sei lá...


 Em 6 de agosto de 2013 09:36, Fábio Telles Rodriguez 
 fabio.tel...@gmail.com escreveu:

 Em 6 de agosto de 2013 08:56, Marcelo da Silva marc...@ig.com.br
 escreveu:
  Outro detalhe, relendo seu Post, você está dizendo que é melhor
 utilizar a
  verificação em cada select do que ter uma função pra isso? Não entendi.

 A regra de ouro é: se dá para fazer com SQL puro, não faça com PL.
 Quando você manda um comando para um SGDB, seja Postgres, SQL Server,
 Oracle, DB2 ou até o Mysql... eles tentam executar o seu comando da
 forma mais eficiente possível. Se você manda uma consulta envolvendo
 varias tabelas, ele vai avaliar em que ordem ele vai pegar as tabelas
 para executar a sua consulta.

 Quando você utiliza o PL, o otimizador perde a sua autonomia em favor
 da sua lógica de programação. Claro que se sua função é do tipo
 IMMUTABLE, isso não é tão importante, afinal, você não está
 consultando nenhuma tabela. Mas a sua função vai invariavelmente
 aparecer dentro de um SQL e aí as coisas vão se complicando.
 --
 Atenciosamente,
 Fábio Telles Rodriguez
 blog: http://savepoint.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




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




-- 
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] Fwd: Funcão para contar dias uteis

2013-08-06 Por tôpico Marcelo da Silva
Hum... show, ali está bem explicado...

Vou analisar minhas funções...

Só um comentário achei estranho, no inicio ele diz que:
O lado negativo de se empregar funções no Postgres ou em qualquer SGBD é a
necessidade de um tempo significativo de processamento
Eu sempre vi as funções dentro do banco como uma virtude justamente pelo
ganho de processamento.

Será que estou errado denovo?




Em 6 de agosto de 2013 10:34, Claudio Bezerra Leopoldino 
claudiob...@yahoo.com.br escreveu:

 *Assunto:* Re: [pgbr-geral] Fwd: Funcão para contar dias uteis

 Fabio, desculpa aproveitar da sua bondade, mas como cuido de muita coisa
 aqui, fica meio dificil assimilar algumas coisas no postgres, sei que para
 isso seria bom fazer um cursinho, mesmo que rápido em DBA Postgres, mas
 sabcome né, então eu lhe pergunto quais as diferenças entre IMMUTABLE,
 VOLATILE, e STABLE ?
 Li no manual, mas confeço que fiquei meio confuso, pois ele se refere a
 dados vindos de tabelas ou não, e ao mesmo tempo cita que os dados podem
 ser mudados ou não, não compreendi, pois na minha concepção a volatilidade
 dos dados dependeriam dos dados de entrada também, então o que torna uma
 função volatil ou não ? Pelo meu ver toda função seria volatil, a menos que
 se guardasse o resultado em alguma variavel ou tabela, sei lá...

 Veja os exemplos deste post:


 http://postgresqlbr.blogspot.com.br/2012/08/categorias-de-volatilidade-de-funcoes.html

 Cordialmente,

 Cláudio


 Em 6 de agosto de 2013 09:36, Fábio Telles Rodriguez 
 fabio.tel...@gmail.com escreveu:

 Em 6 de agosto de 2013 08:56, Marcelo da Silva marc...@ig.com.br
 escreveu:
  Outro detalhe, relendo seu Post, você está dizendo que é melhor utilizar
 a
  verificação em cada select do que ter uma função pra isso? Não entendi.

 A regra de ouro é: se dá para fazer com SQL puro, não faça com PL.
 Quando você manda um comando para um SGDB, seja Postgres, SQL Server,
 Oracle, DB2 ou até o Mysql... eles tentam executar o seu comando da
 forma mais eficiente possível. Se você manda uma consulta envolvendo
 varias tabelas, ele vai avaliar em que ordem ele vai pegar as tabelas
 para executar a sua consulta.

 Quando você utiliza o PL, o otimizador perde a sua autonomia em favor
 da sua lógica de programação. Claro que se sua função é do tipo
 IMMUTABLE, isso não é tão importante, afinal, você não está
 consultando nenhuma tabela. Mas a sua função vai invariavelmente
 aparecer dentro de um SQL e aí as coisas vão se complicando.
 --
 Atenciosamente,
 Fábio Telles Rodriguez
 blog: http://savepoint.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




 --
 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] Fwd: Funcão para contar dias uteis

2013-08-06 Por tôpico Marcelo da Silva
Valeu Fabio... estou aprimorando no postgres e vocês estão de parabéns


Em 6 de agosto de 2013 10:43, Marcelo da Silva marc...@ig.com.br escreveu:

 Hum... show, ali está bem explicado...

 Vou analisar minhas funções...

 Só um comentário achei estranho, no inicio ele diz que:
 O lado negativo de se empregar funções no Postgres ou em qualquer SGBD é
 a necessidade de um tempo significativo de processamento
 Eu sempre vi as funções dentro do banco como uma virtude justamente pelo
 ganho de processamento.

 Será que estou errado denovo?




 Em 6 de agosto de 2013 10:34, Claudio Bezerra Leopoldino 
 claudiob...@yahoo.com.br escreveu:

 *Assunto:* Re: [pgbr-geral] Fwd: Funcão para contar dias uteis

 Fabio, desculpa aproveitar da sua bondade, mas como cuido de muita coisa
 aqui, fica meio dificil assimilar algumas coisas no postgres, sei que para
 isso seria bom fazer um cursinho, mesmo que rápido em DBA Postgres, mas
 sabcome né, então eu lhe pergunto quais as diferenças entre IMMUTABLE,
 VOLATILE, e STABLE ?
 Li no manual, mas confeço que fiquei meio confuso, pois ele se refere a
 dados vindos de tabelas ou não, e ao mesmo tempo cita que os dados podem
 ser mudados ou não, não compreendi, pois na minha concepção a volatilidade
 dos dados dependeriam dos dados de entrada também, então o que torna uma
 função volatil ou não ? Pelo meu ver toda função seria volatil, a menos que
 se guardasse o resultado em alguma variavel ou tabela, sei lá...

 Veja os exemplos deste post:


 http://postgresqlbr.blogspot.com.br/2012/08/categorias-de-volatilidade-de-funcoes.html

 Cordialmente,

 Cláudio


 Em 6 de agosto de 2013 09:36, Fábio Telles Rodriguez 
 fabio.tel...@gmail.com escreveu:

 Em 6 de agosto de 2013 08:56, Marcelo da Silva marc...@ig.com.br
 escreveu:
  Outro detalhe, relendo seu Post, você está dizendo que é melhor
 utilizar a
  verificação em cada select do que ter uma função pra isso? Não entendi.

 A regra de ouro é: se dá para fazer com SQL puro, não faça com PL.
 Quando você manda um comando para um SGDB, seja Postgres, SQL Server,
 Oracle, DB2 ou até o Mysql... eles tentam executar o seu comando da
 forma mais eficiente possível. Se você manda uma consulta envolvendo
 varias tabelas, ele vai avaliar em que ordem ele vai pegar as tabelas
 para executar a sua consulta.

 Quando você utiliza o PL, o otimizador perde a sua autonomia em favor
 da sua lógica de programação. Claro que se sua função é do tipo
 IMMUTABLE, isso não é tão importante, afinal, você não está
 consultando nenhuma tabela. Mas a sua função vai invariavelmente
 aparecer dentro de um SQL e aí as coisas vão se complicando.
 --
 Atenciosamente,
 Fábio Telles Rodriguez
 blog: http://savepoint.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




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




-- 
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] Funcão para contar dias uteis

2013-08-05 Por tôpico Marcelo da Silva
Pessoal estou criando uma função para contar somente os dias uteis (seg a
sex)
Cheguei no seguinte:

CREATE OR REPLACE FUNCTION fdiasuteis(pData date, pDias integer)
  RETURNS date AS
$BODY$
declare
  Dia integer;
  SomaDias integer;
  NovaData date;
Begin
  SomaDias = 0;
  NovaData = pData;
  while (SomaDias  pDias) loop
Dia = extract(dow from NovaData);
while (Dia in(0, 1)) loop
  NovaData = NovaData + 1;
  Dia = extract(dow from NovaData);
end loop;
SomaDias = SomaDias + 1;
  end loop;
  return fproxdiautil(NovaData);
end;
$BODY$
  LANGUAGE plpgsql VOLATILE
  COST 100;
ALTER FUNCTION fdiasuteis(date, integer)
  OWNER TO postgres;


No delphi tenho a mesma função, mas no postgres não está funcionando, onde
estou errando?

Não manjo muito de plpgsql então solicito a ajuda dos colegas


-- 
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] Fwd: Funcão para contar dias uteis

2013-08-05 Por tôpico Marcelo da Silva
Desculpa estava esquecendo de uma linha...

Agora está OK

-- Function: fproxdiautil(date)

-- DROP FUNCTION fproxdiautil(date);

CREATE OR REPLACE FUNCTION fdiasuteis(pData date, pDias integer)
  RETURNS date AS
$BODY$
declare
  Dia integer;
  SomaDias integer;
  NovaData date;
Begin
  SomaDias = 0;
  NovaData = pData;
  while (SomaDias  pDias) loop
NovaData = NovaData + 1;
Dia = extract(dow from NovaData);
while (Dia = 0 or Dia = 6) loop
  NovaData = NovaData + 1;
  Dia = extract(dow from NovaData);
end loop;
SomaDias = SomaDias + 1;
  end loop;
  return fproxdiautil(NovaData);
end;
$BODY$
  LANGUAGE plpgsql VOLATILE
  COST 100;
ALTER FUNCTION fdiasuteis(date, integer)
  OWNER TO postgres;


Marcelo 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] Ajuda com consulta

2013-07-26 Por tôpico Marcelo da Silva
Tenho o seguinte select que me traz todas as tabelas que possui o campo
cod_id:

select table_name from information_schema.columns
where table_schema not in(' pg_catalog ', ' information_schema ')
  and(column_name = 'cod_id')

Isso pode te dar uma luz de como fazer seu select


Marcelo Silva
-
Desenvolvedor Delphi / PHP




Em 26 de julho de 2013 11:51, Glauco Torres torres.gla...@gmail.comescreveu:

 Bom dia Pessoal!

 Seguinte preciso encontrar em todas as minhas tabelas a coluna de nome
 'numeronota'  e trazer seus respectivos conteúdos.

 Pesquisei algumas coisas mais não encontrei nada para PostgreSQL, o nome
 disso se não estou enganado é reflexão de colunas.

 Grato

 Att Glauco Torres


 ___
 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] Ajuda com consulta

2013-07-26 Por tôpico Marcelo da Silva
Veja se consegue juntar ao select recursivo depois de listas as tabelas:

with recursive tabelarec (campos) as
(
select campos from tabela
where (condicao)
UNION ALL
select campos from tabela a
INNER JOIN tabela  b ON(b.campo = a.campo)

select campos from tabelarec
where (condicao)




Em 26 de julho de 2013 14:26, Glauco Torres torres.gla...@gmail.comescreveu:


 Tenho o seguinte select que me traz todas as tabelas que possui o campo
 cod_id:

 select table_name from information_schema.columns
 where table_schema not in(' pg_catalog ', ' information_schema ')
   and(column_name = 'cod_id')

 Isso pode te dar uma luz de como fazer seu select


 Pois é essa consulta eu já tinha conseguido fazer ela, o problema é o
 depois, mais mesmo assim obrigado.


 ___
 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


[pgbr-geral] Trim X Chr(13) X Espaco

2013-07-22 Por tôpico Marcelo da Silva
Pessoal, tenho o seguinte, sabe como é o usuário no copia e cola, as vezes
vem caracteres invisiveis, mas que nos dão uma dor de cabeça.

Veja os exemplos dos select abaixo:

SELECT 'TESTE'  = TESTE
SELECT TRIM('TESTE ') = TESTE
SELECT TRIM('TESTE
') = TESTE 

Vejam que o ultimo select tem um Chr(13) no final da string, o que deixa o
Trim menos eficiente pois ele tira o chr(13) mas deixa um espaço.

Me parece que o Trim entende que logo depois do   tem um novo caracter,
então ele passa a considerar o   como um intervalo de palavras... isso
acaba causando problemas numa verificação no Delphi, que que o Trim do
Delphi limpa mesmo caracteres como chr(13) quando percebe que não há mais
caracteres visiveis.

Pergunta: Isso é um bug do trim Postgres ou esse funcionamento está correto?

Imaginem uma string Teste





Ele acaba deixando um caracter em branco no final, no meu ver parece algo
errado com o Trim.




-- 
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] Trim X Chr(13) X Espaco

2013-07-22 Por tôpico Marcelo da Silva
Hum... vamos ao plano G então


Em 22 de julho de 2013 14:12, Fabiano Abreu
fabianoabreual...@gmail.comescreveu:

 Marcelo,

 Tenho este mesmo problema no MySQL. O trim realmente não tira o carácter,
 até porque o carácter enter não é um espaço, creio que seja o padrão ANSI
 mesmo.

 Abraços.

 Fabiano Abreu
 paposql.blogspot.com.br
 Em 22/07/2013 12:49, Marcelo da Silva marc...@ig.com.br escreveu:

 Pessoal, tenho o seguinte, sabe como é o usuário no copia e cola, as
 vezes vem caracteres invisiveis, mas que nos dão uma dor de cabeça.

 Veja os exemplos dos select abaixo:

  SELECT 'TESTE'  = TESTE
 SELECT TRIM('TESTE ') = TESTE
 SELECT TRIM('TESTE
 ') = TESTE 

 Vejam que o ultimo select tem um Chr(13) no final da string, o que deixa
 o Trim menos eficiente pois ele tira o chr(13) mas deixa um espaço.

 Me parece que o Trim entende que logo depois do   tem um novo caracter,
 então ele passa a considerar o   como um intervalo de palavras... isso
 acaba causando problemas numa verificação no Delphi, que que o Trim do
 Delphi limpa mesmo caracteres como chr(13) quando percebe que não há mais
 caracteres visiveis.

 Pergunta: Isso é um bug do trim Postgres ou esse funcionamento está
 correto?

 Imaginem uma string Teste



 

 Ele acaba deixando um caracter em branco no final, no meu ver parece algo
 errado com o Trim.




 --
 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] Tabela já nasceu lenta, pode?

2013-07-17 Por tôpico Marcelo da Silva
Eu já li com respeito ao campos com dados repetitivos, estes aconselha-se a
vir primeiro para otimizar a consulta.
Por exemplo:

Tabela Clientes
  cod_cli integer
  nome varchar(50)
  cidade varchar(50)
  estado char(1)

select * from clientes
where (estado not in('SP'))
  and(cidade = 'VARGEM')

Dessa forma como estado possui muitos valores duplicados ele já elimina
muitos registros...

Mas isso lí em matéria para o MySQL, não sei se é aplicavel no Postgres
(imagino que sim)
Também vejo que tudo vai depender da disposição dos indices também, já que
normalmente não se cria indices para capos tipo Flag (S/N, UF, V/F e etc)

Bem, qualquer dica é bem vinda :)


Marcelo Silva




Em 17 de julho de 2013 11:15, Fabiano Machado Dias 
fabi...@wolaksistemas.com.br escreveu:

  Em 16-07-2013 09:03, Cicero Neto escreveu:
 --corte--

 Caso use a clausura WHERE pririze-a INVERTENTO a ordem dos campos EXE:-
 WHERE CAMPO4,3,2,1.

 --corte--


 Bom dia,

 Você pode indicar alguma documentação onde informa isto?

 Já li toda a documentação do PostgreSQL, principalmente a parte de
 otimização e reescrita de SQL e não lembro de algo informando que a ordem
 de campos no WHERE tem impacto no desempenho, inclusive já fiz testes e
 nunca observei alteração.

 Como já faz um tempo que li gostaria de saber de onde você tirou esta
 informação, posso estar enganado, mas acredito que não exista nenhuma
 relação na ordem do WHERE em relação a desempenho na consulta.

 Abraço,
 Fabiano Machado Dias

- Português - detectado
- Inglês
- Português


- Inglês
- Português

#13fecfcefe68618b_

 ___
 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] Tabela já nasceu lenta, pode?

2013-07-17 Por tôpico Marcelo da Silva
Opa... Euler, um detalhe me chamou a atenção:

 (é claro que ele vai respeitar a ordem indicada
com parênteses).

Como assim, poderia dar um exemplo num simples SQL ?

Gostaria de saber sobre isso, pois eu sempre separo as condições entre
parenteses

SELECT * FROM TABELA WHERE (CONDICAO1)AND(CONDICAO2) ETC

Faço isso para melhor leitura mesmo... vai que estou errando...



Em 17 de julho de 2013 15:09, Euler Taveira eu...@timbira.com.br escreveu:

 On 17-07-2013 12:58, engine.gro...@gmail.com wrote:
  Vou aproveitar uma explicação que tive de um DBA Oracle...(eu sei, a
  lista é de PG)...
 
 Oracle *não* é Postgres. ;)

   Procure no where sempre colocar os campos que pertencem a chave de
  indice da tabela, na mesma ordem se a chave for composta, pois o banco
  utiliza a estatistica para realizar a pesquisa e se a chave for composta
  e a formatacao da filtragem nao for igual a chave, entao o fitro será
  feito sem utilizar a estatistica da tabela  
 
 Isso não é verdade! O otimizador é esperto o suficiente para utilizar
 primeiro os campos com *maior* seletividade independente da ordem em que
 eles aparecem no WHERE (é claro que ele vai respeitar a ordem indicada
 com parênteses).

 Se o outro banco de dados faz isso, ele está anos-luz atrás do Postgres
 -- que já faz isso a bastante tempo. Porém, duvido que isso seja verdade
 no banco de dados do Larry.


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




-- 
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] Tabela já nasceu lenta, pode?

2013-07-17 Por tôpico Marcelo da Silva
A sim, neste caso seria a regra matemática por assim dizer, ufa, pensei que
fosse a respeito da nomenclatura.

É o velho esquema (1 + 2 * 3) é diferente de ((1 + 2) * 3)

Já ia pensando que teria que rever todas as minhas Querys rsrsrs


Em 17 de julho de 2013 15:27, Alessandro Gonçalves ale...@gmail.comescreveu:

 Se o c3 tiver uma seletividade maior que c1 o banco vai respeitar os
 parenteses e vai primeiramente  considerar o c1

 SELECT * FROM TABELA WHERE ((c1 == 1) AND c3 == 1)


 Em 17 de julho de 2013 15:16, Marcelo da Silva marc...@ig.com.brescreveu:

 Opa... Euler, um detalhe me chamou a atenção:

  (é claro que ele vai respeitar a ordem indicada
 com parênteses).

 Como assim, poderia dar um exemplo num simples SQL ?

 Gostaria de saber sobre isso, pois eu sempre separo as condições entre
 parenteses

 SELECT * FROM TABELA WHERE (CONDICAO1)AND(CONDICAO2) ETC

 Faço isso para melhor leitura mesmo... vai que estou errando...



 Em 17 de julho de 2013 15:09, Euler Taveira eu...@timbira.com.brescreveu:

 On 17-07-2013 12:58, engine.gro...@gmail.com wrote:
  Vou aproveitar uma explicação que tive de um DBA Oracle...(eu sei, a
  lista é de PG)...
 
 Oracle *não* é Postgres. ;)

   Procure no where sempre colocar os campos que pertencem a chave de
  indice da tabela, na mesma ordem se a chave for composta, pois o banco
  utiliza a estatistica para realizar a pesquisa e se a chave for
 composta
  e a formatacao da filtragem nao for igual a chave, entao o fitro será
  feito sem utilizar a estatistica da tabela  
 
 Isso não é verdade! O otimizador é esperto o suficiente para utilizar
 primeiro os campos com *maior* seletividade independente da ordem em que
 eles aparecem no WHERE (é claro que ele vai respeitar a ordem indicada
 com parênteses).

 Se o outro banco de dados faz isso, ele está anos-luz atrás do Postgres
 -- que já faz isso a bastante tempo. Porém, duvido que isso seja verdade
 no banco de dados do Larry.


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




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




 --
 *   *Alessandro Gonçalves
 Programador de Sistemas para Web

 ___
 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] Expressão Regular para CNPJ e CPF via SQL

2013-07-15 Por tôpico Marcelo da Silva
Interessante Osvaldo...
Mas por que será que o Postgres colocar um espaço no inicio da String ?
Veja:

SELECT to_char(01234567890, '000.000.000-00')

Result =  012.345.678-90


Marcelo Silva
--


Em 15 de julho de 2013 15:38, Osvaldo Kussama
osvaldo.kuss...@gmail.comescreveu:

 Em 15/07/13, Giovani Rodriguesgiovani...@gmail.com escreveu:
  Boa tarde pessoal.
 
  Existe a possibilidade no postgres de formatar um campo cnpj ou cpf
 direto
  na consulta com expressão regulares?
 
  Eu armazeno somente números na tabela para esses campos.
 


 Uma maneira é você apenas formatar para exibição. Por exemplo:
 bdteste=# SELECT to_char(01234567890, '000.000.000-00');
  to_char
 -
   012.345.678-90

 SELECT to_char(012345678000123, '00.000.000/-00');
to_char
 -
   12.345.678/0001-23
 (1 row)

 Osvaldo
 ___
 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] Expressão Regular para CNPJ e CPF via SQL

2013-07-15 Por tôpico Marcelo da Silva
Hum... interessante... é bom saber desses detalhes pra não ficar dando
aqueles jeitinhos pra mostrar os resultados, muito bom.


2013/7/15 Osvaldo Kussama osvaldo.kuss...@gmail.com

 2013/7/15, Osvaldo Kussama osvaldo.kuss...@gmail.com:
  Em 15/07/13, Marcelo da Silvamarc...@ig.com.br escreveu:
  Interessante Osvaldo...
  Mas por que será que o Postgres colocar um espaço no inicio da String ?
  Veja:
 
  SELECT to_char(01234567890, '000.000.000-00')
 
  Result =  012.345.678-90
 
 
 
  Coloque FM (FM prefix - fill mode (suppress padding blanks and
  trailing zeroes)):
 
  bdteste=# SELECT '[' || to_char(012345678000123,
  '00.000.000/-00') || ']';
 ?column?
  ---
   [ 12.345.678/0001-23]
  (1 row)
 
  bdteste=# SELECT '[' || to_char(012345678000123,
  'FM00.000.000/-00') || ']';
 ?column?
  --
   [12.345.678/0001-23]
  (1 row)
 
  Osvaldo
 
 
 http://www.postgresql.org/docs/current/interactive/functions-formatting.html
 


 Complementando:

 O espaço é para um eventual sinal. No caso de positivo ele deixa em branco:

 bdteste=# SELECT '[' || to_char(-012345678000123,
 '00.000.000/-00') || ']';
?column?
 ---
  [-12.345.678/0001-23]

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


[pgbr-geral] Tabela já nasceu lenta, pode?

2013-07-15 Por tôpico Marcelo da Silva
Algumas tabelas do meu banco acabam sendo mais lentas para abrir do outras,
o que pode ser?

Sei que muito coisa pode influenciar em ralação a hardware e configuração,
mas uma tabela ser melhor que outra ainda não tinha visto.
Por exemplo, tenho a tabela de clientes com media de 5mil registros num
select * from tabela, sem nenhum filtro ele demora 1617ms para abrir, já
outra tabela com 103 registros demora 3927ms

Como pode isso ?

Meu servidor deve estar com problema de balanceamento, rs ?

Observando ambas as tabelas não existe nada de extraordinário entre elas,
ambas foram criadas do mesmo modo e seus indices são somente em campos mais
utilizados em selects, porem meus testes foram em select simples, sem
filtro.

Não estou entendendo porque a lentidão em apenas algumas tabelas. (com
poucos registros)

-- 
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] Duvida básica LEFT JOIN x NOT IN

2013-07-05 Por tôpico Marcelo da Silva
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


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


[pgbr-geral] Validar email

2013-07-04 Por tôpico Marcelo da Silva
Pessoal, tenho a seguinte função:

-- Function: fvalidaemail(text)

-- DROP FUNCTION fvalidaemail(text);

CREATE OR REPLACE FUNCTION fvalidaemail(text)
  RETURNS boolean AS
$BODY$select $1 ~ '^[^@\s]+@[^@\s]+(\.[^@\s]+)+$' as result
$BODY$
  LANGUAGE sql VOLATILE
  COST 100;
ALTER FUNCTION fvalidaemail(text)
  OWNER TO postgres;


Peguei esta função na Web, mas tem algo estranho, ela está considerando
emails abaixo como Falso

Emails:
neurivaldocas...@terra.com.br
baronesaveicu...@terra.com.br
andressa-...@bol.com.br
neurivaldocas...@terra.com.br
etc

Olhei bastante e não vi nada de errado com os emails citados

-- 
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] Visualizar imagens do campo Bytea (curiosidade)

2013-07-03 Por tôpico Marcelo da Silva
Uma curiosidade,

Tem como por um select pode ser no PgAdmin por exemplo, visualizar uma
imagem que foi gravada num campo Bytea ?

Ou precisa sempre uma manobra com um componente específico?

Por exemplo, hoje eu visualizo exportando de uma Query do Delphi assim:

MinhaQueryCampoImagem.SaveToFile('nomedoarquivo.jpg');


-- 
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] parametros para melhorar update

2013-06-28 Por tôpico Marcelo Henrique Gonçalves
Gostaria de lembrar que não estamos falando de Oracle, que usa UNDO e não
precisa tocar nos outros índices.

Estamos falando de MVCC e de suas tuplas.

https://devcenter.heroku.com/articles/postgresql-concurrency
Ler:
Disadvantages of
MVCChttps://devcenter.heroku.com/articles/postgresql-concurrency#disadvantages-of-mvcc
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] parametros para melhorar update

2013-06-28 Por tôpico Marcelo Henrique Gonçalves
Concordo com todas as afirmações do Flavio.
Só quis lembrar que no Oracle, a linha vai para UNDO e somente quando a
linha precisa mudar de ROWID os índices são atualizados (no caso de coluna
não indexada).
No update do PostgreSQL SEMPRE os índices serão atualizados de qualquer
forma.
Quando disse tupla morta era momentâneo, no momento do update apenas.
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] parametros para melhorar update

2013-06-28 Por tôpico Marcelo Henrique Gonçalves
Obrigado pela correção! Realmente palavra 'sempre' não deveria estar ali :).

O Flavio põe muito bem a implementação do HOT e é importante ter isso em
mente pois é uma otimização de grande impacto no MVCC.

Mas voltando ao caso do nosso colega, acho que no caso dele os índices
estão sendo atualizados pois eu acho que as linhas não estão cabendo na
mesma página. Mas não achei documentação especificando isso detalhadamente.
Se alguém tiver peço que envie por favor. :(

Até por curiosidade fui checar isso e parece que no passado tinha que usar
uma sintaxe especial 8-O.

http://pgsql.tapoueh.org/site/html/misc/hot.html

http://www.postgresql.org/message-id/2e78013d0611141101m6110d275o93304e7ca31be...@mail.gmail.com




-- 
Marcelo Henrique Gonçalves
+55 19 8828 7958
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] parametros para melhorar update

2013-06-28 Por tôpico Marcelo Henrique Gonçalves
Fique atento que com o crescimento da tabela o sort pode passar a ser feito
em disco demorando e impactando o IO da máquina.
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Restaurar base linux em windows

2013-06-27 Por tôpico Marcelo da Silva
Eu tenho o seguinte senário:

Servidor: Linux 64bits, Postgres 9.1

Maquina desenvolvimento: Windows 64bits, Postgres 9.1

Para administrar as bases utilizo PgAdmin3 no Windows, faço backup e
restore tranquilamente entre as máquinas.

Utilizo o Codepage UTF-8 atualmente


Numa outra configuração que peguei pra dar manutenção:

Base em SQL_ANSI Postgres 7.2
Para trazer para o Postgres UTF-8 versão 9.1
Fiz o seguinte:

PgAdmin3 - Backup na base SQL_ANSI para LATIN1
PgAdmin3 - Restore no Backup LATIN1 para UTF-8

Tudo ocorreu belezinha

Esses são alguns cases que tenho


Marcelo Silva
---
Desenvolvedor Delphi / PHP
Postgres 9.1


Em 27 de junho de 2013 09:47, Jean Domingues ejdom...@yahoo.com.brescreveu:

  Pessoal,
 
  queria saber se é possível restaurar uma cópia da pasta de dados do
 linux em
  um servidor pg de mesma versão no windows (64 bits nos dois).
 
  bom dia,
  negativo, somente um dump, devido o filesystem diferente.
  vc nao consegue nem se for de linux para linux, e se a instalação é 64
 e o
  destino 32 bits, ou vice versa.
 
 A questão não é o sistema de arquivos, mas o sistema operacional mesmo.
 Os arquivos de dados do PostgreSQL é que ficam diferentes de um S.O. pra
 outro ou de uma arquitetura para outra.
 Um PostgreSQL num Solaris com ZFS não pode ser copiado para um FreeBSD
 com ZFS, também não funcionará.
 


 OK, pessoal. Obrigado a todos pelas respostas.
 ___
 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] parametros para melhorar update

2013-06-27 Por tôpico Marcelo Henrique Gonçalves
Seu problema não parece de tuning da instância PostgreSQL e sim de
arquitetura.
Estude redução dos índices, melhor where clause para o update, FKs que
apontam para a PK dessa, etc...


2013/6/27 Douglas Fabiano Specht douglasfabi...@gmail.com



 Em 26 de junho de 2013 15:06, Marcelo Henrique Gonçalves 
 billm...@gmail.com escreveu:

 Depende, todos ou quase nenhum.

 È necessário ter uma noção:

 a) Banco OLTP ou DW?
 b) Número de updates por segundo, usará índice na busca pela linha?
 c) Número aproximado de transações / segundo no banco
 d) Tamanho da tabela, e do índice
 e) Tamanho da memória da máquina (justificativa para 1GB de
 shared_buffer).

 Mostrar o explain do udpate, ajuda. Você precisa saber a frequência de
 commit do seu banco...


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


 Bom dia Pessoal,
 essa tabela tem uns 100 campos e umas 8 fk e 9 indices.

 segue as informações,
 explain:

 Update on lanccaixa  (cost=0.00..197881.30 rows=7166 width=633) (actual
 time=1012846.965..1012846.965 rows=0 loops=1)
   -  Seq Scan on lanccaixa  (cost=0.00..197881.30 rows=7166 width=633)
 (actual time=25.047..58396.786 rows=1413418 loops=1)
 Filter: (flindpag IS NULL)
 Trigger for constraint fkdocfiscalser: time=66582.215 calls=1413418
 Trigger for constraint fklanccaixaconcor: time=5596.281 calls=1413418
 Trigger for constraint fklanccaixaplacon: time=5586.670 calls=1413418
 Trigger for constraint fklanccxadocfiscal: time=5274.534 calls=1366084
 Trigger for constraint fklanccxcdcentro: time=5480.920 calls=1413418
 Trigger for constraint fklanccxhistlanccre: time=5467.979 calls=1413418
 Trigger for constraint fklanccxhistlancdeb: time=5400.965 calls=1413418
 Trigger for constraint fklcxacdadiant: time=5418.880 calls=1413418
 Total runtime: 1119142.220 ms


 a) Banco OLTP ou DW?
 OLTP
 b) Número de updates por segundo, usará índice na busca pela linha?
 esse update é num troca versao de aplicativo, ou seja so será executado
 uma unica vez, em cada cliente. Nao utilizara indice na busca.

 c) Número aproximado de transações / segundo no banco
 d) Tamanho da tabela, e do índice
 tamanho da tabela, lanccaixa;1434 MB; com indices: 3010 MB

 e) Tamanho da memória da máquina (justificativa para 1GB de shared_buffer).
 4gb, mas é windows.

 --

 Douglas Fabiano Specht

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




-- 
Marcelo Henrique Gonçalves
+55 19 8828 7958
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] parametros para melhorar update

2013-06-26 Por tôpico Marcelo Henrique Gonçalves
Depende, todos ou quase nenhum.

È necessário ter uma noção:

a) Banco OLTP ou DW?
b) Número de updates por segundo, usará índice na busca pela linha?
c) Número aproximado de transações / segundo no banco
d) Tamanho da tabela, e do índice
e) Tamanho da memória da máquina (justificativa para 1GB de shared_buffer).

Mostrar o explain do udpate, ajuda. Você precisa saber a frequência de
commit do seu banco...
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Execução de backup lógico (pg_dump) consumindo muitas horas na execução

2013-06-21 Por tôpico Marcelo Henrique Gonçalves
LOBS estão em formato binário e ganham quase nada em compactação.
O backup pode demorar também por causa do checkpoint.

Envie o tempo médio de checkpoint, begin_backup, RAM da máqiuna,
shared_buffer... o que mais puder enviar de config da instância
___
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   5   6   7   8   9   >