[pgbr-geral] Restore Banco
Caros, Meu Windows corrompeu e eu não estou conseguindo fazer a restauração. Tenho todos meus arquivos guardados em outra unidade, por isso, a unica solução é mesmo formata-lo. Mas, lembrei que os arquivos de Data do Banco estão no disco C. Com o CD do Ubuntu(Linux), consegui visualizar a pasta do Postgres. Mas, não sei qual é o arquivo exato da minha base de dados. Copiei toda essa pasta do Postgres para uma outra unidade. Com esses arquivos, eu vou poder fazer o restore de meus bancos em outro banco Postgres? Fico No aguardo! Muito Obrigado a todos! -- Atenciosamente, *Marcel Felipe Farias da Costa* (71) 9102-2186 marcelffar...@gmail.com ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] Trigger AFTER
Preciso pegar um valor que esta em uma outra tabela, para conctenar com a matricula Ex.: Matricula antiga: 0123456 Matricula nova: sal0123456 Esse sal > vem do municipio "SALvador" Para pegar o nome do Municipio do campus, fiz uma função, que segue abaixo: CREATE OR REPLACE FUNCTION matricula_aluno(mat_aluno character varying) RETURNS character varying AS $BODY$ DECLARE municipio character varying(20); matriculanova character varying(20); BEGIN Select into municipio mun."MUN_NOME" From aluno a JOIN curso c ON a.curs_cod = c.curs_cod JOIN campus cm ON c.camp_cod = cm.camp_cod JOIN municipios mun ON cm.mun_cod = mun."MUN_COD" Where alun_matricula = mat_aluno; select into municipio substring(municipio from 0 for 4); select into municipio lower(municipio); matriculanova := municipio||mat_aluno; return matriculanova; END; $BODY$ LANGUAGE plpgsql VOLATILE COST 100; ALTER FUNCTION matricula_aluno(character varying) OWNER TO postgres; Essa função, faz todo um select, que chega ate o MUN_NOME, quando o alun_matricula = parametro passado pela função. Essa função esta funcionando. Pega as 3 primeiras letras do municipio e conctena com o número de matricula. Só que, essa função soh funciona se eu colocar a TRIGGER como AFTER. Mas, com a trigger em AFTER, a função não consegue inserir no registro. O que eu posso fazer? -- Atenciosamente, *Marcel Felipe Farias da Costa* (71) 9977-0817 / 8749-2031 marcelffar...@gmail.com [image: Facebook]<http://www.facebook.com/home.php?#%21/profile.php?id=11674557938> [image: Orkut] <http://www.orkut.com.br/Main#Profile?uid=12437653927557068245> [image: Twitter] <http://twitter.com/marcelffarias> [image: Google Talk/] marcelffarias [image: Skype/] marcel.f.costa [image: MSN/] marcelffar...@hotmail.com ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] PgDesigner
Caros colegas, Eu ja tinha instalado o PostgreSQL 9.0.3 instalado da maquina. Essa semana achei uma ferramenta pra Design de modelo. So que, esse modelo só exportar para versões anteriores, a minha? O que vocês acham? teria uma versão nova do PgDesigner? Abraços! -- Atenciosamente, *Marcel Felipe Farias da Costa* (71) 9977-0817 / 8749-2031 marcelffar...@gmail.com [image: Facebook]<http://www.facebook.com/home.php?#%21/profile.php?id=11674557938> [image: Orkut] <http://www.orkut.com.br/Main#Profile?uid=12437653927557068245> [image: Twitter] <http://twitter.com/marcelffarias> [image: Google Talk/] marcelffarias [image: Skype/] marcel.f.costa [image: MSN/] marcelffar...@hotmail.com ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] Trigger Log
Galera, Estou tentando fazer uma trigger de LOG. Quando um usuario da um INSERT, UPDATE ou DELETE, a trigger verifica se a tabela Nome_tabela+_log existe no banco. Se nao existe, ele ira criar essa tabela. se existir, ele vai dar um insert com todas informações OLD.* na tabela de LOG. Com o comando abaixo. Esse comando, vai varrer toda tabela e em cada campo da tabela, vai pegar o seu OLD e jogar na tabela LOG: * execute 'insert into ' || nome_tabela_log ||'('|| r.coluna ||') values (OLD.' || r.coluna || ');';* Exemplo: * insert into produtos_log(cod_prod) values (OLD.cod_prod);* So que, quando ele realiza esse comando. esta dando um erro. Segue o erro abaixo: *ERRO: faltando entrada para tabela "old" na cláusula FROM LINE 1: insert into produtos_log(cod_prod) values (OLD.cod_prod); ^ QUERY: insert into produtos_log(cod_prod) values (OLD.cod_prod); CONTEXT: PL/pgSQL function "log_tabela" line 41 at comando EXECUTE ** Error ** ERRO: faltando entrada para tabela "old" na cláusula FROM SQL state: 42P01 Context: PL/pgSQL function "log_tabela" line 41 at comando EXECUTE *Agradeço a todos! * Segue a Trigger Abaixo: * CREATE OR REPLACE FUNCTION log_tabela() RETURNS trigger AS $BODY$ declare r record; comando text; nome_tabela_log text; nome_tabela text; --cod_prod integer; begin nome_tabela_log := TG_TABLE_NAME || '_log'; -- Atribui o nome da tabela + Log na variavel nome_tabela_log nome_tabela := TG_TABLE_NAME; -- Atriui o nome da tabela a variavel nome_tabela IF ((select count(relname) from pg_class where relname = nome_tabela_log) = 0) -- Verifica se a tabela nome_tabela_log Existe no Banco de Dados then BEGIN -- Se não existe, Ele Cria a tabela e seus campos igual a tabela Principal, adicionando o campo OPERAÇÃO, DATA, Usuario RAISE NOTICE 'Criando Tabela de Log... %',nome_tabela_log; execute 'create table ' || nome_tabela_log || ' as select * from ' || nome_tabela; execute 'alter table ' || nome_tabela_log || ' add column operacao char'; execute 'alter table ' || nome_tabela_log || ' add column data timestamp'; execute 'alter table ' || nome_tabela_log || ' add column usuario varchar'; END; ELSE BEGIN -- Se Existir, ele vai adicionar os campos da tabela principal na Tabela LOG --RAISE NOTICE '%',nome_tabela_log; --RAISE NOTICE '%',nome_tabela; --cod_prod := OLD.cod_prod; --RAISE NOTICE '%',cod_prod; for r in (SELECT a.attname AS coluna FROM pg_attribute AS a JOIN pg_class AS c ON c.oid=a.attrelid AND c.relname !~ '^pg_' JOIN pg_type AS t ON t.oid=a.atttypid LEFT OUTER JOIN pg_attrdef AS d ON c.oid=d.adrelid AND d.adnum=a.attnum WHERE a.attnum>0 AND c.relname = TG_TABLE_NAME ORDER BY a.attnum) loop * execute 'insert into ' || nome_tabela_log ||'('|| r.coluna ||') values (OLD.' || r.coluna || ');';* end loop; END; END IF; RETURN NEW; end;$BODY$ LANGUAGE plpgsql VOLATILE COST 100; ALTER FUNCTION log_tabela() OWNER TO postgres; -- Atenciosamente, *Marcel Felipe Farias da Costa* (71) 9977-0817 / 8749-2031 marcelffar...@gmail.com [image: Facebook]<http://www.facebook.com/home.php?#%21/profile.php?id=11674557938> [image: Orkut] <http://www.orkut.com.br/Main#Profile?uid=12437653927557068245> [image: Twitter] <http://twitter.com/marcelffarias> [image: Google Talk/] marcelffarias [image: Skype/] marcel.f.costa [image: MSN/] marcelffar...@hotmail.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] Otimizar consulta com LEFT JOIN
ahahahahaha, tô em estado de graça! Meu amigo, consegui reduzir uma consulta de faturamento de 67 segundos para apenas 10 segundos e podendo melhor ainda mais. -- Abraços.. Marcel Araujo System Analyst Developer Java/PHP/RIA Linux User #490101 http://br.linkedin.com/in/marcelaraujo http://www.twitter.com/marcelaraujo http://marcelaraujo.tumblr.com/ http://www.marcelaraujo.com http://www.marcelaraujo.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] Otimizar consulta com LEFT JOIN
Aham, muito obrigado pela explicação. Irei testar daqui a pouco e darei retorno. -- Abraços.. Marcel Araujo System Analyst Developer Java/PHP/RIA Linux User #490101 http://br.linkedin.com/in/marcelaraujo http://www.twitter.com/marcelaraujo http://marcelaraujo.tumblr.com/ http://www.marcelaraujo.com http://www.marcelaraujo.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] Otimizar consulta com LEFT JOIN
Não ficou muito claro para mim a reescrita de uma consulta. Como eu faria numa consulta como esta abaixo??? *CREATE OR REPLACE VIEW vw_ch_professores_turmas_ofertas AS SELECT tof.id AS turma_oferta_id, tpo.id AS turma_professor_id, pf.id AS professor_id, pf.cod_prof, ps.id, ps.nome_pessoa, sum(tpo.carga_horaria) AS carga_horaria, sum(tpo.carga_horaria) * 0.2::double precision AS horas_preparacao, d.id AS disciplina_id, d.cod_disciplina, d.nome_disciplina, tof.nr_vagas, tof.cod_turma, tof.periodo_id FROM turmas_ofertas tof JOIN disciplinas d ON tof.disciplina_id = d.id LEFT JOIN turmas_ofertas_professores tpo ON tpo.turma_oferta_id = tof.id LEFT JOIN professores pf ON tpo.professor_id = pf.id LEFT JOIN pessoas ps ON pf.pessoa_id = ps.id GROUP BY tpo.id, tpo.carga_horaria, tof.id, tof.cod_turma, tof.nr_vagas, tof.periodo_id, d.id, d.cod_disciplina, d.nome_disciplina, pf.id, pf.cod_prof, ps.id, ps.nome_pessoa;* -- Abraços.. Marcel Araujo System Analyst Developer Java/PHP/RIA Linux User #490101 http://br.linkedin.com/in/marcelaraujo http://www.twitter.com/marcelaraujo http://marcelaraujo.tumblr.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] Dúvida Sequence
Podes criar uma function que zerasse o value da sequence. Podes criar um script PHP por exemplo e agendar no cron do teu servidor. -- Abraços.. Marcel Araujo System Analyst Developer Java/PHP/RIA Linux User #490101 http://br.linkedin.com/in/marcelaraujo http://www.twitter.com/marcelaraujo http://marcelaraujo.tumblr.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] Procedures
Vou olhar sim, muito obrigado! -- Abraços.. Marcel Araujo System Analyst Developer Java/PHP/RIA Linux User #490101 http://br.linkedin.com/in/marcelaraujo http://www.twitter.com/marcelaraujo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Procedures
Talvez, mas não seria muito agradável perder mais tempo pesquisando, estudando e implementando esta alternativa. Estou fazendo como falei, selects e inserts via scripts php. -- Abraços.. Marcel Araujo System Analyst Developer Java/PHP/RIA Linux User #490101 http://br.linkedin.com/in/marcelaraujo http://www.twitter.com/marcelaraujo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Procedures
Galera, a encrenca toda é a seguinte. Possuo dois servidores com duas versões diferentes do PostgreSQL. O primeiro servidor seria o de produção o qual está rodando a versão 8.0.3 e o encoding desta base de produção é SQL_ASCII. O segundo servidor está rodando a última versão do servidor de banco de dados, 8.4.1 e o encoding do banco é UTF8. Agora o problema!!! Eu criei uma procedure para importar os dados entre as bases diferentes mas como descobri, não é possível acessar bases diferentes na mesma conexão. Agora a questão toda, não posso criar um schema no segundo servidor porque este está em UTF8 e assim, não permitindo a importação correta do backup da base que está em SQL_ASCII. Meio que fiz uma gambiarra. Criei um script em PHP onde eu faço SELECT's e INSERT's... Mas se alguém possuir alguma solução melhor, ficaria grato! -- Abraços.. Marcel Araujo System Analyst Developer Java/PHP/RIA Linux User #490101 http://br.linkedin.com/in/marcelaraujo http://www.twitter.com/marcelaraujo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Procedures
Obrigado! Vou pesquisar sim... Até o momento a solução que acredito solucionar meu problema é restaurar a base em um novo schema. -- Abraços.. Marcel Araujo System Analyst Developer Java/PHP/RIA Linux User #490101 http://br.linkedin.com/in/marcelaraujo http://www.twitter.com/marcelaraujo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] Procedures
Bom dia pessoal, estou criando um script em pl/pgsql e preciso acessar dados em bases de dados diferentes. De que modo posso realizar isto? seria +ou- de forma hierarquica? base.template.table -- Abraços.. Marcel Araujo System Analyst Developer Java/PHP/RIA Linux User #490101 http://br.linkedin.com/in/marcelaraujo http://www.twitter.com/marcelaraujo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] pgAdmin 1.10.0
Os arquivos não são carregados no programa literalmente. 2009/12/15 Euler Taveira de Oliveira > Alisson Viegas escreveu: > > Boa tarde, pessoal. > > > > Ao atualizar o pgAdmin 1.10, alguns scripts não são abertos. > > > O que você quer dizer com não são abertos? > > > -- > Euler Taveira de Oliveira > http://www.timbira.com/ > ___ > pgbr-geral mailing list > pgbr-geral@listas.postgresql.org.br > https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral > -- Abraços.. Marcel Araujo System Analyst Developer Java/PHP/RIA Linux User #490101 http://br.linkedin.com/in/marcelaraujo http://www.twitter.com/marcelaraujo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] pgAdmin 1.10.0
Tava enfrentando o mesmo problema mas não insisti muito por falta de tempo e retornei para a versão anterior. 2009/12/15 Alisson Viegas > Boa tarde, pessoal. > > Ao atualizar o pgAdmin 1.10, alguns scripts não são abertos. > > Clico no botão abrir, seleciono o arquivo SQL e nada acontece. > > Alguém já passou por isso? > > > > Conteúdo dos arquivos: > > delete from cpd.per; > > delete from cpd.frmtab; > > delete from cpd.frm; > > delete from cpd.ata; > > delete from cpd.cam; > > > > insert into cpd.frm VALUES (1101,'Acsiv',null,'Grupos e > usuários',null,'appcpd','role',FALSE,FALSE); > > insert into cpd.frmtab VALUES (1101,'cpd','per'); > > ... > > > > ou > > > > CREATE SCHEMA xxx; > > > > CREATE FUNCTION xxx.to_ascii(text) > > RETURNS text AS > > $BODY$ > >SELECT > TRANSLATE($1,'áàâãäéèêëíìïóòôõöúùûüÁÀÂÃÄÉÈÊËÍÌÏÓÒÔÕÖÚÙÛÜçÇ','aiiioAIIIOcC'); > > $BODY$ > > LANGUAGE 'sql' IMMUTABLE STRICT; > > > > 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 > > -- Abraços.. Marcel Araujo System Analyst Developer Java/PHP/RIA Linux User #490101 http://br.linkedin.com/in/marcelaraujo http://www.twitter.com/marcelaraujo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Erro no lwpostgis.sql
Meu amigo, geralmente eu compilo o Postgis individualmente mas há a possibilidade de tu baixar o instalador propriamente dito do próprio site do PostgreSQL que inclui o Stack Builder e nele tu inclui na instalação a extensão Postigis, e assim, instalando tudo direitinho. E o arquivo SQL vem sim no pacote, porém você não deve estar no diretório correto onde ele se localiza que no meu caso é este e acredito que seja o mesmo sempre! * cd /usr/share/postgresql-8.3-postgis/* *createlang plpgsql base* *psql -f lwpostgis.sql -d base* *psql -f lwpostgis_upgrade.sql -d base* *psql -f spatial_ref_sys.sql -d base* 2009/11/27 Vicente Martins > Bom dia pessoal. > > Sou espectador da lista já tem um bom tempo, mas só agora tive a > necessidade de escrever para ela, portanto, este é meu primeiro post. > > Recentemente instalei o Debian lenny( venho do Ubuntu) e para instalar o > postgresql e a extensao espacial postgis usei o aptitude: > > # aptitude install postgresql postgis postgresql-8.3-postgis > > Na configuracao do lwpostgis.sql, que é um arquivo que carrega os objetos > do postgis eu encontrei o seguinte erro: > > lwpostgis.sql: Arquivo ou diretório não encontrado > > Bem, quando eu instalo o postgis da forma como instalei, o lwpostgis.sql > nao ja vem incluido no pacote? > Se eu estiver escrevendo besteira, por favor corrijam. > > Como devo proceder para resolver o problema? > > Agradeço desde já a atençao. > > -- > Vicente Martins > Analista de Geoinformação - IFPB > http://geomartinsblog.blogspot.com/ > > +55 83 88932202 > +55 83 96141969 > > > > > > ___ > pgbr-geral mailing list > pgbr-geral@listas.postgresql.org.br > https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral > > -- Abraços.. Marcel Araujo System Analyst Developer Java/PHP/RIA Linux User #490101 http://www.kombo.com.br/meucurriculo/marcelaraujo http://www.twitter/marcelaraujo ___ 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 que se Multiplicam
Provavelmente estejam abrindo uma conexão nova para cada consulta ao banco e não estão fechando esta logo após. Aparentemente é a resposta mais cabível!!! 2009/11/24 SetaDigital - Especialista em Lojas de Calçados < cont...@setadigital.com.br> > Bom dia pessoal... > > Instalamos o sistema em uma rede de lojas e uma dela acessa via internet. > O sistema é desktop, utilizamos Postgres 8.3 com servidor Linux e estamos > acostumados a trabalhar dessa maneira sem problemas. > Mas neste cliente está acontecendo das conexões se "Multiplicarem", e > rapidamente temos 60, 70 conexões ativas em uma loja com 6 computadores. > Detalhes: não da erro no sistema, tudo funciona normalmente, mas tivemos > que > aumentar o número de conexões para poder trabalhar. > Aos poucos as conexões antigas vão fechando. > Outro detalhe é que muda o PID da conexão > > > Vanderlei Marcos Kichel > cont...@setadigital.com.br > > ___ > SetaDigital Comércio de Sistemas Gerenciais Ltda > Rua Voluntários da Pátria, 1415 Sala 302 - Centro > Cascavel - Paraná - Cep 85.812-160 > Telefone: (45) 3222-7511 > www.setadigital.com.brativa no terminal. > > Gostaria de saber o que pode causar isso e como resolver? > > Grande abraço e obrigado a todos desde já. > > > ___ > pgbr-geral mailing list > pgbr-geral@listas.postgresql.org.br > https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral > -- Abraços.. Marcel Araujo System Analyst Developer Java/PHP/RIA Linux User #490101 ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] ENVIO DE E-MAIL VIA POSTGRES
Então George, apenas confirmastes o que eu disse!!! O postgresql é somente o bd e não o "cara" que envia os emails como o Israel falou. A parte de enviar email geralmente se dá através da linguagem de programação a ser utilizada em conjunto com o banco de dados. Geralmente se usa a função MAIL dos servidores Unix/Linux ou qualquer outro servidor de email que esteja configurado. 2009/10/29 Joao Cosme de Oliveira Junior > usa um pl/sh da vida > ai e dois tempos... > > > João Cosme de Oliveira Júnior > > Seja inteligente, use Software-livre!!! > LPI Certified > LPI000185554 > > > Em 29/10/2009 às 18:06 horas, pgbr-ge...@listas.postgresql.org.brescreveu: > > 2009/10/29 Israel Teixeira : > > > BOA TARDE, > > Boa tarde, por que gritas? > > > ALGUEM TEM ALGUMA FUNÇÃO OU DICA PARA ENVIO DE E-MAIL UTILIZANDO UMA > FUNÇÃO > > http://pgmail.sourceforge.net/ > > -Leo > -- > Leonardo Cezar > http://www.aslid.org.br > http://postgreslogia.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 > > > "Esta mensagem do SERVIÇO FEDERAL DE PROCESSAMENTO DE DADOS (SERPRO), > empresa pública federal regida pelo disposto na Lei Federal nº 5.615, é > enviada exclusivamente a seu destinatário e pode conter informações > confidenciais, protegidas por sigilo profissional. Sua utilização > desautorizada é ilegal e sujeita o infrator às penas da lei. Se você a > recebeu indevidamente, queira, por gentileza, reenviá-la ao emitente, > esclarecendo o equívoco." > > "This message from SERVIÇO FEDERAL DE PROCESSAMENTO DE DADOS (SERPRO) -- a > government company established under Brazilian law (5.615/70) -- is directed > exclusively to its addressee and may contain confidential data, protected > under professional secrecy rules. Its unauthorized use is illegal and may > subject the transgressor to the law's penalties. If you're not the addressee, > please send it back, elucidating the failure." > > > _______ > pgbr-geral mailing list > pgbr-geral@listas.postgresql.org.br > https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral > > -- Abraços.. Marcel Araujo System Analyst Developer Java/PHP/RIA Linux User #490101 ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] ENVIO DE E-MAIL VIA POSTGRES
Concordo que assim como python permite, outras linguagens também mas até onde eu entendi é que o amigo acima deseja pegar as informações contidas num bd postgresql e enviar aos clientes, usuários,etc e através do postgresql enviar os emails! Isto até onde eu sei e digo que posso estar enganado, é inviável. Claro que pode haver alguma biblioteca ou módulo adicional com estas funcionalidades, mas somente talvez e até hoje nunca vi nada igual. E volto a afirmar, isto seria totalmente fora do objetivo de um banco de dados que é prover gerencialmento de dados e não enviar emails!!! Ou será que estou tão desinformado assim?! 2009/10/29 George Silva > Bem, imagino que ele quer utilizar o banco para gerar alguns tipos de > email, com informações de clientes. > > Ler uma tabela clientes, determinar o tipo do email q ele precisa mandar > (cobrança, convite, agradecimento, sei lá), e construir o email na > aplicação, que será enviado por um servidor. > > Possível de se fazer é. E Python lhe permite um monte de coisas legais. > > Israel, detalhe mais o seu problema, pois assim o pessoal poderá entender > melhor sua dúvida e lhe ajudar. > > Att. > > George > > > On Thu, Oct 29, 2009 at 6:06 PM, Leonardo Cezar wrote: > >> 2009/10/29 Israel Teixeira : >> > BOA TARDE, >> >> Boa tarde, por que gritas? >> >> > ALGUEM TEM ALGUMA FUNÇÃO OU DICA PARA ENVIO DE E-MAIL UTILIZANDO UMA >> FUNÇÃO >> >> http://pgmail.sourceforge.net/ >> >> -Leo >> -- >> Leonardo Cezar >> http://www.aslid.org.br >> http://postgreslogia.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 >> > > > > -- > George R. C. Silva > > Desenvolvimento em GIS > www.sextantegeo2.blogspot.com > > ___ > pgbr-geral mailing list > pgbr-geral@listas.postgresql.org.br > https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral > > -- Abraços.. Marcel Araujo System Analyst Developer Java/PHP/RIA Linux User #490101 ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] ENVIO DE E-MAIL VIA POSTGRES
Só para complementar, acho que fugiria completamente do objetivo de um BD. 2009/10/29 Marcel Araujo > Não seria através de uma linguagem de programação ao invés do bd? > > Tipo php, java, etc... > > Espero não estar enganado e se estiver que me corrijam mas não acredito que > bd algum faça isto! > > 2009/10/29 Israel Teixeira > >> BOA TARDE, >> >> ALGUEM TEM ALGUMA FUNÇÃO OU DICA PARA ENVIO DE E-MAIL UTILIZANDO UMA >> FUNÇÃO EM POSTGRESQL, FIZ ALGUNS TESTES UTILIZANDO PYTHON MAS SEM SUCESSO >> ATÉ O MOMENTO. >> >> OBRIGADO !! >> >> -- >> ITSilva >> >> ___ >> pgbr-geral mailing list >> pgbr-geral@listas.postgresql.org.br >> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral >> >> > > > -- > Abraços.. > > Marcel Araujo > System Analyst > Developer Java/PHP/RIA > Linux User #490101 > -- Abraços.. Marcel Araujo System Analyst Developer Java/PHP/RIA Linux User #490101 ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] ENVIO DE E-MAIL VIA POSTGRES
Não seria através de uma linguagem de programação ao invés do bd? Tipo php, java, etc... Espero não estar enganado e se estiver que me corrijam mas não acredito que bd algum faça isto! 2009/10/29 Israel Teixeira > BOA TARDE, > > ALGUEM TEM ALGUMA FUNÇÃO OU DICA PARA ENVIO DE E-MAIL UTILIZANDO UMA FUNÇÃO > EM POSTGRESQL, FIZ ALGUNS TESTES UTILIZANDO PYTHON MAS SEM SUCESSO ATÉ O > MOMENTO. > > OBRIGADO !! > > -- > ITSilva > > ___ > pgbr-geral mailing list > pgbr-geral@listas.postgresql.org.br > https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral > > -- Abraços.. Marcel Araujo System Analyst Developer Java/PHP/RIA Linux User #490101 ___ 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 o dono de todas tabelas do banco
Ahh, uma pequena alteração, me esqueci que não é permitido retorno de valores como FALSE ON NULL INPUT então o correto seria $$ LANGUAGE 'plpgsql' IMMUTABLE RETURNS NULL ON NULL INPUT; 2009/9/5 Marcel Araujo > Acredito que para ficar mais elegante ainda faria umas pequenas > alterações!!! > > CREATE OR REPLACE FUNCTION change_owner(oldOWNER TEXT, newOWNER TEXT) > RETURNS boolean AS $$ > DECLARE > comando TEXT; > lista RECORD; > BEGIN > comando := 'ALTER SCHEMA ' || quote_ident(oldOWNER) || ' OWNER TO ' || > quote_ident(newOWNER); > EXECUTE comando; > > FOR lista IN > SELECT pg_namespace.nspname, >pg_class.relname, >pg_class.relkind > FROM pg_namespace >JOIN pg_class ON pg_namespace.oid=pg_class.relnamespace > WHERE pg_namespace.nspname=oldOWNER >AND pg_class.relkind IN ('r','v','S') > LOOP > IF lista.relkind = 'S' AND CAST((SELECT COALESCE(setting,0) FROM > pg_settings WHERE name = 'server_version_num') AS INTEGER) >= 80400 THEN > comando := 'ALTER SEQUENCE ' || quote_ident(lista.nspname) || '.' || > quote_ident(lista.relname) || ' OWNER TO ' || quote_ident(newOWNER); > RAISE NOTICE '%', comando; > ELSE > comando := 'ALTER TABLE ' || quote_ident(lista.nspname) || '.' || > quote_ident(lista.relname) || ' OWNER TO ' || quote_ident(newOWNER); > > RAISE NOTICE '%', comando; > END IF; > EXECUTE comando; > END LOOP; > > IF FOUND THEN > RETURN TRUE; > END IF; > RETURN FALSE; > END; > $$ > LANGUAGE 'plpgsql' > IMMUTABLE > RETURNS FALSE ON NULL INPUT; > > 2009/9/4 Fabrízio de Royes Mello > >> >> >> 2009/9/4 JotaComm >> >>> Olá, >>> >>> Segue a minha solução: >>> >>> CREATE OR REPLACE FUNCTION change_owner(TEXT,TEXT) >>> RETURNS boolean AS $$ >>> DECLARE >>> comando TEXT; >>> lista RECORD; >>> BEGIN >>> FOR lista IN >>> SELECT pg_namespace.nspname,pg_class.relname,pg_class.relkind >>> FROM pg_namespace JOIN pg_class ON >>> pg_namespace.oid=pg_class.relnamespace >>> WHERE pg_namespace.nspname=$1 >>> AND pg_class.relkind IN (‘r’,‘v’,‘S’) >>> LOOP >>> IF lista.relkind=‘S’ THEN >>> comando:=‘ALTER SEQUENCE ‘ || lista.relname || ‘ OWNER TO ‘ || >>> quote_ident($2); >>> RAISE NOTICE ‘‘, comando; >>> ELSE >>> comando:=‘ALTER TABLE ‘ || lista.relname || ‘ OWNER TO ‘ || >>> quote_ident($2); >>> RAISE NOTICE ‘‘, comando; >>> END IF; >>> EXECUTE comando; >>> END LOOP; >>> IF FOUND THEN >>> RETURN TRUE; >>> END IF; >>> RETURN FALSE; >>> END; >>> $$ LANGUAGE PLPGSQL; >>> >> >> Se me permites adicionar um "plus" e uns ajustes : >> >> * alterar o dono do schema passado por parametro >> * colocar o schema.tabela nos ALTER ... >> * compatibilidade com versoes menores que 8.4 >> >> CREATE OR REPLACE FUNCTION change_owner(TEXT,TEXT) >> RETURNS boolean AS $$ >> DECLARE >> comando TEXT; >> lista RECORD; >> BEGIN >> comando := 'ALTER SCHEMA ' || quote_ident($1) || ' OWNER TO ' || >> quote_ident($2); >> EXECUTE comando; >> >> FOR lista IN >> SELECT pg_namespace.nspname, >>pg_class.relname, >>pg_class.relkind >> FROM pg_namespace >>JOIN pg_class ON pg_namespace.oid=pg_class.relnamespace >> WHERE pg_namespace.nspname=$1 >>AND pg_class.relkind IN ('r','v','S') >> LOOP >> IF lista.relkind = 'S' AND CAST((SELECT COALESCE(setting,0) FROM >> pg_settings WHERE name = 'server_version_num') AS INTEGER) >= 80400 THEN >> comando := 'ALTER SEQUENCE ' || quote_ident(lista.nspname) || '.' || >> quote_ident(lista.relname) || ' OWNER TO ' || quote_ident($2); >> RAISE NOTICE '%', comando; >> ELSE >> comando := 'ALTER TABLE ' || quote_ident(lista.nspname) || '.' || >> quote_ident(lista.relname) || ' OWNER TO ' || quote_ident($2); >> RAISE NOTICE '%', comando; >> END IF; >> EXECUTE comando; >> END LOOP; >> >> IF FOUND THEN >> RETURN TRUE; >> END IF; >> RETURN FALSE; >> END; >> $$ LANGUAGE plpgsql; >> >> >> Gostei bastante dessa sua solução Jota... qdo eu precisava eu rodava um >> script gerando as DDLs... assim fica mais elegante e prático... >> >> >> Cordialmente, >> -- >> Fabrízio de Royes Mello >> >> Blog sobre TI: 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 >> >> > > > -- > Abraços.. > > Marcel Araujo > System Analyst > Developer Java/PHP/RIA > Linux User #490101 > -- Abraços.. Marcel Araujo System Analyst Developer Java/PHP/RIA Linux User #490101 ___ 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 o dono de todas tabelas do banco
Acredito que para ficar mais elegante ainda faria umas pequenas alterações!!! CREATE OR REPLACE FUNCTION change_owner(oldOWNER TEXT, newOWNER TEXT) RETURNS boolean AS $$ DECLARE comando TEXT; lista RECORD; BEGIN comando := 'ALTER SCHEMA ' || quote_ident(oldOWNER) || ' OWNER TO ' || quote_ident(newOWNER); EXECUTE comando; FOR lista IN SELECT pg_namespace.nspname, pg_class.relname, pg_class.relkind FROM pg_namespace JOIN pg_class ON pg_namespace.oid=pg_class.relnamespace WHERE pg_namespace.nspname=oldOWNER AND pg_class.relkind IN ('r','v','S') LOOP IF lista.relkind = 'S' AND CAST((SELECT COALESCE(setting,0) FROM pg_settings WHERE name = 'server_version_num') AS INTEGER) >= 80400 THEN comando := 'ALTER SEQUENCE ' || quote_ident(lista.nspname) || '.' || quote_ident(lista.relname) || ' OWNER TO ' || quote_ident(newOWNER); RAISE NOTICE '%', comando; ELSE comando := 'ALTER TABLE ' || quote_ident(lista.nspname) || '.' || quote_ident(lista.relname) || ' OWNER TO ' || quote_ident(newOWNER); RAISE NOTICE '%', comando; END IF; EXECUTE comando; END LOOP; IF FOUND THEN RETURN TRUE; END IF; RETURN FALSE; END; $$ LANGUAGE 'plpgsql' IMMUTABLE RETURNS FALSE ON NULL INPUT; 2009/9/4 Fabrízio de Royes Mello > > > 2009/9/4 JotaComm > >> Olá, >> >> Segue a minha solução: >> >> CREATE OR REPLACE FUNCTION change_owner(TEXT,TEXT) >> RETURNS boolean AS $$ >> DECLARE >> comando TEXT; >> lista RECORD; >> BEGIN >> FOR lista IN >> SELECT pg_namespace.nspname,pg_class.relname,pg_class.relkind >> FROM pg_namespace JOIN pg_class ON >> pg_namespace.oid=pg_class.relnamespace >> WHERE pg_namespace.nspname=$1 >> AND pg_class.relkind IN (‘r’,‘v’,‘S’) >> LOOP >> IF lista.relkind=‘S’ THEN >> comando:=‘ALTER SEQUENCE ‘ || lista.relname || ‘ OWNER TO ‘ || >> quote_ident($2); >> RAISE NOTICE ‘‘, comando; >> ELSE >> comando:=‘ALTER TABLE ‘ || lista.relname || ‘ OWNER TO ‘ || >> quote_ident($2); >> RAISE NOTICE ‘‘, comando; >> END IF; >> EXECUTE comando; >> END LOOP; >> IF FOUND THEN >> RETURN TRUE; >> END IF; >> RETURN FALSE; >> END; >> $$ LANGUAGE PLPGSQL; >> > > Se me permites adicionar um "plus" e uns ajustes : > > * alterar o dono do schema passado por parametro > * colocar o schema.tabela nos ALTER ... > * compatibilidade com versoes menores que 8.4 > > CREATE OR REPLACE FUNCTION change_owner(TEXT,TEXT) > RETURNS boolean AS $$ > DECLARE > comando TEXT; > lista RECORD; > BEGIN > comando := 'ALTER SCHEMA ' || quote_ident($1) || ' OWNER TO ' || > quote_ident($2); > EXECUTE comando; > > FOR lista IN > SELECT pg_namespace.nspname, >pg_class.relname, >pg_class.relkind > FROM pg_namespace >JOIN pg_class ON pg_namespace.oid=pg_class.relnamespace > WHERE pg_namespace.nspname=$1 >AND pg_class.relkind IN ('r','v','S') > LOOP > IF lista.relkind = 'S' AND CAST((SELECT COALESCE(setting,0) FROM > pg_settings WHERE name = 'server_version_num') AS INTEGER) >= 80400 THEN > comando := 'ALTER SEQUENCE ' || quote_ident(lista.nspname) || '.' || > quote_ident(lista.relname) || ' OWNER TO ' || quote_ident($2); > RAISE NOTICE '%', comando; > ELSE > comando := 'ALTER TABLE ' || quote_ident(lista.nspname) || '.' || > quote_ident(lista.relname) || ' OWNER TO ' || quote_ident($2); > RAISE NOTICE '%', comando; > END IF; > EXECUTE comando; > END LOOP; > > IF FOUND THEN > RETURN TRUE; > END IF; > RETURN FALSE; > END; > $$ LANGUAGE plpgsql; > > > Gostei bastante dessa sua solução Jota... qdo eu precisava eu rodava um > script gerando as DDLs... assim fica mais elegante e prático... > > > Cordialmente, > -- > Fabrízio de Royes Mello > >> Blog sobre TI: 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 > > -- Abraços.. Marcel Araujo System Analyst Developer Java/PHP/RIA Linux User #490101 ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Tipo sequencial
Ah, como retorno de função seria como disse antes, retornar o valor da sequência que a função chama. 2009/9/1 Marcel Araujo > É um integer com possibilidade de incremento automático por meio de chamada > de função > > CREATE SEQUENCE sequencia_id; > > SELECT NEXTVAL('sequencia_id'); > retornaria o número 1 > > SELECT NEXTVAL('sequencia_id'); > retornaria o número 2 > > SELECT CURVAL('sequencia_id') > retornaria o número 2 > > Ele serve, também, para gerar números com incrementos personalizados, um > valor inicial, valor máximo e mínimo. Eu o utilizo para gerar números para > minhas PK's das tabelas. > > Docs da Sequence > http://tinyurl.com/2zopd8 > > > 2009/9/1 Andre Fernandes > >> Olá a todos, >> >> Qual a função de usar um tipo sequencia para uma coluna em uma tabela ou >> como retorno de uma função? O tipo de uma tabela para mim é bem simples de >> se visualizar, contudo um tipo igual a uma sequence não consegui imaginar >> como ou porque utilizar. >> >> Obrigado pelas respostas, >> -- >> André de Camargo Fernandes >> >> >> >> _______ >> pgbr-geral mailing list >> pgbr-geral@listas.postgresql.org.br >> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral >> >> > > > -- > Abraços.. > > Marcel Araujo > System Analyst > Developer Java/PHP/RIA > Linux User #490101 > -- Abraços.. Marcel Araujo System Analyst Developer Java/PHP/RIA Linux User #490101 ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Tipo sequencial
É um integer com possibilidade de incremento automático por meio de chamada de função CREATE SEQUENCE sequencia_id; SELECT NEXTVAL('sequencia_id'); retornaria o número 1 SELECT NEXTVAL('sequencia_id'); retornaria o número 2 SELECT CURVAL('sequencia_id') retornaria o número 2 Ele serve, também, para gerar números com incrementos personalizados, um valor inicial, valor máximo e mínimo. Eu o utilizo para gerar números para minhas PK's das tabelas. Docs da Sequence http://tinyurl.com/2zopd8 2009/9/1 Andre Fernandes > Olá a todos, > > Qual a função de usar um tipo sequencia para uma coluna em uma tabela ou > como retorno de uma função? O tipo de uma tabela para mim é bem simples de > se visualizar, contudo um tipo igual a uma sequence não consegui imaginar > como ou porque utilizar. > > Obrigado pelas respostas, > -- > André de Camargo Fernandes > > > > ___ > pgbr-geral mailing list > pgbr-geral@listas.postgresql.org.br > https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral > > -- Abraços.. Marcel Araujo System Analyst Developer Java/PHP/RIA Linux User #490101 ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] pg_dump desordenado
Prezados(as) Preciso restaurar um dump de um banco com aproximadamente 30 schemas e mais de uma centena de tabelas. Estão ocorrendo alguns erros de violação de chave estrangeira, pois várias tabelas filhos estão sendo restauradas antes das tabelas pais, como muitas vezes ocorre com backups feitos com o pg_dump. Em outras vezes, eu editei o dump e alterei manualmente a ordem das tabelas, mas dessa vez é muita coisa e está praticamente inviável. Alguma sugestão? Existe alguma maneira de desabilitar todas as FK e depois habilitá-las novamente? []'s Marcel ___ 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_auth
O PostgreSQL mantém os metadados (informações sobre o BD) no que chamamos de catálogo do sistema. Esse catálogo é de certo modo compartilhado por todas as sessões. Onde os "flat files" entram na história? O problema é que como as informações necessárias para autenticação estão no catálogo (banco de dados) não há uma maneira de autenticar-se sem utilizar uma conexão pré-estabelecida (para ler algo do catálogo é necessário estar conectado). Daí, o que o PostgreSQL faz é manter atualizado as informações sobre banco de dados (pg_database) e usuários (pg_auth) no sistema de arquivos (global/*) para que o sistema de autenticação funcione. Valeu, Euler. Pelo que entendi, o arquivo seria usado para autenticar o usuário "antes" de estabelecer a conexão com o banco. Bem, fiz alguns testes, tentando simular uma quebra de segurança 1) excluí o arquivo: não houve problema, conectei normalmente 2) alterei o md5 da senha "na mão": não houve problema, a conexão continuou apenas com a senha original 3) sobrepus o arquivo com outro: também não houve problema, a conexão continuou apenas com a senha original. Ou seja, pelo que vi, realmente ele não causa um perigo na segurança, como acontece (ou acontecia, não sei como está na versão 2.0) no Firebird, que permitia acesso através da sobreposição do security.fbd. Apenas continuo então não entendendo a finalidade dele. Se o seu conteúdo não afeta a conexão, então em que situação ele é utilizado pelo PostgreSQL? No caso da tabela pg_auth (usuários) ela armazena o login, senha dentre outras informações. Dependendo do tipo de autenticação que se utiliza ele pode ou não armazenar a senha ali; ela só armazena a senha em texto (sem criptografia) caso o tipo de autenticação seja *password*. Esse tipo de autenticação foi desaconselhada desde a versão 7.2 e só está disponível para compatibilidade com versões anteriores. Não há o que temer, o PostgreSQL é um dos bancos de dados mais seguros do mundo. Não é a toa que ele tem pouquíssimas queixas do pessoal da área de segurança ao contrário dos concorrentes comerciais. ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] pg_auth
Prezados(as) Pesquisando no histórico da lista, encontrei a msg abaixo sobre o arquivo pg_auth. Não encontrei esse arquivo em alguns bancos daqui (versão 8.0.3, instalados em Debian Etch). Minha dúvidas é se esse arquivo pode ser excluído sem problemas, o que eliminaria a questão quebra de segurança em caso de sobreposição do mesmo, descrita pelo Steve Howe. Fiz pesquisas no google e na documentação do PostgreSQL e não encontrei quase nada sobre ele. Na verdade, há uma referência em http://www.postgresql.org/docs/techdocs.79 , que não esclarece nada. Fiz uma instalação da versão 8.1.8 e o arquivo realmente foi instalado em /var/lib/postgresql/8.1/main/global, mas eu o renomeei e nada aconteceu. []'s Marcel Re: [postgresql-br] Arquivo pg_pwd Sexta-feira, 31 de março de 2006, 16:08:27, você escreveu: Alguem confirma essa, por favor. Fiquei sabendo que existe um arquivo na pasta do postgre, por exemplo C:\Arquivos de programas\PostgreSQL\8.0\data\global que possui um arquivo chamado pg_pwd que se editado da para ver que sao os usuarios e senhas do banco da dados. E verdade que e possivel apenas copiar / sobrepor este arquivo pelo que vem na instalacao do banco ou seja usuario postgres e senha postgres e ai o camarada podera ter acesso a tudo dentro do banco. Alguem sabe se isso e verdade. Se for e bem fragil este esquema. O nome do arquivo é "pg_auth" e não "pg_pwd", todos os arquivos naquele diretório estão com as permissões devidamente definidas (0600), e o que se tem neles é o hash MD5 das senhas, o que seria inútil mesmo que alguém viesse a ter acesso a esse arquivo. Exemplo: carcass# cat pg_auth "howe" "md58378a43cd60a5004626045485ae8b67d" "" "temp" "md5d5bf0f423a04852d9c2228efa35c8af2" "" Se por outro lado as senhas foram criadas sem hash, então, sim, elas aparecem no arquivo: howe=# create user dumb with unencrypted password 'senha'; CREATE ROLE carcass# cat pg_auth "howe" "md58378a43cd60a5004626045485ae8b67d" "" "dumb" "senha" "" "temp" "md5d5bf0f423a04852d9c2228efa35c8af2" "" Quem deve restringir o acesso ao arquivo é a segurança do sistema operacional. Os sistemas linux/unix armazenam seus usuários e senha em arquivos conhecidos (/etc/passwd, /etc/group/, /etc/shadow, etc.) e nem por isso são inseguros. O que é necessário é que as permissões de tal arquivo estejam devidamente setadas para que usuãrios não autorizados não consigam lê-lo - e o PostgreSQL o faz assim por default. -- Um abraço, Steve Howe mailto:[EMAIL PROTECTED] ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral