Re: [pgbr-geral] Ajuda modelagem

2009-08-11 Por tôpico Fabiano Chiqueti
Daê Fabio, blz?

Então, eu tentaria assim ( pq já vi soluções para problemas
semelhantes implementadas assim):
1-  Faria uma tabela genérica instituição, com os dados comuns a todas
as instituições.
2 - Faria uma tabela detalhe para cada tipo de instituição, com uma fk
referenciando a tabela instituição (relação 1 para 1). Por exemplo,
tabela detalhe_oab, detalhe_cartorio, detalhe_tj, etc.
3- Na tabela usuário:
a) Colocaria uma fk apontando para instituição OU ENTÃO
b) Criaria uma entidade relacionamento para ligar a instituição ao
usuário. Essa soluçãopossibilitaria uma instituição possuir mais
de um usuário ou vice-versa, mas não necessariamente.

Bem, esse seria o meu primeiro esboço. Peço aos colegas da lista que
dêem mais sugestões.

Att

Chiqueti

2009/8/11 fabio.ebner fabio.eb...@dnasolution.com.br:
 Pessoa, tenho q modelar um banco mas nao estou conseguindo, sera que alguem 
 pode me dar uma ajuda? o projeto e o seguinte:

 tenho q fazer um sistema de consultas, e respostas(essa parte de consulta e 
 resposta bele, o problema e a parte de atores) tenho q ter toda uma 
 hierarquia de usuario (um usuario master, que pode adicionar varios usuarios) 
 porem esse usuario master, pode ser tanto de uma instituicao(OAB, CARTORIO, 
 TRIBUNAL DE JUSTICA, EMPRESA) como pode ser uma Pessoa fisica normal, antes 
 eu tinha criado uma tabela de INSTITUICAO porem o meu problema eh que os 
 dados q eu tenho q informar para cada instituicao, sao complemente diferente 
 entre elas. cada uma tem uma peculiaridade, que acho ficar inviavel juntar td 
 em uma tabela soh, pensei em separa-las, mas dai o problema de eu separar as 
 tabelas e como vou atrelar um usuario a um tipo de instituicao, se eu deixar 
 apenas um campo de tipo cd_instituicao no usuario sem referenciar ele a uma 
 unica tabela, como vou saber em qual tabela buscar os dados da instituicao 
 daquele usuario, isso eh se ele tiver uma instituicao, por exemplo pessoa 
 fisica nao tem
 instituicao.


 entenderam??
 ___
 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] Res: Ajuda modelagem

2009-08-11 Por tôpico Marcelo Takatsu
Bom, pelo que entendi, a hierarquia de usuários não está ligada à instituição 
então, eu criaria uma entidade hierarquia_usuario (ou algo assim) e a ligaria 
com a entidade usuario.

Os usuários que tivessem a fk para hierarquia = master poderiam criar
usuários para sua instituição (fk vinda de instituição) e por ai vai...






De: Fabiano Chiqueti chiqu...@gmail.com
Para: fabio.ebner fabio.eb...@dnasolution.com.br; Comunidade PostgreSQL 
Brasileira pgbr-geral@listas.postgresql.org.br
Enviadas: Terça-feira, 11 de Agosto de 2009 12:11:47
Assunto: Re: [pgbr-geral] Ajuda modelagem

Daê Fabio, blz?

Então, eu tentaria assim ( pq já vi soluções para problemas
semelhantes implementadas assim):
1-  Faria uma tabela genérica instituição, com os dados comuns a todas
as instituições.
2 - Faria uma tabela detalhe para cada tipo de instituição, com uma fk
referenciando a tabela instituição (relação 1 para 1). Por exemplo,
tabela detalhe_oab, detalhe_cartorio, detalhe_tj, etc.
3- Na tabela usuário:
a) Colocaria uma fk apontando para instituição OU ENTÃO
b) Criaria uma entidade relacionamento para ligar a instituição ao
usuário. Essa soluçãopossibilitaria uma instituição possuir mais
de um usuário ou vice-versa, mas não necessariamente.

Bem, esse seria o meu primeiro esboço. Peço aos colegas da lista que
dêem mais sugestões.

Att

Chiqueti

2009/8/11 fabio.ebner fabio.eb...@dnasolution.com.br:
 Pessoa, tenho q modelar um banco mas nao estou conseguindo, sera que alguem 
 pode me dar uma ajuda? o projeto e o seguinte:

 tenho q fazer um sistema de consultas, e respostas(essa parte de consulta e 
 resposta bele, o problema e a parte de atores) tenho q ter toda uma 
 hierarquia de usuario (um usuario master, que pode adicionar varios usuarios) 
 porem esse usuario master, pode ser tanto de uma instituicao(OAB, CARTORIO, 
 TRIBUNAL DE JUSTICA, EMPRESA) como pode ser uma Pessoa fisica normal, antes 
 eu tinha criado uma tabela de INSTITUICAO porem o meu problema eh que os 
 dados q eu tenho q informar para cada instituicao, sao complemente diferente 
 entre elas. cada uma tem uma peculiaridade, que acho ficar inviavel juntar td 
 em uma tabela soh, pensei em separa-las, mas dai o problema de eu separar as 
 tabelas e como vou atrelar um usuario a um tipo de instituicao, se eu deixar 
 apenas um campo de tipo cd_instituicao no usuario sem referenciar ele a uma 
 unica tabela, como vou saber em qual tabela buscar os dados da instituicao 
 daquele usuario, isso eh se ele tiver uma instituicao, por
 exemplo pessoa fisica nao tem
 instituicao.


 entenderam??
 ___
 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



  

Veja quais são os assuntos do momento no Yahoo! +Buscados
http://br.maisbuscados.yahoo.com___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] funcionamento do driver postgresql-8.4...jdbc4.jar

2009-08-11 Por tôpico Dickson S. Guedes
Em Mon, 10 Aug 2009 16:50:26 -0300, jorge sanfelice  
jorgesanfel...@gmail.com escreveu:
 Resumindo, estao acontecendo esses  análise de..., ligação e
 executar e nem imagino o que esta provocando isso no log do
 banco.

Jorge,


Você utiliza Hibernate ou algo do gênero? É comum alguns profissionais  
habilitarem no Hibernate a opção para utilizar PreparedStatement e ele  
trata isto globalmente.

[]s
-- 
Dickson S. Guedes
mail/xmpp: gue...@guedesoft.net - skype: guediz
http://guedesoft.net - http://www.postgresql.org.br
http://www.rnp.br/keyserver/pks/lookup?search=0x8F3E3C06D428D10A
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


[pgbr-geral] pg_migrator

2009-08-11 Por tôpico Alisson Viegas
Boa tarde, pessoal.

Alguém pode me indicar um manual para usar o pg_migrator no Windows 2008?

Obrigado!

 

At.te,
Alisson Viegas
Acsiv Sistemas

 

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


[pgbr-geral] Procedure que envia um udp.

2009-08-11 Por tôpico Mário Oshiro
Ola.
Pessoal, eu tenho o seguinte script em perl :
/
#!/usr/bin/env perl
use IO::Socket;
my $sock = new IO::Socket::INET (
PeerAddr = 'localhost',
PeerPort = '7070',
Proto = 'udp',
);
die Could not create socket: $!\n unless $sock;
print $sock $1;
close($sock);
/
Alguem sabe se este script pode virar um stored procedure no postgresql.

Ou entao, como fazer um /system call /de dentro de uma procedure 
chamando este meu script perl.

Muito Obrigado.


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


Re: [pgbr-geral] pg_migrator

2009-08-11 Por tôpico Osvaldo Kussama
2009/8/11 Alisson Viegas li...@acsiv.com.br:

 Alguém pode me indicar um manual para usar o pg_migrator no Windows 2008?



Você já leu os arquivos README, INSTALL e IMPLEMENTATION que fazem
parte do pacote?

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


[pgbr-geral] BLOQUEIO DE REGISTRO

2009-08-11 Por tôpico MIGUEL JOSE DE LIMA
Caros, participantes...
Sou iniciante neste mundo do PostgreSQL.
Trabalho com outro Banco de Dados - ADABAS (UNIX SOLARIS/MAINFRAME),
mas me incubiram de fazer testes no PostgreSQL para bloquer registros.
Então...

Estou precisando de ajuda para bloquear a leitura de um registro, ou seja,
em um cenário como:
 Atualização de Estoque de um Material :
Antes de atualizar o estoque do material selecionado eu preciso bloquear o
registro para que
nenhuma outra sessão possa obter o dado do registro.
PRECISO DE UMA LEITURA EXCLUSIVA - TOTALMENTE RESTRITIVA.
Estou usando o PostgreSQL 8.3.7 para os testes - em linux
Já li e reli sobre o Isolamento de Transação, mas pode ser que eu não esteja
entendendo...???
Fiz o seguinte teste via psql:
- Na Sessão A
  db_teste=# BEGIN WORK;
  BEGIN
  db_teste=# LOCK TABLE tab_material IN ROW EXCLUSIVE MODE NOWAIT;
  LOCK TABLE
  db_teste=# SELECT * FROM tab_material where codg_serma='10' FOR UPDATE;
  resultado obtido ok!
  *** aqui eu preciso bloquear todos os materiais/itens (de um pedido) -
como ex. fiz de apenas 1 (um).

- Na Sessão B:
** Fiz o mesmo SELECT sem a clausula FOR UPDATE:
  SELECT * FROM tab_material where codg_serma='10'

  ** aqui eu obtive o resultado ok da leitura.
 Portanto, é aqui, neste ponto que não deveria permitir nenhuma leitura,
já que sessão A ainda não terminou!
 E AI ALGUÉM PODE ME AJUDAR!?

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


[pgbr-geral] Saiu a grade oficial do PGCon Brasil 2009

2009-08-11 Por tôpico Fábio Telles Rodriguez
Sim senhores, é verdade! Basta conferir em
http://pgcon.postgresql.org.br/2009/programacao.php.

Para quem estiver disposto a dar uma mãozinha na divulgação, segue o
texto abaixo:

[]s
Fábio Telles

--- X ---

A Unicamp já se prepara para receber a “3ª Conferência Brasileira de
PostgreSQL” ou simplesmente PGCon Brasil 2009.

Nos dias 23 e 24 de outubro, centenas de estudantes e profissionais de
TI participarão do maior evento latino-americano sobre o mais poderoso
sistema gerenciador de banco de dados de código livre do mundo, o
PostgreSQL.

A programação completa[1] da Conferência já foi confirmada. O evento
contará com palestras, tutoriais e os já consagrados Hacker Talks e
Lightning Talks. Estarão presentes desenvolvedores nacionais do
PostgreSQL como Euler Taveira e Francisco Figueiredo Jr,
internacionais como Bruce Momjian, Magnus Hagander além de
profissionais reconhecidos no Brasil como Fernando Ike, Roberto Mello,
Leandro Dutra entre outros.


Na programação, estarão temas como as últimas novidades da versão 8.4
do PostgreSQL, técnicas
de monitoramento, segurança, ajustes de desempenho e muito mais.

Mais informações sobre o evento, podem ser obtidas no site oficial em:
http://pgcon.postgresql.org.br/2009/index.php

[1] http://pgcon.postgresql.org.br/2009/programacao.php
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] BLOQUEIO DE REGISTRO

2009-08-11 Por tôpico JotaComm
Olá,

Vamos lá. Deixa eu ver se entendi o seu problema. O registro que está
bloqueado você não quer que o mesmo seja lido é isso?




2009/8/11 MIGUEL JOSE DE LIMA mig...@inlocsistemas.com.br

 Caros, participantes...
 Sou iniciante neste mundo do PostgreSQL.
 Trabalho com outro Banco de Dados - ADABAS (UNIX SOLARIS/MAINFRAME),
 mas me incubiram de fazer testes no PostgreSQL para bloquer registros.
 Então...

 Estou precisando de ajuda para bloquear a leitura de um registro, ou seja,
 em um cenário como:
  Atualização de Estoque de um Material :
 Antes de atualizar o estoque do material selecionado eu preciso bloquear o
 registro para que
 nenhuma outra sessão possa obter o dado do registro.
 PRECISO DE UMA LEITURA EXCLUSIVA - TOTALMENTE RESTRITIVA.
 Estou usando o PostgreSQL 8.3.7 para os testes - em linux
 Já li e reli sobre o Isolamento de Transação, mas pode ser que eu não
 esteja entendendo...???
 Fiz o seguinte teste via psql:
 - Na Sessão A
   db_teste=# BEGIN WORK;
   BEGIN
   db_teste=# LOCK TABLE tab_material IN ROW EXCLUSIVE MODE NOWAIT;
   LOCK TABLE
   db_teste=# SELECT * FROM tab_material where codg_serma='10' FOR UPDATE;
   resultado obtido ok!
   *** aqui eu preciso bloquear todos os materiais/itens (de um pedido) -
 como ex. fiz de apenas 1 (um).

 - Na Sessão B:
 ** Fiz o mesmo SELECT sem a clausula FOR UPDATE:
   SELECT * FROM tab_material where codg_serma='10'

   ** aqui eu obtive o resultado ok da leitura.
  Portanto, é aqui, neste ponto que não deveria permitir nenhuma
 leitura, já que sessão A ainda não terminou!


 Por que o registro aqui não pode ser lido? O PostgreSQL não bloqueia
operações de leitura, bloqueia operações de escrita como update e delete.
Por exemplo, se o registro tivesse sido modificado na sessão a o
PostgreSQL na sessão B iria ler o valor antigo antes da atualização porque
a mesma não foi efetivada (commit).

Por exemplo:

Para ficar mais claro, criei uma tabela chamada tab e contém 10 registros,
com valores de 1 a 10.

CREATE TABLE tab(codigo int);
INSERT INTO tab VALUES (generate_series(1,10));

SESSAO A:

BEGIN;
SELECT * FROM tab WHERE codigo=1;
UPDATE tab SET codigo=100 WHERE codigo=1;
--Vá para a SESSAO B;
COMMIT;


SESSAO B:
BEGIN;
SELECT * FROM tab WHERE codigo=1;
--Aqui você verá o registro 1 pois a transação (SESSAO A) que modificou este
registro ainda não foi efetivada. O registro de código 100 só será visível
aqui se for executado o comando commit na sessão anterior.
COMMIT;

Agora você conseguirá ver o registro atualizado nesta sessão.

Sua idéia era acontecer o que quando você tentasse ler o registro alterado
na SESSAO A?




  E AI ALGUÉM PODE ME AJUDAR!?

 Obrigado!





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


Espero ter ajudado.

Qualquer dúvida pergunta ai.

[]s

-- 
JotaComm
http://jotacomm.wordpress.com
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


Re: [pgbr-geral] BLOQUEIO DE REGISTRO

2009-08-11 Por tôpico Mário Oshiro
Em SQLServer, fiz um teste parecido com o seu.

Qdo vc faz um lock de registro ou trabela,  ele nao bloqueia a leitura 
de outras sessoes, ate' que a
sessao de posse do lock, faça um update de algum dado do registro.

Para bloquear o select que vc fez, faca em seguida um update com a mesmo 
where assim :

  db_teste=# SELECT * FROM tab_material where codg_serma='10' FOR UPDATE;
  update tab_material set codg_serma='10' where codg_serma='10' ;

teste la e depois envie o resultado.

até mais.



MIGUEL JOSE DE LIMA wrote:
 Caros, participantes...
 Sou iniciante neste mundo do PostgreSQL.
 Trabalho com outro Banco de Dados - ADABAS (UNIX SOLARIS/MAINFRAME),
 mas me incubiram de fazer testes no PostgreSQL para bloquer registros. 
 Então...

 Estou precisando de ajuda para bloquear a leitura de um registro, ou 
 seja,
 em um cenário como:
  Atualização de Estoque de um Material :
 Antes de atualizar o estoque do material selecionado eu preciso 
 bloquear o registro para que
 nenhuma outra sessão possa obter o dado do registro.
 PRECISO DE UMA LEITURA EXCLUSIVA - TOTALMENTE RESTRITIVA.
 Estou usando o PostgreSQL 8.3.7 para os testes - em linux
 Já li e reli sobre o Isolamento de Transação, mas pode ser que eu não 
 esteja entendendo...???
 Fiz o seguinte teste via psql:
 - Na Sessão A
   db_teste=# BEGIN WORK;
   BEGIN
   db_teste=# LOCK TABLE tab_material IN ROW EXCLUSIVE MODE NOWAIT;
   LOCK TABLE
   db_teste=# SELECT * FROM tab_material where codg_serma='10' FOR UPDATE;
   resultado obtido ok!
   *** aqui eu preciso bloquear todos os materiais/itens (de um pedido) 
 - como ex. fiz de apenas 1 (um).

 - Na Sessão B:
 ** Fiz o mesmo SELECT sem a clausula FOR UPDATE:
   SELECT * FROM tab_material where codg_serma='10'
  
   ** aqui eu obtive o resultado ok da leitura.
  Portanto, é aqui, neste ponto que não deveria permitir nenhuma 
 leitura, já que sessão A ainda não terminou!
  E AI ALGUÉM PODE ME AJUDAR!?

 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


Re: [pgbr-geral] Procedure que envia um udp.

2009-08-11 Por tôpico Fabrízio de Royes Mello
2009/8/11 Mário Oshiro mario.osh...@gmail.com

 Ola.
 Pessoal, eu tenho o seguinte script em perl :
 /
 #!/usr/bin/env perl
 use IO::Socket;
 my $sock = new IO::Socket::INET (
PeerAddr = 'localhost',
PeerPort = '7070',
Proto = 'udp',
 );
 die Could not create socket: $!\n unless $sock;
 print $sock $1;
 close($sock);


Não conheço muito de perl mas creio que um bom começo seria:

create or replace function open_socket() returns void as
$$

  use IO::Socket;
  my $sock = new IO::Socket::INET (
   PeerAddr = 'localhost',
   PeerPort = '7070',
   Proto = 'udp',
  );
  die Could not create socket: $!\n unless $sock;
  print $sock $1;
  close($sock);

  return;

$$
language plperlu;


Também uma olhada em [1] pode ser útil.


[1] http://www.postgresql.org/docs/8.4/interactive/plperl.html

-- 
Fabrízio de Royes Mello
 Blog sobre PostgreSQL: http://fabriziomello.blogspot.com
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Procedure que envia um udp.

2009-08-11 Por tôpico JotaComm
Olá,

Você pode usar a PL/Perl para trabalhar com isso no PostgreSQL. Para isso
basta adicionar a linguagem PL/Perl ao banco desejado.

Seria bom você executar o seguinte comando: pg_config --configure

A partir deste comando você verifica as opções passadas ao banco no momento
da compilação, assim você verá se você tem suporte para a criação de funções
em PL/Perl. Você deve-se atentar ao parâmetro --with-perl, ele deve estar
habilitado.

Obs: Isso você deve executar se você compilou o PostgreSQL.

2009/8/11 Mário Oshiro mario.osh...@gmail.com

 Ola.
 Pessoal, eu tenho o seguinte script em perl :
 /
 #!/usr/bin/env perl
 use IO::Socket;
 my $sock = new IO::Socket::INET (
PeerAddr = 'localhost',
PeerPort = '7070',
Proto = 'udp',
 );
 die Could not create socket: $!\n unless $sock;
 print $sock $1;
 close($sock);
 /
 Alguem sabe se este script pode virar um stored procedure no postgresql.

 Ou entao, como fazer um /system call /de dentro de uma procedure
 chamando este meu script perl.

 Muito Obrigado.


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



[]s
-- 
JotaComm
http://jotacomm.wordpress.com
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


Re: [pgbr-geral] BLOQUEIO DE REGISTRO

2009-08-11 Por tôpico MIGUEL JOSE DE LIMA
Oi Mário, Este é o problema a leitura nunca é bloqueada.
Fiz os testes pedidos, mas para mim não mudou nada!
Veja:
- Na sessão 1:
 db_teste=# BEGIN WORK;
 BEGIN
 db_teste=# LOCK TABLE tab_material IN ROW EXCLUSIVE MODE NOWAIT;
 LOCK TABLE
 db_teste=# UPDATE tab_material SET desc_serma = 'LAPIS Y' where
codg_serma='10';
 UPDATE 1
 db_teste=#   *** aguardando novo comando ***
- Na sessão 2:
  db_teste=# BEGIN WORK;
  BEGIN
  db_teste=# SELECT * FROM tab_material where codg_serma='10';
  codg_empr | codg_serma |  id_serma  | desc_serma
   ---++++--+--
   202   | 10 | 202010 | LAPIS Y|

É isso ai!!!??
Obrigado.

2009/8/11 Mário Oshiro mario.osh...@gmail.com

 Em SQLServer, fiz um teste parecido com o seu.

 Qdo vc faz um lock de registro ou trabela,  ele nao bloqueia a leitura
 de outras sessoes, ate' que a
 sessao de posse do lock, faça um update de algum dado do registro.

 Para bloquear o select que vc fez, faca em seguida um update com a mesmo
 where assim :

  db_teste=# SELECT * FROM tab_material where codg_serma='10' FOR UPDATE;
  update tab_material set codg_serma='10' where codg_serma='10' ;

 teste la e depois envie o resultado.

 até mais.



 MIGUEL JOSE DE LIMA wrote:
  Caros, participantes...
  Sou iniciante neste mundo do PostgreSQL.
  Trabalho com outro Banco de Dados - ADABAS (UNIX SOLARIS/MAINFRAME),
  mas me incubiram de fazer testes no PostgreSQL para bloquer registros.
  Então...
 
  Estou precisando de ajuda para bloquear a leitura de um registro, ou
  seja,
  em um cenário como:
   Atualização de Estoque de um Material :
  Antes de atualizar o estoque do material selecionado eu preciso
  bloquear o registro para que
  nenhuma outra sessão possa obter o dado do registro.
  PRECISO DE UMA LEITURA EXCLUSIVA - TOTALMENTE RESTRITIVA.
  Estou usando o PostgreSQL 8.3.7 para os testes - em linux
  Já li e reli sobre o Isolamento de Transação, mas pode ser que eu não
  esteja entendendo...???
  Fiz o seguinte teste via psql:
  - Na Sessão A
db_teste=# BEGIN WORK;
BEGIN
db_teste=# LOCK TABLE tab_material IN ROW EXCLUSIVE MODE NOWAIT;
LOCK TABLE
db_teste=# SELECT * FROM tab_material where codg_serma='10' FOR UPDATE;
resultado obtido ok!
*** aqui eu preciso bloquear todos os materiais/itens (de um pedido)
  - como ex. fiz de apenas 1 (um).
 
  - Na Sessão B:
  ** Fiz o mesmo SELECT sem a clausula FOR UPDATE:
SELECT * FROM tab_material where codg_serma='10'
 
** aqui eu obtive o resultado ok da leitura.
   Portanto, é aqui, neste ponto que não deveria permitir nenhuma
  leitura, já que sessão A ainda não terminou!
   E AI ALGUÉM PODE ME AJUDAR!?
 
  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] BLOQUEIO DE REGISTRO

2009-08-11 Por tôpico JotaComm
Olá, Miguel

Já comentei no email anterior e fiz uma pequena descrição de como isso
funciona. Você deu uma olhada no exemplo que mandei?

O PostgreSQL não bloqueia a leitura (SELECT), apenas operações de escrita
(UPDATE e DELETE).


2009/8/11 MIGUEL JOSE DE LIMA mig...@inlocsistemas.com.br

 Oi Mário, Este é o problema a leitura nunca é bloqueada.
 Fiz os testes pedidos, mas para mim não mudou nada!
 Veja:
 - Na sessão 1:
  db_teste=# BEGIN WORK;
  BEGIN
  db_teste=# LOCK TABLE tab_material IN ROW EXCLUSIVE MODE NOWAIT;
  LOCK TABLE
  db_teste=# UPDATE tab_material SET desc_serma = 'LAPIS Y' where
 codg_serma='10';
  UPDATE 1
  db_teste=#   *** aguardando novo comando ***
 - Na sessão 2:
   db_teste=# BEGIN WORK;
   BEGIN
   db_teste=# SELECT * FROM tab_material where codg_serma='10';
   codg_empr | codg_serma |  id_serma  | desc_serma
---++++--+--
202   | 10 | 202010 | LAPIS Y|

 É isso ai!!!??
 Obrigado.

 2009/8/11 Mário Oshiro mario.osh...@gmail.com

 Em SQLServer, fiz um teste parecido com o seu.

 Qdo vc faz um lock de registro ou trabela,  ele nao bloqueia a leitura
 de outras sessoes, ate' que a
 sessao de posse do lock, faça um update de algum dado do registro.

 Para bloquear o select que vc fez, faca em seguida um update com a mesmo
 where assim :

  db_teste=# SELECT * FROM tab_material where codg_serma='10' FOR UPDATE;
  update tab_material set codg_serma='10' where codg_serma='10' ;

 teste la e depois envie o resultado.

 até mais.



 MIGUEL JOSE DE LIMA wrote:
  Caros, participantes...
  Sou iniciante neste mundo do PostgreSQL.
  Trabalho com outro Banco de Dados - ADABAS (UNIX SOLARIS/MAINFRAME),
  mas me incubiram de fazer testes no PostgreSQL para bloquer registros.
  Então...
 
  Estou precisando de ajuda para bloquear a leitura de um registro, ou
  seja,
  em um cenário como:
   Atualização de Estoque de um Material :
  Antes de atualizar o estoque do material selecionado eu preciso
  bloquear o registro para que
  nenhuma outra sessão possa obter o dado do registro.
  PRECISO DE UMA LEITURA EXCLUSIVA - TOTALMENTE RESTRITIVA.
  Estou usando o PostgreSQL 8.3.7 para os testes - em linux
  Já li e reli sobre o Isolamento de Transação, mas pode ser que eu não
  esteja entendendo...???
  Fiz o seguinte teste via psql:
  - Na Sessão A
db_teste=# BEGIN WORK;
BEGIN
db_teste=# LOCK TABLE tab_material IN ROW EXCLUSIVE MODE NOWAIT;
LOCK TABLE
db_teste=# SELECT * FROM tab_material where codg_serma='10' FOR
 UPDATE;
resultado obtido ok!
*** aqui eu preciso bloquear todos os materiais/itens (de um pedido)
  - como ex. fiz de apenas 1 (um).
 
  - Na Sessão B:
  ** Fiz o mesmo SELECT sem a clausula FOR UPDATE:
SELECT * FROM tab_material where codg_serma='10'
 
** aqui eu obtive o resultado ok da leitura.
   Portanto, é aqui, neste ponto que não deveria permitir nenhuma
  leitura, já que sessão A ainda não terminou!
   E AI ALGUÉM PODE ME AJUDAR!?
 
  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



[]s
-- 
JotaComm
http://jotacomm.wordpress.com
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


Re: [pgbr-geral] BLOQUEIO DE REGISTRO

2009-08-11 Por tôpico Charly Frankl
Miguel, boa noite...

Para você bloquear os selects, faça todos com FOR UPDATE ... Ai você tem
opções, onde para retornar logo que está ocupado utilize NOWAIT.

Att,


2009/8/11 JotaComm jota.c...@gmail.com

 Olá, Miguel

 Já comentei no email anterior e fiz uma pequena descrição de como isso
 funciona. Você deu uma olhada no exemplo que mandei?

 O PostgreSQL não bloqueia a leitura (SELECT), apenas operações de escrita
 (UPDATE e DELETE).


 2009/8/11 MIGUEL JOSE DE LIMA mig...@inlocsistemas.com.br

 Oi Mário, Este é o problema a leitura nunca é bloqueada.
 Fiz os testes pedidos, mas para mim não mudou nada!
 Veja:
 - Na sessão 1:
  db_teste=# BEGIN WORK;
  BEGIN
  db_teste=# LOCK TABLE tab_material IN ROW EXCLUSIVE MODE NOWAIT;
  LOCK TABLE
  db_teste=# UPDATE tab_material SET desc_serma = 'LAPIS Y' where
 codg_serma='10';
  UPDATE 1
  db_teste=#   *** aguardando novo comando ***
 - Na sessão 2:
   db_teste=# BEGIN WORK;
   BEGIN
   db_teste=# SELECT * FROM tab_material where codg_serma='10';
   codg_empr | codg_serma |  id_serma  | desc_serma

---++++--+--
202   | 10 | 202010 | LAPIS Y|

 É isso ai!!!??
 Obrigado.

 2009/8/11 Mário Oshiro mario.osh...@gmail.com

 Em SQLServer, fiz um teste parecido com o seu.

 Qdo vc faz um lock de registro ou trabela,  ele nao bloqueia a leitura
 de outras sessoes, ate' que a
 sessao de posse do lock, faça um update de algum dado do registro.

 Para bloquear o select que vc fez, faca em seguida um update com a mesmo
 where assim :

  db_teste=# SELECT * FROM tab_material where codg_serma='10' FOR UPDATE;
  update tab_material set codg_serma='10' where codg_serma='10' ;

 teste la e depois envie o resultado.

 até mais.



 MIGUEL JOSE DE LIMA wrote:
  Caros, participantes...
  Sou iniciante neste mundo do PostgreSQL.
  Trabalho com outro Banco de Dados - ADABAS (UNIX SOLARIS/MAINFRAME),
  mas me incubiram de fazer testes no PostgreSQL para bloquer registros.
  Então...
 
  Estou precisando de ajuda para bloquear a leitura de um registro, ou
  seja,
  em um cenário como:
   Atualização de Estoque de um Material :
  Antes de atualizar o estoque do material selecionado eu preciso
  bloquear o registro para que
  nenhuma outra sessão possa obter o dado do registro.
  PRECISO DE UMA LEITURA EXCLUSIVA - TOTALMENTE RESTRITIVA.
  Estou usando o PostgreSQL 8.3.7 para os testes - em linux
  Já li e reli sobre o Isolamento de Transação, mas pode ser que eu não
  esteja entendendo...???
  Fiz o seguinte teste via psql:
  - Na Sessão A
db_teste=# BEGIN WORK;
BEGIN
db_teste=# LOCK TABLE tab_material IN ROW EXCLUSIVE MODE NOWAIT;
LOCK TABLE
db_teste=# SELECT * FROM tab_material where codg_serma='10' FOR
 UPDATE;
resultado obtido ok!
*** aqui eu preciso bloquear todos os materiais/itens (de um pedido)
  - como ex. fiz de apenas 1 (um).
 
  - Na Sessão B:
  ** Fiz o mesmo SELECT sem a clausula FOR UPDATE:
SELECT * FROM tab_material where codg_serma='10'
 
** aqui eu obtive o resultado ok da leitura.
   Portanto, é aqui, neste ponto que não deveria permitir nenhuma
  leitura, já que sessão A ainda não terminou!
   E AI ALGUÉM PODE ME AJUDAR!?
 
  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



 []s
 --
 JotaComm
 http://jotacomm.wordpress.com
 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




-- 
Charly Frankl
http://javadevilopers.blogspot.com/
charlyfra...@gmail.com
Linux user #391083
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Registros Estimados/ Registros Contados

2009-08-11 Por tôpico Fabiano Chiqueti
Olá Robinson!

Aqui na nossa empresa utilizamos PostgreSQL versões 8.3.7 e 8.4.0. Se
fala da propriedade que aparece no pgAdminIII (usamos versão 1.8.4)
denominada Registros (contados)? Por acaso ela fica com o valor não
contados? Aqui é assim também. É normal.

Att

Chiqueti

2009/8/10 Robinson robinsonbsi...@gmail.com:
 Bom dia Senhores(as):

 Após um problemão enfrentado na versão 8.1, onde deu crash em minha base de
 dados(
 http://listas.postgresql.org.br/pipermail/pgbr-geral/2009-July/016576.html ),
 finalmente consegui migrar para a versão 8.4.
 Até o momento está tudo rodando bem, apenas um item chamou minha atenção. Ao
 fazer manutenção no BD, eu percebi que algumas tabelas não atualizam o
 parâmetro registros contatos, apenas o estimado está OK.
 Alguém sabe se isso é uma mal sinal??

 Desde já agradeço pela atenção.
 ___
 pgbr-geral mailing list
 pgbr-geral@listas.postgresql.org.br
 https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


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


Re: [pgbr-geral] BLOQUEIO DE REGISTRO

2009-08-11 Por tôpico JotaComm
Olá, Leandro

Acho que você resumiu bem a questão. Apenas um comentário, quando falei do
PostgreSQL é que estamos falando do PostgreSQL, porém concordo com você que
o conceito é de SQL e não especificamente do PostgreSQL. Derrepente não me
expressei bem.

2009/8/11 Leandro Henrique Pereira Neto 
leandro-henrique.pere...@serpro.gov.br

  Pelo que conheço não é uma questão do PostgreSQL e sim de bancos padrão
 SQL, pelo menos nos mais populares (SqlServer, Oracle, MySQL, PostgreSQL e
 DB2).

 O SELECT simples nunca é bloqueado (somente se usar for update).
 Porém usar todos os SQL com FOR UPDATE pode travar todo o seu sistema
 rapidinho já que somente uma transação poderá ler os dados de cada vez, como
 em sistema OLTP temos normalmente mais leitura do que alteração a coisa
 acaba ficando complicada.

 O que tem são os conceitos de transação e de consistência de leitura.

 Talvez seja o caso de você pensar o sistema em temos de bancos SQL e não
 tentar fazer no PostgreSQL o que um banco como o Adabas faz pois estruturas
 de funcionamento e implementação totalmente diferentes.

 Leandro Henrique Pereira Neto
 Administração de bancos de dados




 Charly Frankl escreveu:

 Miguel, boa noite...

 Para você bloquear os selects, faça todos com FOR UPDATE ... Ai você tem
 opções, onde para retornar logo que está ocupado utilize NOWAIT.

 Att,


 2009/8/11 JotaComm jota.c...@gmail.com

 Olá, Miguel

 Já comentei no email anterior e fiz uma pequena descrição de como isso
 funciona. Você deu uma olhada no exemplo que mandei?

 O PostgreSQL não bloqueia a leitura (SELECT), apenas operações de escrita
 (UPDATE e DELETE).


  2009/8/11 MIGUEL JOSE DE LIMA mig...@inlocsistemas.com.br

 Oi Mário, Este é o problema a leitura nunca é bloqueada.
  Fiz os testes pedidos, mas para mim não mudou nada!
 Veja:
 - Na sessão 1:
   db_teste=# BEGIN WORK;
  BEGIN
  db_teste=# LOCK TABLE tab_material IN ROW EXCLUSIVE MODE NOWAIT;
  LOCK TABLE
   db_teste=# UPDATE tab_material SET desc_serma = 'LAPIS Y' where
 codg_serma='10';
  UPDATE 1
  db_teste=#   *** aguardando novo comando ***
  - Na sessão 2:
db_teste=# BEGIN WORK;
   BEGIN
db_teste=# SELECT * FROM tab_material where codg_serma='10';
   codg_empr | codg_serma |  id_serma  | desc_serma

---++++--+--
202   | 10 | 202010 | LAPIS Y|

 É isso ai!!!??
 Obrigado.

  2009/8/11 Mário Oshiro mario.osh...@gmail.com

 Em SQLServer, fiz um teste parecido com o seu.

 Qdo vc faz um lock de registro ou trabela,  ele nao bloqueia a leitura
 de outras sessoes, ate' que a
 sessao de posse do lock, faça um update de algum dado do registro.

 Para bloquear o select que vc fez, faca em seguida um update com a mesmo
 where assim :

  db_teste=# SELECT * FROM tab_material where codg_serma='10' FOR UPDATE;
   update tab_material set codg_serma='10' where codg_serma='10' ;

 teste la e depois envie o resultado.

 até mais.



 MIGUEL JOSE DE LIMA wrote:
  Caros, participantes...
  Sou iniciante neste mundo do PostgreSQL.
  Trabalho com outro Banco de Dados - ADABAS (UNIX SOLARIS/MAINFRAME),
  mas me incubiram de fazer testes no PostgreSQL para bloquer registros.
  Então...
 
  Estou precisando de ajuda para bloquear a leitura de um registro, ou
  seja,
  em um cenário como:
   Atualização de Estoque de um Material :
  Antes de atualizar o estoque do material selecionado eu preciso
  bloquear o registro para que
  nenhuma outra sessão possa obter o dado do registro.
  PRECISO DE UMA LEITURA EXCLUSIVA - TOTALMENTE RESTRITIVA.
  Estou usando o PostgreSQL 8.3.7 para os testes - em linux
  Já li e reli sobre o Isolamento de Transação, mas pode ser que eu não
  esteja entendendo...???
  Fiz o seguinte teste via psql:
  - Na Sessão A
db_teste=# BEGIN WORK;
BEGIN
db_teste=# LOCK TABLE tab_material IN ROW EXCLUSIVE MODE NOWAIT;
LOCK TABLE
db_teste=# SELECT * FROM tab_material where codg_serma='10' FOR
 UPDATE;
resultado obtido ok!
*** aqui eu preciso bloquear todos os materiais/itens (de um pedido)
  - como ex. fiz de apenas 1 (um).
 
  - Na Sessão B:
  ** Fiz o mesmo SELECT sem a clausula FOR UPDATE:
SELECT * FROM tab_material where codg_serma='10'
 
** aqui eu obtive o resultado ok da leitura.
   Portanto, é aqui, neste ponto que não deveria permitir nenhuma
  leitura, já que sessão A ainda não terminou!
   E AI ALGUÉM PODE ME AJUDAR!?
 
  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 

Re: [pgbr-geral] Procedure que envia um udp.

2009-08-11 Por tôpico Mário Oshiro
O Perl esta instalado corretamente no banco.
Eu cosigo gerar procedures que manipulam strings e acessam o banco.
meu problema que nao sei como carregar a biblioteca use IO::Socket.


JotaComm wrote:
 Olá,

 Você pode usar a PL/Perl para trabalhar com isso no PostgreSQL. Para 
 isso basta adicionar a linguagem PL/Perl ao banco desejado.

 Seria bom você executar o seguinte comando: pg_config --configure

 A partir deste comando você verifica as opções passadas ao banco no 
 momento da compilação, assim você verá se você tem suporte para a 
 criação de funções em PL/Perl. Você deve-se atentar ao parâmetro 
 --with-perl, ele deve estar habilitado.

 Obs: Isso você deve executar se você compilou o PostgreSQL.

 2009/8/11 Mário Oshiro mario.osh...@gmail.com 
 mailto:mario.osh...@gmail.com

 Ola.
 Pessoal, eu tenho o seguinte script em perl :
 /
 #!/usr/bin/env perl
 use IO::Socket;
 my $sock = new IO::Socket::INET (
PeerAddr = 'localhost',
PeerPort = '7070',
Proto = 'udp',
 );
 die Could not create socket: $!\n unless $sock;
 print $sock $1;
 close($sock);
 /
 Alguem sabe se este script pode virar um stored procedure no
 postgresql.

 Ou entao, como fazer um /system call /de dentro de uma procedure
 chamando este meu script perl.

 Muito Obrigado.


 ___
 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



 []s
 -- 
 JotaComm
 http://jotacomm.wordpress.com
 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


Re: [pgbr-geral] Procedure que envia um udp.

2009-08-11 Por tôpico Daniel Gaspary
2009/8/11 Mário Oshiro mario.osh...@gmail.com:
 O Perl esta instalado corretamente no banco.
 Eu cosigo gerar procedures que manipulam strings e acessam o banco.
 meu problema que nao sei como carregar a biblioteca use IO::Socket.



Mário, não sei nada de perl, mas creio que o que tu precisa ver é se
está usando a versão correta de PL/Perl. Creio teria de ser a versão
Untrusted, Que vai permitir acessar fora do processo(do Postgres).

Segundo a página
http://www.postgresql.org/docs/8.3/interactive/plperl-trusted.html:

In general, the operations that are restricted are those that
interact with the environment. This includes file handle operations,
require, and use (for external modules). 

Depois disso, talvez seja preciso ver se essa biblioteca está ao
alcance do Postgres. Talvez seja preciso editar as variáveis de
ambiente do postgres.

Infelizmente não disse nada preciso, mas espero ao menos conseguir dar
algum norte.

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