Re: [pgbr-geral] Constraint entre colunas tipo varchar de tamanhos diferentes postgres 9.5
Obrigado pelo esclarecimento, vou ter que ajustar isso mesmo. Esse modelo tem 11 anos, foi feito no postgres 8.3 e na época eu não tinha noção nenhuma do que estava fazendo. Até a versão 9.0, embora a modelagem fosse falha o postgres não se importava com isso e funcionava normalmente. Acredito que tenha sido uma correção na versão 9.5 . Em 24/01/2017 18:21, Euler Taveira escreveu: On 24-01-2017 16:43, Irineu Raymundo wrote: Migrei do postgres 9.0 para o 9.5 e algumas contraints que referenciavam colunas do tipo varchar de tamanhos diferentes não aceitam mais o valor. Isso não tem haver com a migração. A sua modelagem está falha. Não se usa tipos (e seus tamanhos, se tiver) diferentes em chaves (a não ser que saiba o que está fazendo). Há alguma coisa q possa ser feita além de dropar as visões, rules destas tabelas e modificar os types dos campos? A correção é alterar o tipo de uma das tabelas para que eles voltem a ficar iguais novamente. Isso pode envolver corrigir outras partes do modelo. ERROR: value too long for type character varying(7) CONTEXT: SQL statement "UPDATE ONLY "com_02_01_07_a1_a1" SET "cod_material" = $1 WHERE $2::pg_catalog.text OPERATOR(pg_catalog.=) "cod_material"::pg_catalog.text" Esse erro é consequência de uma atualização em ind_01_08.codigo com uma string maior do que 7 caracteres. ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] Constraint entre colunas tipo varchar de tamanhos diferentes postgres 9.5
Olá prezados, Migrei do postgres 9.0 para o 9.5 e algumas contraints que referenciavam colunas do tipo varchar de tamanhos diferentes não aceitam mais o valor. Há alguma coisa q possa ser feita além de dropar as visões, rules destas tabelas e modificar os types dos campos? Qualquer ajuda é bem vinda. Agradecido. Irineu Raymundo Exemplo: ERROR: value too long for type character varying(7) CONTEXT: SQL statement "UPDATE ONLY "com_02_01_07_a1_a1" SET "cod_material" = $1 WHERE $2::pg_catalog.text OPERATOR(pg_catalog.=) "cod_material"::pg_catalog.text" CREATE TABLE ind_01_08 ( codigo character varying(19) NOT NULL, nome character varying(250) NOT NULL, CONSTRAINT ind_01_08_pkey PRIMARY KEY (codigo) ); CREATE TABLE com_02_01_07_a1_a1 ( cod_cor integer, grid_linha integer, cod_material character varying(7), cod_comb integer, CONSTRAINT com_02_01_07_a1_a1_pkey PRIMARY KEY (cod_comb,cod_material), CONSTRAINT com_02_01_07_a1_a1_cod_material_fkey FOREIGN KEY (cod_material) REFERENCES ind_01_08 (codigo) MATCH SIMPLE ON UPDATE CASCADE ON DELETE NO ACTION ); ___ 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 no Postgres 9.5
Em 08/09/2016 17:01, Fabrízio de Royes Mello escreveu: On 08-09-2016 09:43, Irineu Raymundo wrote: Bom dia pessoal, Estou com um problema de lentidão numa rotina... Essa tabela fica com mais ou menos 2 milhões de registros, e tem uns 11 índices. Segue abaixo a rotina: TRUNCATE senda.ind_03_03_04_01_lev CASCADE; TRUNCATE senda.ind_03_03_04_01_01_lev CASCADE; TRUNCATE senda.ind_03_03_04_01_01_a1_lev; REINDEX TABLE senda.ind_03_03_04_01_lev; Porque o REINDEX em uma tabela que vc recém efetuou um TRUNCATE? O TRUNCATE recria todos datafiles envolvidos (heap e btree). VACUUM FULL ANALYZE senda.ind_03_03_04_01_01_lev; VACUUM FULL ANALYZE senda.ind_03_03_04_01_01_a1_lev; VACUUM FULL ANALYZE senda.ind_03_03_04_01_lev; VACUUM FULL ANALYZE senda.ind_03_03_03_02_oc; Aqui vc efetua um VACUUM FULL novamente e talvez sem necessidade, principalmente pelo fato da "senda.ind_03_03_04_01_lev" ter sido truncada anteriormente. Será que as demais tabelas não são truncadas junto com as anteriores devido ao "CASCADE"??? SET temp_buffers=3; Setando dessa forma vc está informando ao PostgreSQL para usar ~234,38MB = (3*8kB)/1024. SELECT senda.ins_mat_lev_cria_indices(); SELECT senda.ins_mat_lev_1('98'); SELECT senda.ins_mat_lev_2('98'); SELECT senda.ins_mat_lev_3('98'); SELECT senda.ins_mat_lev_4('98'); SELECT senda.mat_marca_cliente_lev('98','LEVMAT',NULL,1256); Dificil te ajudar sem saber exatamente o que essas PLs fazem. Até esse ponto vai tranquilo, coisa de 5 minutos, a próxima função descarrega os registros( 2 milhões) das temporáriad para as tabelas UNLOGGED e aí que trava de vez em quando. Precisamos de mais detalhes para poder ajudar! Att, Antes de mandar os códigos-fonte das Pls(que são enormes) resolvi revisar toda a rotina levando em conta os comentários do Fabrízio. Tirei o REINDEX depois do CASCADE, diminui o valor do temp_buffer da sessão e a rotina estabilizou, não trava mais. Obrigado pela ajuda!!! ___ 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 no Postgres 9.5
Bom dia pessoal, Estou com um problema de lentidão numa rotina, se alguém puder me dar uma luz do que eu poderia investigar fico imensamente agradecido. O banco é : "PostgreSQL 9.5.4 on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu 5.4.0-6ubuntu1~16.04.2) 5.4.0 20160609, 64-bit" A trava aparentemente de forma aleatória, executa 2 dias normalmente e parece que do nada trava na última função e fica mais de 4 horas sendo obrigado a derrubar. Conferi quando trava e não tem nenhuma outra instrução que poderia faz um lock nas tabelas. Basicamente ela cria tabelas temporárias, faz os cálculos necessários e escreve numa tabela não logada(UNLOGGED) para poder imprimir o relatório via ODBC. Essa tabela fica com mais ou menos 2 milhões de registros, e tem uns 11 índices. Segue abaixo a rotina: TRUNCATE senda.ind_03_03_04_01_lev CASCADE; TRUNCATE senda.ind_03_03_04_01_01_lev CASCADE; TRUNCATE senda.ind_03_03_04_01_01_a1_lev; REINDEX TABLE senda.ind_03_03_04_01_lev; VACUUM FULL ANALYZE senda.ind_03_03_04_01_01_lev; VACUUM FULL ANALYZE senda.ind_03_03_04_01_01_a1_lev; VACUUM FULL ANALYZE senda.ind_03_03_04_01_lev; VACUUM FULL ANALYZE senda.ind_03_03_03_02_oc; SET temp_buffers=3; SELECT senda.ins_mat_lev_cria_indices(); SELECT senda.ins_mat_lev_1('98'); SELECT senda.ins_mat_lev_2('98'); SELECT senda.ins_mat_lev_3('98'); SELECT senda.ins_mat_lev_4('98'); SELECT senda.mat_marca_cliente_lev('98','LEVMAT',NULL,1256); Até esse ponto vai tranquilo, coisa de 5 minutos, a próxima função descarrega os registros( 2 milhões) das temporáriad para as tabelas UNLOGGED e aí que trava de vez em quando. Irineu Raymundo Senda engenharia de Dados. ___ 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 com aggregate no Postgres 9.5
Em 07/06/2016 18:03, Fabrízio de Royes Mello escreveu: On 07-06-2016 17:04, Irineu Raymundo wrote: Pessoal boa tarde, Estou faznedo alguns teste visando a migração do PostGres 9.0 para 9.5 . No 9.0 havia 1 aggregate: array_agg(anyelement), mas no 9.5 tem 2: array_agg(anyarray) e array_agg(anynonarray). Ao executar um SELECT pela aplicação está apresentando a seguinte mensagem: "SQL Error: ERROR: function array_agg(character varying) is not unique at character 1657 HINT: Could not choose a best candidate function. You might need to add explicit type casts." Alguém já passou por isso? Existe alguma forma de contornar sem ter que reescrever o SQL? Irineu, Vc tem certeza que não tem nenhum "custom aggregate" na sua base de dados?? No psql digite "\da array_agg" e cole o que mostra. Att, Fabrízio , Bah! Tinha mesmo um aggregate "customizado" com o nome igual na base, no 9.0 tava rodando sem problemas. Dropei o infeliz, reiniciei o banco e funcionou. Valeu mesmo. ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] Problema com aggregate no Postgres 9.5
Pessoal boa tarde, Estou faznedo alguns teste visando a migração do PostGres 9.0 para 9.5 . No 9.0 havia 1 aggregate: array_agg(anyelement), mas no 9.5 tem 2: array_agg(anyarray) e array_agg(anynonarray). Ao executar um SELECT pela aplicação está apresentando a seguinte mensagem: "SQL Error: ERROR: function array_agg(character varying) is not unique at character 1657 HINT: Could not choose a best candidate function. You might need to add explicit type casts." Alguém já passou por isso? Existe alguma forma de contornar sem ter que reescrever o SQL? Irineu Raymundo. ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] Estrutura do Postgres orientado a objetos
Senhores, Estou modelando o banco de dados(Postgres off course) de uma aplicação em java web para loja. Fiz uns testes criando types para os objetos como segue exemplo abaixo. CREATE TYPE cliente AS (nome character varying(250), cnpj_cpf character varying(20), email character varying(250); CREATE TABLE tb_cliente (id SERIAL PRIMARY KEY NOT NULL, cliente CLIENTE); A estimativa de crescimento do banco é atingir no máximo 20GB. Dentro desse cenário posso ter problemas de desempenho ou seria melhor modelar da forma tradicional ? Obrigado desde já pela ajuda. ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Estrutura do Postgres orientado a objetos
ou seria melhor modelar da forma tradicional ? A menos que você tenha ganhos na aplicação, ou reusará ‘cliente’ noutras relações (tabelas), seria melhor modelar sem o TYPE porque ele acaba complicando o modelo, tornando-o mais opaco principalmente para quem não participou da modelagem. Mesmo você, se a aplicação alcançar alguma estabilidade a ponto de não precisares te preocupar dela por uns meses, verá depois de um ano ou algo assim que não ficou tão transparente quanto poderia. Lembre-se que se continua falando do PostgreSQL como ‘objeto-relacional’ mais por uma questão de publicidade; o que no PostgreSQL (ou em qualquer SGBD) realmente facilita orientação a objeto é a riqueza de tipos e a conformidade ao modelo relacional, não exatamente TYPEs ou herança. Obrigado por suas observações, como sempre foram muito esclarecedoras. Pensando nelas , embora pareceu interessante modelar criando types isso pode me causar um certo desconforto no futuro, ainda mais que a documentação que tenho para o desenvolvimento não é lá essas coisas e pode me apresentar muitas surpresas. Abraço, Irineu. ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Trigger Before Update
Bom dia , estamos com o seguinte problema : Ao fazer um update es_movto_estoque set quantidade=100 where id=1000 , o retorno é : Query returned successfully: 0 rows affected, 41 ms execution time. Nessa tabela temos as 3 trigger abaixo , se eu excluir a trigger tr_bu_ret_ctrlnf o update funciona , alguem poderia me dizer o porque ?? vc tem um RETURN NULL na trigger tr_bu_ret_ctrlnf q é disparada no BEFORE UPDATE, isso faz o banco ignorar as alterações no registro. -- Irineu Raymundo Programador/Consultor Técnico Senda Engenharia de Dados Ltda. ___ 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?
Em 30/01/2014 09:03, Rodrigo escreveu: Bom dia Pessoal! Tem como usar o postgres embarcado numa aplicação java? Pelo menos que o instalador já instale o .jar e o banco? Rodrigo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral Se for uma aplicação desktop, com poucos acessos e quantidades de dados pequena o SQLite é uma boa alternativa. SQLite uma biblioteca em linguagem Chttp://pt.wikipedia.org/wiki/C_%28linguagem_de_programa%C3%A7%C3%A3o%29 que implementa um banco de dados SQLhttp://pt.wikipedia.org/wiki/SQL embutido. Tenho usado em aplicações menores e tem dado conta do recado. Sds, -- Irineu Raymundo Programador/Consultor Técnico Senda Engenharia de Dados Ltda. ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Violação de chave de unicidade sem valor duplicado
... IF EXISTS(SELECT a.id FROM senda.ind_03_03_02_02_a1 a WHERE a.id_movimento = NEW.id_movimento) THEN RETURN NULL; END IF; ... Continou a disparar a contraint. Poderia passar toda a sua função? Provavelmente você deveria colocar o código de INSERT após um ELSE, mas como tem um END IF aí não dá pra saber o que o resto de sua função faz. Salve Flávio, A trigger segue abaixo, na verdade ela está na própria tabela(ind_03_03_02_02_a1) do INSERT. Abraço. REATE OR REPLACE FUNCTION senda.movimentos_baixa() RETURNS trigger AS $BODY$ DECLARE vGravarFabrica BOOLEAN DEFAULT EXISTS(SELECT valor FROM senda.ind_03_03_01_01 WHERE parametro = 'informa_fabrica_baixa' AND valor = 'sim'); BEGIN IF TG_RELNAME = 'ind_03_03_02_02_a1' THEN IF EXISTS(SELECT a.id FROM senda.ind_03_03_02_02_a1 a WHERE a.id_movimento = NEW.id_movimento) THEN RETURN NULL; END IF; NEW.remessa := (SELECT remessa FROM senda.ind_03_03_02_02 WHERE id = NEW.id_movimento); NEW.cod_op:= (SELECT cod_op FROM senda.ind_03_03_02_02 WHERE id = NEW.id_movimento); IF (NEW.cod_celula IS NOT NULL) AND EXISTS(SELECT cod_segmento FROM senda.cad_01_02 WHERE cod_segmento = 2) THEN NEW.cod_turno:= (SELECT a.codigo FROM senda.ind_03_01_06 a WHERE a.desabil 'T' AND CASE WHEN a.hora_inicial a.hora_final THEN (a.hora_inicial = CURRENT_TIME AND a.hora_final = CURRENT_TIME) ELSE ((CURRENT_TIME BETWEEN a.hora_inicial AND CAST('23:59' AS TIME) AND a.hora_inicial = CURRENT_TIME) OR (CURRENT_TIME BETWEEN CAST('00:00' AS TIME) AND a.hora_final AND a.hora_final = CURRENT_TIME)) END LIMIT 1); END IF; ELSEIF TG_RELNAME = 'ind_03_03_02_02_a2' THEN NEW.remessa := (SELECT remessa FROM senda.ind_03_03_02_02 WHERE id = NEW.id_mov); NEW.cod_op := (SELECT cod_op FROM senda.ind_03_03_02_02 WHERE id = NEW.id_mov); END IF; IF vGravarFabrica THEN NEW.cod_fabrica:=COALESCE(NEW.cod_fabrica,(SELECT a.cod_fabrica FROM senda.ind_03_03_01_03 a WHERE a.codigo = NEW.remessa)); ELSE NEW.cod_fabrica:=(SELECT a.cod_fabrica FROM senda.ind_03_03_01_03 a WHERE a.codigo = NEW.remessa); END IF; RETURN NEW; END; $BODY$ LANGUAGE plpgsql VOLATILE; -- Irineu Raymundo Programador/Consultor Técnico Senda Engenharia de Dados Ltda. ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Violação de chave de unicidade sem valor duplicado
Em 04/04/2013 11:19, Flavio Henrique Araque Gurgel escreveu: Talvez você esteja com uma questão de concorrência. Verifique se o erro realmente aconteceu na tabela ind_03_03_02_02_a1 e certifique-se disso. Pergunto: ao inserir, de onde você retira o valor id_movimento (que me parece ser a sua PK ou pelo menos índice único)? Eu faria um teste, colocando dentro do IF que testa a existência um: RAISE EXCEPTION Pra logar o que realmente está acontecendo. Você pode colocar RAISE EXCEPTION ou RAISE NOTICE em vários pontos da sua função pra tentar debugar. O que pode haver é uma transação concorrente comitar o valor antes da sua função terminar, porém após o teste. Isso é possível em caso de isolamento READ COMMITTED. Flávio, é uma UNIQUE. Acho que resolvestes a charada, devers er o isolamento READ COMMITTED. Vou seguir tua sugestão, vou logar para ver o que tá ocorrendo. Muito obrigado. -- Irineu Raymundo Programador/Consultor Técnico Senda Engenharia de Dados Ltda. ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Violação de chave de unicidade sem valor duplicado
Em 04/04/2013 11:22, Jefferson Rosario escreveu: Nao desejo receber mensagens Em 04/04/2013 11:19, Flavio Henrique Araque Gurgel fla...@4linux.com.br mailto:fla...@4linux.com.br escreveu: Em 04-04-2013 09:52, Irineu escreveu: Saindo da lista acho que vc não vai mais receber nenhuma msg dela. -- Irineu Raymundo Programador/Consultor Técnico Senda Engenharia de Dados Ltda. ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Imagem no delphi
Em 27/09/2012 13:58, Éverton Bueno Lima escreveu: Ola pessoal, Eu criei um tipo bytea para poder salvar a imagem no meu banco de dados so que não estou conseguindo salvar pelo Delphi alguém já fez esse procedimento de salvar uma imagem no postgres pelo Delphi, estou utilizando conexão adoquery. uso no Delphi XE: Query.Open; Query.Append; TBlobField(Query.arquivo).LoadFromFile(c:\som.mp3); //qualquer arquivo binário Query.FieldByName('nome_arquivo').AsString:= 'som.mp3'; Query.Post; Guardo vários tipos de arquivos doc,txt,bpl,xml,mp3 e o que vier. Uso pacote Zeus para conexão com Postgres e tipo de campo bytea no banco. -- Irineu Raymundo Programador/Consultor Técnico Senda Engenharia de Dados Ltda. ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Blob ou ByteA (qual usar)
Em 18/09/2012 08:55, Hélio Oliveira escreveu: Bom dia Colegas! Estou iniciando com PostreSQL e como anteriormente trabalha com Firebird sempre surge algumas duvidas. No Fire temos o Blob sub-type 0 (para armazenar fotos...) e o sub-type 1 (para armazenar texto). No PostgreSQL temos os tipos Blob e ByteA qual usar e em que situação? Para binarios fotos e afins ByteA, se for texto text; -- Irineu Raymundo Programador/Consultor Técnico Senda Engenharia de Dados Ltda. ___ 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 função
Em 18/09/2012 15:26, Stclara escreveu: Salve, pessoal. Estou precisando desenvolver uma função para retornar saldo e comecei desta maneira, mas não retorna dados: Criei um type: CREATE TYPE saldo_caixa AS ( debito numeric(18,2) ); A função: CREATE OR REPLACE FUNCTION saldocaixa() RETURNS SETOF saldo_caixa AS $body$ DECLARE debito_atual NUMERIC(18,2); linha saldo_caixa; begin SELECT INTO debito_atual SUM(value_cash) FROM cashes WHERE (type_cash= 'D'); linha.debito = debito_atual; RETURN; END $body$ LANGUAGE 'plpgsql'; uma outra possibilidade: CREATE OR REPLACE FUNCTION saldocaixa() RETURNS SETOF saldo_caixa AS $body$ DECLARE debito_atual NUMERIC(18,2); linha saldo_caixa; begin RETURN Query SELECT SUM(value_cash)::NUMERIC(18,2) FROM cashes WHERE (type_cash= 'D'); END $body$ LANGUAGE 'plpgsql'; -- Irineu Raymundo Programador/Consultor Técnico Senda Engenharia de Dados Ltda. ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Função para validar email no postgres
Em 05/06/2012 11:39, Marcelo Silva (IG) escreveu: Pessoal, eu uso essa função para validar email no delphi: class function TSendMail.fValidarEmail(aStr: string): Boolean; begin aStr := Trim(UpperCase(aStr)); if Pos('@', aStr) 1 then begin Delete(aStr, 1, pos('@', aStr)); Result := (Length(aStr) 0) and (Pos('.', aStr) 2); end else Result := False; end; Ainda não tenho conhecimentos a ponto de portar essa função para o postgres Alguém teria uam função pra validar email no postgres? Gostaria de usa-la assim: select * from tabela where (fValidaEmail(email) = True) // ou 'True' ? Procurei na web mas não achei algo desse tipo SELECT REPLACE('iri...@senda.inf.br','_','') SIMILAR TO '[a-zA-Z][[:alnum:]_.-]*@[a-zA-Z][[:alnum:]_.-]*[.][a-zA-Z]+'; -- Irineu Raymundo Programador/Consultor Técnico Senda Engenharia de Dados Ltda. ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Função para validar email no postgres
Em 05/06/2012 12:47, Guimarães Faria Corcete DUTRA, Leandro escreveu: 2012/6/5 Irineuiri...@senda.inf.br: SELECT REPLACE('iri...@senda.inf.br','_','') SIMILAR TO '[a-zA-Z][[:alnum:]_.-]*@[a-zA-Z][[:alnum:]_.-]*[.][a-zA-Z]+'; Não reinvente a roda. Essa expressão está incompleta. Use uma biblioteca como as do Perl. Há um bom exemplo na palestra do David Fetter sobre PL/Perl, que eu reaproveitei nalgumas palestras minhas. obrigado pela sugestão, nunca usei nada de PL/Perl, mas vou pesquisar. -- Irineu Raymundo Programador/Consultor Técnico Senda Engenharia de Dados Ltda. ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Caracteres malditos :)
Em 30/05/2012 17:04, Marcelo Silva (IG) escreveu: Copiem e colem esses dois caracteres no bloco de notas e veja se tem diferena (no confundam com _ underline) - Pois ... no parece mas o primeiro caractere um chr(150) muito usado no word j o - o hifem to conhecido chr(45) Pois bm, no banco de dados UTF8 entra normalmente, mas na hora de ler com Latin1 d um xabu... Diz que no existe verso do para Latin1... ou seja ferra tudo. Questo: Como tratar esses mseros caracteres para que no de erro no Latin1 ? Esse erro pode ocorrer por exemplo, quando o usurio copia um texto do word e cola num campo (php ou delphi) * J no basta ter que programar, ainda temos que ser bidu Experimente no componente TZconnection colocar no properties: codepage=UTF8 client_encoding=UTF8 Com o Postgres 'UTF8' e client_encouding 'LATIN1' . Tive problemas com esses "caracteres malditos" e consegui resolver desse jeito, no achei outra forma. -- Irineu Raymundo Programador/Consultor Tcnico Senda Engenharia de Dados Ltda. ___ 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 7 + PostgreSQL 64bits
Em 29/05/2012 17:15, Fábio Gibon - Comex System escreveu: Pessoal, alguém ai trabalha com delphi 7 acessando o postgresql em 64bits (versão 9.0 em diante)? (preciso trocar algumas ideias) abraços Fábio Henrique Gibon ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral ERP em Delphi 2007 + Zeus + postgresql 9.0 -- Irineu Raymundo Programador/Consultor Técnico Senda Engenharia de Dados Ltda. ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] como salvar usuario em log com trigger
Em 23/05/2012 23:59, Fabrízio de Royes Mello escreveu: Em 23 de maio de 2012 17:58, Irineu iri...@senda.inf.br mailto:iri...@senda.inf.br escreveu: [...] Já tá no ar a 3 anos e nunca tive problemas, o unico cudado: após algum tempo o procpid se repete, então tem q apagar a acesso mais antigo com o mesmo codigo. Vc pode usar a extensão [1] e não terá esse tipo de problema. [1] http://pgxn.org/dist/session_variables/0.0.3/ valeu a dica, vou olhar com muita atenção para implementar. -- Irineu Raymundo Programador/Consultor Técnico Senda Engenharia de Dados Ltda. ___ 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 ELSE
Em 21/05/2012 18:56, Giovanni Sousa escreveu: select A.COD_ABA, A.LABEL_ABA, CASE WHEN COALESCE (A.cod_fun, 0)=0 THEN 'NÃO_MONITORADO' *--ELSE (RETORNAR O VALOR DO CAMPO) * END from tb_abas A outra possibilidade: SELECT a.cod_aba,a.label_aba, COALESCE(CAST(NULLIF(a.cod_fun,0) AS VARCHAR),'NÃO_MONITORADO') FROM tb_abas a; -- Irineu Raymundo Programador/Consultor Técnico Senda Engenharia de Dados Ltda. ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] como salvar usuario em log com trigger
Em 11/05/2012 15:30, Alessandro Lima escreveu: Tenho um aplicação web java + jdbc + postgresql 8.4 Criei uma trigger para registrar log de qualquer alteração em certa tabela. Mas não encontrei uma forma registrar o usuario neste log, pois o usuario da aplicação é diferente do usuario do banco de dados, alias todos os usuarios da aplicação utilizam o mesmo usuario do postgres. Existe alguma forma de passar o usuario como parametro junto com INSERT, UPDATE, DELETE? Estou utilizando uma gambiarra, adicionando o codigo do usuario no final do sql na forma de comentario, exemplo: delete from tabela where codigo = 1 --usuario:2 Prezado Alessandro, Tive o mesmo problema, todos os usuários acessando o banco com o mesmo usuário do banco. Depois de me bater muito atras de uma solução resolvi fazer uma tabela q no log da aplicação insere um registro com o nome do usuário na aplicação e o ID do processo: CREATE TABLE senda.sis_01_08_a6 ( procpid integer, usuario_banco character varying(60) DEFAULT current_user(), tp_acesso integer, usuario character varying(60) DEFAULT current_user(), dt_inicio timestamp without time zone DEFAULT now(), dt_fim timestamp without time zone DEFAULT now(), id serial NOT NULL, versao_app character varying(60) DEFAULT '0022011'::character varying, CONSTRAINT sis_01_08_a6_id_pkey PRIMARY KEY (id) ); aí criei uma função q recupera o usuário pelo PID: CREATE OR REPLACE FUNCTION senda.current_user_pid() RETURNS character varying AS $BODY$ SELECT COALESCE((SELECT usuario FROM senda.sis_01_08_a6 WHERE procpid = pg_backend_pid() ORDER BY id DESC LIMIT 1),CAST(CURRENT_USER AS VARCHAR)); $BODY$ LANGUAGE sql VOLATILE; Coloquei como default do campo usuario. Já tá no ar a 3 anos e nunca tive problemas, o unico cudado: após algum tempo o procpid se repete, então tem q apagar a acesso mais antigo com o mesmo codigo. Espero ter ajudado em alguma coisa. -- Irineu Raymundo Programador/Consultor Técnico Senda Engenharia de Dados Ltda. ___ 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 com alter table
Em 17/04/2012 06:12, Pedro Costa escreveu: Pessoal, É possível usar o case com um alter table? Tipo assim: alter table rua case n_rua exists (SELECT attname FROM pg_attribute WHERE attrelid = (SELECT oid FROM pg_class WHERE relname = 'ruas') AND attname = 'n_rua') then add column largura double precision,add column tipologia text,add column declive double precision else alter table ruas add column n_rua integer, poderias usar o comando SQL dentro de uma função usando EXECUTE : EXECUTE 'ALTER TABLE ruas' CASE WHEN EXISTS (SELECT attname FROM pg_attribute WHERE attrelid = (SELECT oid FROM pg_class WHERE relname = 'ruas') AND attname = 'n_rua') THEN ' ADD column largura double precision;' ELSE ' ADD column n_rua integer;' END; -- Irineu Raymundo Programador/Consultor Técnico Senda Engenharia de Dados Ltda. ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] percentagens
Em 03/04/2012 07:25, Pedro Costa escreveu: Pessoal este update retorna apenas números inteiros apesar de o campo percentagem ser double precision: update estacionamento set percentagem = ((select count (n_passeio) from passeios where estacionamt =4)*100)/(select count(n_passeio)from passeios) where classe like '4'; tente o seguinte: update estacionamento set percentagem = ((select count (n_passeio) from passeios where estacionamt =4)::numeric*100)/(select count(n_passeio)from passeios)::numeric where classe like '4'; -- Irineu Raymundo Programador/Consultor Técnico Senda Engenharia de Dados Ltda. ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] percentagens
Em 03/04/2012 08:13, Matheus de Oliveira escreveu: O que o Irineu passou está correto (acho), mas só para explicar, o PostgreSQL assim como C/C++ assumem que o operador de divisão quando feito para dois inteiros deve retornar um inteiro. Logo, caso queira decimal você deve converter pelo menos um dos elementos para decimal. Att. -- Matheus de Oliveira Isso mesmo, o comando 0::numeric é o mesmo que CAST(0 AS NUMERIC). Sds, -- Irineu Raymundo Programador/Consultor Técnico Senda Engenharia de Dados Ltda. ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Armazenamento de Imagens
Em 21/03/2012 13:35, Flavio Henrique Araque Gurgel escreveu: Nossa, que perigo... Se o cara errar qualquer coisa no ftp ou trocar um simples caractere do nome de um arquivo seu banco de dados não apontará mais pro arquivo certo. Eu sei que isso é prática comum, muita gente acha que banco de dados não é lugar de guardar arquivos, mas o risco é tremendo considerando os bancos de dados modernos. Concordo com o Flávio, na prática guardar arquivos no banco de dados vale a pena, tenho clientes com que usam um catalogo eletronico de produtos, com milhares de fotos, funciona perfeitamente com muita pouca manutenção e segurança, em 3 anos tive apenas 2 casos em que o arquivo ficou corrompido, foi só repor a foto e tudo certo. -- Irineu Raymundo Programador/Consultor Técnico Senda Engenharia de Dados Ltda. ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Armazenamento de Imagens
Em 22/03/2012 10:46, Alexsander Rosa escreveu: E como faz se o cliente quiser mudar a marca d'água em todos os produtos? Em 22 de março de 2012 08:23, Irineu iri...@senda.inf.br mailto:iri...@senda.inf.br escreveu: Em 21/03/2012 13:35, Flavio Henrique Araque Gurgel escreveu: Nossa, que perigo... Se o cara errar qualquer coisa no ftp ou trocar um simples caractere do nome de um arquivo seu banco de dados não apontará mais pro arquivo certo. Eu sei que isso é prática comum, muita gente acha que banco de dados não é lugar de guardar arquivos, mas o risco é tremendo considerando os bancos de dados modernos. Concordo com o Flávio, na prática guardar arquivos no banco de dados vale a pena, tenho clientes com que usam um catalogo eletronico de produtos, com milhares de fotos, funciona perfeitamente com muita pouca manutenção e segurança, em 3 anos tive apenas 2 casos em que o arquivo ficou corrompido, foi só repor a foto e tudo certo. -- Atenciosamente, Alexsander da Rosa http://rednaxel.com No meu caso não tenho esse requisito, dificilmente haverá uma troca de muitas imagens ao mesmo tempo. A maioria são desenhos técnicos(solados para calçados, peças metalicas, calçados) com alta resolução. Toda imagem é armazenada num cache na estação, todas elas geram uma chave hash md5. Se ela foi alterada, o aplicativo substitui a imagem no cache. -- Irineu Raymundo Programador/Consultor Técnico Senda Engenharia de Dados Ltda. ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Armazenamento de Imagens
Em 20/03/2012 21:56, Ronei Heck escreveu: Olá, Senhores(as), Necessito armazenar no banco de dados imagens de produtos e clientes. Qual o tipo de campo utilizado para isso? O que é melhor: criar uma tabela para fotos no mesmo banco de dados, ou criar um banco de dados só para as fotos? Se for no mesmo banco de dados das demais tabelas, haverá problema com backup? Olá, Tenho uma aplicação ERP para indústria em 56 clientes, com milhares de fotos rodando sem problemas, utilizo campo bytea. No nosso caso a decisão de separar a imagens em um outro banco é feita conforme a estrutura de servidor e rede de cada cliente. Visando diminuir o trafego de rede, criamos um mecanismo de cache em cada estação, a aplicação procura no cache, se não encontrar importa do banco, isso evita estar buscando toda hora a mesma imagem. Sds, -- Irineu Raymundo Programador/Consultor Técnico Senda Engenharia de Dados Ltda. ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Armazenamento de Imagens
Em 21/03/2012 10:31, Leandro Guimarães Faria Corce DUTRA escreveu: Le 2012-M-21 09h40, Irineu a écrit : a decisão de separar a imagens em um outro banco é feita conforme a estrutura de servidor e rede de cada cliente. Não entendi… um outro banco perto do cliente ou centralizado? cliente no caso é a entidade juridica que utiliza minha aplicação(me paga, eheheh). As vezes o servidor onde está rodando os dados já não é o ideal, aí tem uma maquina lá sobrando,fica como servidor de fotos. Mas não é regra, quando tem um servidor bom fica tudo no mesmo. -- Irineu Raymundo Programador/Consultor Técnico Senda Engenharia de Dados Ltda. ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Definir ordenação
Em 15/02/2012 02:45, Danilo Silva escreveu: Pessoal, Tenho a seguinte select: SELECT codigo, nome FROM tabela WHERE (codigo IN (4,6,1,3)) Existe a possibilidade de ordenar pelo codigo, de forma que o resultado seja ordenado pela mesma ordem que foi passado no IN? ou seja, o 1º resultado seria o código 4, o 2º seria o codigo 6 e assim por diante? Obrigado a todos Danilo outra possibilidade um tanto incomum : SELECT codigo, nome FROM tabela WHERE (codigo IN (4,6,1,3)) ORDER BY POSITION (codigo IN ARRAY[4,6,1,3]::TEXT) -- Irineu Raymundo Programador/Consultor Técnico Senda Engenharia de Dados Ltda. ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Banco de dados não inicia serviço
Talvez possa ajudar: Tive problemas para subir o Postgres no windows, o arquivo postmaster.pid não foi removido da pasta \data. Apaguei o arquivo e o banco subiu. Sds, Irineu. Em 25/01/2012 13:39, Ronei Heck escreveu: Senhores(as), Tenho um banco de dados de um cliente que não quer abrir. Acredito que esteja corrompido. Tenho o Postgres 8.3 instalado, e com a minha pasta \data normal, inicia o serviço e abre normalmente. Mas quando paro o serviço, troco a pasta \data pela do meu cliente, e tento iniciar o serviço, ele não inicia, fica pondo pontinhos na tela indefinidamente. Necessito pegar as vendas de um período pra passar para o cliente. Estas ficaram fora do backup que já foi restaurado lá. Então, pergunto: existem uma forma de acessar este banco de dados? Quais os passos que devo seguir? Existe algum tutorial que ensine os passos? Muito obrigado por qualquer ajuda. Ronei RH Sistemas Postgres 8.3 Clarion 6.1 Windows XP ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral -- Irineu Raymundo Programador/Consultor Técnico Senda Engenharia de Dados Ltda. ___ 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 trigger
use uma RULE ou crie a trigger no BEFORE INSERT da tabela e coloque uma condição NEW.campo IS NULL. Em 13/01/2012 10:20, Pedro Costa escreveu: Pessoal, eu tenho o seguinte trigger e função: http://pastebin.com/KxxTekd0 ele executa o trigger sempre para todos os registos, será que podem dizer-me como faço para que ele execute apenas para novos registos e para campos com valor null? Obrigado ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral -- Irineu Raymundo Programador/Consultor Técnico Senda Engenharia de Dados Ltda. ___ 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 trigger
Em 13/01/2012 13:41, Danilo Silva escreveu: Mas Irineu, até onde eu sei, utilizando trigger, independentemente do resultado da função o evento acontece, ou seja, se for insert, esse registro será inserido, estando null ou não. Creio que a solução estaria na RULE. Danilo Em 13 de janeiro de 2012 12:01, Irineu iri...@senda.inf.br mailto:iri...@senda.inf.br escreveu: use uma RULE ou crie a trigger no BEFORE INSERT da tabela e coloque uma condição NEW.campo IS NULL. Caro Danilo, Entendi q o nosso colega gostaria q a trigger fosse disparada apenas para registros novos e não o INSERT na tabela em si. Mesmo assim é possível usar a trigger, no BEFORE INSERT, coloca a condição q desejar dentro dela e faz um RETURN NEW se atender a condição ou um RETURN NULL se quiser chutar o registro, cfe exemplo de uma trigger q tenho no BEFORE INSERT: IF COALESCE(NEW.cod_componente,'') IN ('PAP','SUP') THEN NEW.quantidade:= 1*COALESCE((SELECT a.quantidade FROM senda.ind_03_03_02_01 a WHERE a.id = NEW.id_op),1); RETURN NEW; ELSEIF COALESCE(NEW.quantidade,0) = 0 THEN RETURN NULL; END IF; no caso do campo quantidade for 0 e os componentes nao forem 'PAP' e 'SUP' o banco nao executa o INSERT desse registro. Irineu. ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] Postgres 9.1
Senhores, Estou usando a versão 9.0, vale a pena migrar para 9.1 ? -- Irineu Raymundo Programador/Consultor Técnico Senda Engenharia de Dados Ltda. ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Modelagem: funcionário x dependente
Em 26/05/2011 09:30, Alexsander Rosa escreveu: Tudo isso porque eu queria evitar que o filho de um casal onde ambos são funcionários tivesse dois registros no sistema... :-) Mas no caso do dependente em questão o filho é de ambos, mas apenas 1 dos funcionários pode ter o dependente, ou então a empresa terá de pagar os beneficios dos dependentes em dobro ? Esta mensagem foi verificada pelo sistema de Segurança da SJB Solados Ltda. ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] RES: Navegar entre os registros
Tenho a seguinte situação (comum), onde pretendo apresentar os registros do BD quando o usuário clicar nos botões de navegação. Botão para: Primeiro, Anterior, Próximo e Último Registro. Mas, preciso que ocorra com as informações reais do BD, sem uso do cursor. Ao clicar nos botões, pretendo executar o select e apresentar a informação atual do BD. Dos exemplos abaixo, o que posso melhorar ? Olá Jocimar, Utilizo Delphi com Zeus e nosso ERP tem barra de navegação, a medida que as tabelas foram crescendo surgiu a necessidade de filtrá-los. Na tabela coloquei um parametro para filtrar os registros: 'SELECT * FROM tabela WHERE campo =:campo_chave'. :campo_chave é o resultado de uma função que executa o SQL abaixo. :valor é o codigo do registro atual. 1)primeiro SELECT MIN(campo) FROM tabela; 2)anterior SELECT campo FROM tabela WHERE campo :valor ORDER BY campo DESC LIMIT 1; 3)próximo SELECT campo FROM tabela WHERE campo : valor ORDER BY campo LIMIT 1; 4)último SELECT MAX(campo) FROM tabela; Espero te ajudado. Sds, Irineu Raymundo. Senda Engenharia de Dados Ltda. Esta mensagem foi verificada pelo sistema de Segurança da SJB Solados Ltda. ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] ENC: RES: Uso de memória pelo postgres
Como o Euler disse, fica muito difícil imaginar o que a sua rotina está fazendo. Se for um processo crítico para você, recomendo contratar uma consultoria para avaliar o problema. Podemos dar algumas dicas aqui, mas os seus problemas podem começar na configuração do PostgreSQL, passando por problemas de modelagem e possivelmente de reescrita do procedimento com o um todo. Sem enxergar o processo como um todo, fica muito difícil lhe ajudar. Já fiz este tipo de trabalho para várias vezes e sei como é difícil ajudar sem ter uma visão global do problema. Tenho certeza de que você vai encontrar ótimos profissionais por aqui. Agora, se você puder mostra todo o processo aqui, então poderemos lhe dar algumas idéias, claro. -- Prezado Fábio, Obrigado pela ajuda, vou seguir o teu conselho e sugerir uma consultoria para avaliar o problema. De qualquer forma consegui levantar alguma informações,o problema se resume a 2 comandos SQL. abaixo segue os comandos.Poderia a falta de um índice mais apropriado causar essa demora toda na execução dele? Os shared_buffers do postgres não tem valor de memória significativo alocada, o postgres tá dependendo totalmente do sistema operacional para o gerenciamento de memória. Servidor: OS Linux RedHat Interprise 5, 2 HD's SATA 5200rpm fazendo raide 1, 4GB RAM. PostgreSQL 8.3 ,base com 19GB aproximadamente. O processo problemático iniciou aproximadamente as 13:17 de ontem e terminou as 15:04. O Postgres usou 3,7 GB de RAM. Foi alterado a configuracao do PostgreSQL para reportar nos logs todo comando SQL cujo tempo de execucao ultrapesse 500ms. Gerou 1.534 comandos SQL no log, indicando que esse processo executou aproximadamente 1.500 comandos SQL com tempo superior a 500ms. O log aponta que estes comandos se resumem a apenas 2 comandos SQL, um sendo executado 513 vezes e o outro 1019. Essa tabela tem (ind_03_03_02_01_01) tem 840MB. Os dois comandos SQL sao: 1019 vezes: SELECT DISTINCT CAST(array_to_string(ARRAY(SELECT op2.tamanho || '/' || CAST(SUM(op2.quantidade) AS VARCHAR) FROM senda.ind_03_03_02_01_01 op2 WHERE op2.tamanho '' AND op2.remessa = op.remessa AND op2.cod_componente = op.cod_componente AND op2.cod_material = op.cod_material AND op2.cod_cor = op.cod_cor AND op2.cod_op IN (SELECT op3.cod_op FROM senda.ind_03_03_02_01_02_a1 op3 WHERE op3.remessa = op2.remessa AND op3.op_aux2 =0 AND op3.usuario = '' AND op3.sequencia_comp = 0) GROUP BY op2.remessa, op2.cod_componente, op2.cod_material, op2.cod_cor, op2.tamanho ORDER BY op2.remessa, op2.cod_componente, op2.cod_material, op2.cod_cor, op2.tamanho ), ' ') AS VARCHAR) AS grade FROM senda.ind_03_03_02_01_01 op WHERE op.tamanho '' AND op.remessa IN (SELECT op3.remessa FROM senda.ind_03_03_02_01_02_a1 op3 WHERE op3.remessa = op.remessa AND op3.op_aux2 = 0 AND op3.sequencia_comp = 0 AND op3.usuario = '') AND op.cod_componente = '' AND op.cod_material = '' AND op.cod_cor = 0; 513 vezes: SELECT op.numero, op.quantidade FROM senda.ind_03_03_02_01_02 op WHERE op.remessa IN(SELECT op2.remessa FROM senda.ind_03_03_02_01_02_a1 op2 WHERE op2.remessa = op.remessa AND op2.sequencia_comp = 54 AND op2.op_aux2 = 392 AND op2.usuario = 'adriel') AND op.cod_op IN
[pgbr-geral] Uso de memória pelo postgres
Caros, tenho uma função que calcula as necessidades de matéria prima para produção fazendo da seguinte forma: -cria tabelas temporárias e insere apenas os registros necessários para o calculo. -cria índices para essas tabelas temporárias -efetua os cálculos -insere no banco o resultado. Acontece que quando executa essa função demora mais de 3 horas para concluir, muitas vezes tendo que reiniciar o banco. Depois dos cálculos gerados a inserção dos dados é rápida. O servidor(Linux) tem 3,2GB reservado de RAM para o banco. Porém pelo diagnostico que me foi passado pelo administrador da rede o postgres nunca utilizou mais que 0,9 GB. Que configurações do banco poderia olhar para que o postgres utilize mais memória? Será que seria isso ? O que poderia ser? Se alguém puder me dar uma luz ficarei imensamente agradecido. Atenciosamente, Irineu Raymundo Esta mensagem foi verificada pelo sistema de Segurança da SJB Solados Ltda. ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] RES: Uso de memória pelo postgres
Marcal, são +/- 12 tabelas temporárias: 2 com 350.000 registros e o restante não passa de 8.000 registros. nestas tabelas com 350.000 registros que são feitos os cálculos, não utilizo cursor, no INSERT já faço o cálculo necessário e depois no último estagio do processo um UPDATE, após INSERT dos dados. -Mensagem original- De: pgbr-geral-boun...@listas.postgresql.org.br [mailto:pgbr-geral-boun...@listas.postgresql.org.br] Em nome de Marcal Hokama Enviada em: sexta-feira, 25 de fevereiro de 2011 10:38 Para: pgbr-geral@listas.postgresql.org.br Assunto: Re: [pgbr-geral] Uso de memória pelo postgres From: iri...@senda.inf.br To: pgbr-geral@listas.postgresql.org.br Date: Fri, 25 Feb 2011 09:37:17 -0300 Subject: [pgbr-geral] Uso de memória pelo postgres Caros, tenho uma função que calcula as necessidades de matéria prima para produção fazendo da seguinte forma: -cria tabelas temporárias e insere apenas os registros necessários para o calculo. -cria índices para essas tabelas temporárias -efetua os cálculos -insere no banco o resultado. Acontece que quando executa essa função demora mais de 3 horas para concluir, muitas vezes tendo que reiniciar o banco. Depois dos cálculos gerados a inserção dos dados é rápida. O servidor(Linux) tem 3,2GB reservado de RAM para o banco. Porém pelo diagnostico que me foi passado pelo administrador da rede o postgres nunca utilizou mais que 0,9 GB. Que configurações do banco poderia olhar para que o postgres utilize mais memória? Será que seria isso ? O que poderia ser? Se alguém puder me dar uma luz ficarei imensamente agradecido. Atenciosamente, Irineu Raymundo Prezado Irineu, Tem como passar o volume de dados envolvidos nessas tabelas temporárias? Marçal de Lima Hokama--e-mail: mhok...@hotmail.com ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral Esta mensagem foi verificada pelo sistema de Segurança da SJB Solados Ltda. ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] RES: Uso de memória pelo postgres
Em 25/02/11, Irineu Raymundoiri...@senda.inf.br escreveu: Caros, tenho uma função que calcula as necessidades de matéria prima para produção fazendo da seguinte forma: -cria tabelas temporárias e insere apenas os registros necessários para o calculo. -cria índices para essas tabelas temporárias -efetua os cálculos -insere no banco o resultado. Acontece que quando executa essa função demora mais de 3 horas para concluir, muitas vezes tendo que reiniciar o banco. Depois dos cálculos gerados a inserção dos dados é rápida. O servidor(Linux) tem 3,2GB reservado de RAM para o banco. Porém pelo diagnostico que me foi passado pelo administrador da rede o postgres nunca utilizou mais que 0,9 GB. Que configurações do banco poderia olhar para que o postgres utilize mais memória? Será que seria isso ? O que poderia ser? Se alguém puder me dar uma luz ficarei imensamente agradecido. Dependendo do volume e complexidade dos cálculos envolvidos a PL/pgSQL pode não ser a alternativa mais eficiente. Caso sejam cálculos complexos e volumosos considere a utilização de C para esta rotina de cálculo. Osvaldo Osvaldo, É uma boa sugestão, talvez seja o caminho. Essas PL's foram escritas originalmente por outra pessoa, estão em PL/psSQL mas são apenas INSERT e UPDATE. Pela sua experiência, trocando para a linguagem para sql pode haver melhora no desempenho? Esta mensagem foi verificada pelo sistema de Segurança da SJB Solados Ltda. ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] RES: Uso de memória pelo postgres
Marcelo, tua sugestão de criar as tabelas com nome único é bem interessante. hj não tenho problema com as tabelas temporárias por que antes de dar um COMMIT elas são dropadas, tm essa rotina é exclusiva, apenas um usuário pode executar. tive problema com tabela em uso exclusivo, motivo pelo qual uso as temporárias, insiro nelas os dados e ai posso manipular a vontade, sem bloquear ninguém. o processo não faz UPDATE em nenhum registro, antes de dar o INSERT do resultado da função faço um DELETE dos registros antigos. -Mensagem original- De: pgbr-geral-boun...@listas.postgresql.org.br [mailto:pgbr-geral-boun...@listas.postgresql.org.br] Em nome de Marcelo Silva (IG) Enviada em: sexta-feira, 25 de fevereiro de 2011 11:12 Para: Comunidade PostgreSQL Brasileira Assunto: Re: [pgbr-geral] Uso de memória pelo postgres Irineu, vou arriscar em dizer: Imagino que estja fazendo o seguinte: Cria tabela (com um determinado nome) Executa as rotinas Deleta tabela E se a tabela já existe o que voce faz ? Alter Table ? O postgres no momente que vai Excluir, Alterar tabelas e indices, ele precisa de acesso exclusivo, o que pode estar acontecendo é que no momento que você solicita a Alter Table ou Drop ele aguarda alguém que está usando a bendita tabela em questão, assim ele demora esse tempo todo. O que pode tentar fazer é se possível e se a tabela é de uso exclusivo para estes calculos, crie as tabelas com nomes Unicos para que não haja conflito entre os usuários, não use alter table a menos que saiba que a tabela não esteja sendo usada. Acho que adicionando o nomeuser a data e hora ao nome da tabela, ou o usuario ja que deve ser unico ja resolveria seu problema, exemplo: CRETAE TABLE TB_CALCULO+USER+DATA+HORA Assim cada tabela seria unica ps. esteja certo de fechar a tabela antes de exclui-la ou altera-la Espero ter sido claro... Marcelo Silva --- -Mensagem Original- From: Marcal Hokama Sent: Friday, February 25, 2011 10:37 AM To: pgbr-geral@listas.postgresql.org.br Subject: Re: [pgbr-geral] Uso de memória pelo postgres From: iri...@senda.inf.br To: pgbr-geral@listas.postgresql.org.br Date: Fri, 25 Feb 2011 09:37:17 -0300 Subject: [pgbr-geral] Uso de memória pelo postgres Caros, tenho uma função que calcula as necessidades de matéria prima para produção fazendo da seguinte forma: -cria tabelas temporárias e insere apenas os registros necessários para o calculo. -cria índices para essas tabelas temporárias -efetua os cálculos -insere no banco o resultado. Acontece que quando executa essa função demora mais de 3 horas para concluir, muitas vezes tendo que reiniciar o banco. Depois dos cálculos gerados a inserção dos dados é rápida. O servidor(Linux) tem 3,2GB reservado de RAM para o banco. Porém pelo diagnostico que me foi passado pelo administrador da rede o postgres nunca utilizou mais que 0,9 GB. Que configurações do banco poderia olhar para que o postgres utilize mais memória? Será que seria isso ? O que poderia ser? Se alguém puder me dar uma luz ficarei imensamente agradecido. Atenciosamente, Irineu Raymundo Prezado Irineu, Tem como passar o volume de dados envolvidos nessas tabelas temporárias? Marçal de Lima Hokama--e-mail: mhok...@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 mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral Esta mensagem foi verificada pelo sistema de Segurança da SJB Solados Ltda. Esta mensagem foi verificada pelo sistema de Segurança da SJB Solados Ltda. ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] RES: Conseguem me ouvir?
eu tmb. De: pgbr-geral-boun...@listas.postgresql.org.br [mailto:pgbr-geral-boun...@listas.postgresql.org.br] Em nome de Marcelo Silva Enviada em: terça-feira, 30 de novembro de 2010 08:19 Para: t...@batistarepresentacoes.com; Comunidade PostgreSQL Brasileira Assunto: Re: [pgbr-geral] Conseguem me ouvir? eu recebi essa - Original Message - From: Rubens José Rodrigues mailto:rubens.rodrig...@batistarepresentacoes.com To: 'Comunidade PostgreSQL Brasileira' mailto:pgbr-geral@listas.postgresql.org.br Sent: Tuesday, November 30, 2010 7:58 AM Subject: [pgbr-geral] Conseguem me ouvir? Pessoal, Não recebo mensagens do grupo há uns 4 dias, algum problema ou eu sou (estou com) o problema? Rubens José Rodrigues _ ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral -- Esta mensagem foi verificada pelo sistema de Segurança da SJB Solados. Esta mensagem foi verificada pelo sistema de Segurança da SJB Solados Ltda. ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] RES: MELHOR VERSAO APOS 8.3
obrigado pela dica, vou ir por esse caminho. -Mensagem original- De: pgbr-geral-boun...@listas.postgresql.org.br [mailto:pgbr-geral-boun...@listas.postgresql.org.br] Em nome de Victor Hugo Enviada em: terça-feira, 28 de setembro de 2010 14:12 Para: Comunidade PostgreSQL Brasileira Assunto: Re: [pgbr-geral] MELHOR VERSAO APOS 8.3 Irineu, Eu utilizo a 8.4.4, ainda não migrei para a 9.0. Migre para a 9.0 []´s victor hugo Em 28 de setembro de 2010 13:51, Irineu Raymundo iri...@senda.inf.br escreveu: boa tarde pessoal, Estamos pensando fazer update para uma versão mais recente do postgres, atualmente utilizamos a versão 8.3 . Qual seria a versão mais indicada ? obrigado. Irineu Raymundo Senda Engenharia de Dados Ltda. -- Esta mensagem foi verificada pelo sistema de Segurança da SJB Solados. ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral -- []´s Victor Hugo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral Esta mensagem foi verificada pelo sistema de Segurança da SJB Solados Ltda. Esta mensagem foi verificada pelo sistema de Segurança da SJB Solados Ltda. ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] MELHOR VERSAO APOS 8.3
boa tarde pessoal, Estamos pensando fazer update para uma versão mais recente do postgres, atualmente utilizamos a versão 8.3 . Qual seria a versão mais indicada ? obrigado. Irineu Raymundo Senda Engenharia de Dados Ltda. Esta mensagem foi verificada pelo sistema de Segurança da SJB Solados Ltda. ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] RES: Numerando linhas via SELECT no PGSQL
Uma alternativa: SELECT DISTINCT ON (a.linha) a.linha,a.nome FROM (SELECT generate_series(1,(SELECT COUNT(c.id) FROM pessoa c ),1) AS linha, b.nome FROM pessoa b ORDER BY nome) AS a; Sds, Irineu Raymundo. Senhores, Tenho o seguinte banco: create table pessoa (id integer primary key, nome varchar); insert into pessoa(id, nome) values(2, 'daniel'); insert into pessoa(id, nome) values(45, 'jefferson'); insert into pessoa(id, nome) values(23, 'eduardo'); insert into pessoa(id, nome) values(1, 'silvio'); insert into pessoa(id, nome) values(5, 'viviane'); insert into pessoa(id, nome) values(5, 'soila'); preciso fazer uma simples consulta onde me retorne isso: linha | nome 1 | daniel 2 | eduardo 3 | jefferson 4 | silvio 5 | soila 6 | viviane no oracle, eu faria o seguinte comando: select rownum as linha, nome from pessoa order by nome a pergunta é: Como faço isso no postgres? Não existe uma variavel rownum no postgres? -- Atenciosamente, Daniel Falcão Analista e Desenvolvedor de Software http://lattes.cnpq.br/2208735579737258 http://embuar.blogspot.com http://twitter.com/embuar -- Esta mensagem foi verificada pelo sistema de Segurança da SJB Solados. Esta mensagem foi verificada pelo sistema de Segurança da SJB Solados Ltda. ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] RES: quantiade de caracteres
Prezado Pedro, Se não houver uma contribuição melhor eu tenho um RTA: SELECT LENGTH('4343.5656.86.213')- LENGTH((REPLACE('4343.5656.86.213','.',''))); Sds, Irineu. -Mensagem original- De: pgbr-geral-boun...@listas.postgresql.org.br [mailto:pgbr-geral- boun...@listas.postgresql.org.br] Em nome de Pedro Espíndola Enviada em: quarta-feira, 12 de maio de 2010 10:54 Para: Comunidade PostgreSQL Brasileira Assunto: [pgbr-geral] quantiade de caracteres Amigos bom dia como faço para fazer um select retornando a quantiade de vezes que um determinado caractere aparece em uma coluna string. Por exemplo 4343.5656.86.213 quantas vezes aparece o ponto (.) nesta string. resposta 3 obr Pedro ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral --- - Esta mensagem foi verificada pelo sistema de Segurança da SJB Solados Ltda. Esta mensagem foi verificada pelo sistema de Segurança da SJB Solados Ltda. ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] RES: Comando IF
Pode-se dizer que tmb nas condicoes WHERE de um SQL ele se comporta igual? CREATE TABLE teste (cod INTEGER, nome VARCHAR(10)); INSERT INTO teste VALUES(1,'teste'); SELECT * FROM teste WHERE cod = 2 AND CAST(nome AS INTEGER) = 0; Sds, Irineu. -Mensagem original- De: pgbr-geral-boun...@listas.postgresql.org.br [mailto:pgbr-geral- boun...@listas.postgresql.org.br] Em nome de Pedro Espíndola Enviada em: segunda-feira, 10 de maio de 2010 14:16 Para: Comunidade PostgreSQL Brasileira Assunto: Re: [pgbr-geral] Comando IF Os compiladores são inteligentes de forma a não gastar energia atoa, como trata-se de uma condição do tipo AND, em q todas as condições devem ser satisfeitas, com certeza a primeira condição não sendo satisfeita, o restante é desprezado não necessitando ser testado. Abs Pedro 2010/5/10 Ricardo li...@softclube.com.br: Em 04/05/2010 13:29, rogeriogrando escreveu: Ola pessoal, estou com seguinte duvida, (Postgres 8.3.5). Tenho a seguinte restrição. IF ((x = 0) AND (y = 0)) AND (z = 0) THEN END IF; Se a primeira restrição ((x = 0) AND (y = 0)) não é satisfeita o banco mesmo assim faz a segunda (z = 0)? Até onde eu sei o banco avalia todos os testes, independentemente, da falha e algum dos testes. ___ 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 --- - Esta mensagem foi verificada pelo sistema de Segurança da SJB Solados Ltda. Esta mensagem foi verificada pelo sistema de Segurança da SJB Solados Ltda. ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] RES: Coluna na tabela tipo imagem ou pdf
De: pgbr-geral-boun...@listas.postgresql.org.br [mailto:pgbr-geral-boun...@listas.postgresql.org.br] Em nome de George M Tabatinga Enviada em: segunda-feira, 26 de abril de 2010 12:57 Para: Comunidade PostgreSQL Brasileira Assunto: [pgbr-geral] Coluna na tabela tipo imagem ou pdf Senhores, ,Qual a melhor forma de armazenar uma informação tipo imagem no formato pdf numa tabela Postgres? ,Grato, George -- George Machado Tabatinga, Analista de Sistemas - SETUR Olá George, No nosso caso armazenamos a imagem(bytea) numa tabela e referenciamos o código(integer) na tabela que utiliza a imagem(produtos,materiais,referencias, etc...). Criamos uma pasta cache nas estações, o aplicativo vai buscar do cache; se não encontrar a imagem ou ela tiver sido adulterada entao copia imagem do banco para o cache. Assim evitamos ao maximo o trafego na rede, que pra nós era o grande problema de manter imagens numa pasta e armazenar no banco apenas o caminho. Tomara q tenha ajudado em alguma coisa. Irineu Raymundo. Esta mensagem foi verificada pelo sistema de Segurança da SJB Solados Ltda. ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] RES: PostgreSQL x Firebird
Não sei por que o pessoal do Delphi insiste em compara Firebird com o PostgreSQL. Não vamos generalizar, tem muita gente boa no Delphi que ama o elefente. De: pgbr-geral-boun...@listas.postgresql.org.br [mailto:pgbr-geral-boun...@listas.postgresql.org.br] Em nome de Willian Jhonnes L. dos Santos Enviada em: quinta-feira, 15 de abril de 2010 10:17 Para: Comunidade PostgreSQL Brasileira Assunto: Re: [pgbr-geral] PostgreSQL x Firebird Em 14/04/2010 18:56, Roberto Mello escreveu: Não sei por que o pessoal do Delphi insiste em compara Firebird com o PostgreSQL. A questão não é comparar o PostgreSQL com o Firebird. A questão é que programadores Delphi levam a vida no melhor estilo TDataSet (quem programa ou já programou em Delphi sabe o que isso quer dizer). O Firebird deriva do Interbase. O Delphi, originalmente uma ferramenta da Imprise, depois Borland, depois CodeGear e, por fim, da Embarcadero, foi mantida, por longos anos, pela mesma empresa que desenvolve e mantém o Interbase. Para um casamento perfeito, a Borland recomendava, ou como gosto de pensar, obrigava seus usuário a usar seus produtos em conjunto (afinal, na instalação do Delphi você podia instalar o Interbase e o DBExpress só funcionava a contento com ele). Com o advento do Firebird, os programadores Delphi se viram livres da corrente que os prendia ao Interbase, mas continuaram com um SGBD que satisfizesse sua falta de jeito com outros SGBDs por estarem presos ao Interbase. Enfim, programadores Delphi, no geral, não gostam de pensar. Apenas arrastam componentes num formulário. Isso é ser TDataSet. Opa, já ia me esquecendo, sou um programador Delphi também! O que as pessoas não param pra analisar é a necessidade da aplicação e/ou cliente e todas as variáveis envolvidas no desenvolvimento. Não há porque instalar o PG num sistema monousuário, monoterminal, quando o SQLite atenderá eficientemente. Não há como usar o Firebird quando as exigências da aplicação/cliente são baseadas na segurança, integridade e volume dos dados, no volume de transações e outros quesitos mais críticos. Com isso chego a uma conclusão: uma coisa é uma coisa, outra coisa é outra coisa. E essa thread, no fim, vai gerar tanta polêmica que não vai ajudar em nada. E, afinal, pra que servem os DBAs e SGDBs robustos se temos o Firebird? []'s -- --- Att.: Willian Jhonnes L. dos Santos Analista/Desenvolvedor Object/Free Pascal willianjhon...@yahoo.com.br --- Seja livre. Use Linux. Grupo de Usuários GNU/Linux de São José dos Pinhais Linux user number 449753 --- Powered by Slackware Linux 13.0 Kernel 2.6.32.6-i686-core2quad --- Antes de perguntar: http://www.istf.com.br/perguntas/ -- Esta mensagem foi verificada pelo sistema de Seguran硠da SJB Solados. Esta mensagem foi verificada pelo sistema de Seguran�a da SJB Solados Ltda. ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] RES: Dúvida Sequence
Podes criar uma função e coloca-la no default do campo no lugar do sequence. Dentro da função algo do tipo: IF (SELECT MAX(date) FROM tabela) CURRENT_DATE THEN SETVAL(sequence,1); RETURN:= 1; ELSE RETURN:= nextval(sequence); END IF; Espero ter ajudado. Sds, Irineu Raymundo. -Mensagem original- De: pgbr-geral-boun...@listas.postgresql.org.br [mailto:pgbr-geral-boun...@listas.postgresql.org.br] Em nome de lis...@softpira.com Enviada em: quinta-feira, 22 de abril de 2010 12:02 Para: pgbr-geral@listas.postgresql.org.br Assunto: [pgbr-geral] Dúvida Sequence Bom dia!!! Gostaria de fazer um sequencial diário para os registros de uma determinada tabela (exemplo está no final da Mensagem). Pensei em fazer por SEQUENCE mas não ficaria automático a cada mudança de datas. Alguém tem alguma sugestão de como posso fazer neste caso? Abraços, Eder Sousa 21/04/2010 01 21/04/2010 02 21/04/2010 03 21/04/2010 04 21/04/2010 05 22/04/2010 01 22/04/2010 02 22/04/2010 03 22/04/2010 04 22/04/2010 05 22/04/2010 06 22/04/2010 07 ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral Esta mensagem foi verificada pelo sistema de Segurança da SJB Solados Ltda. Esta mensagem foi verificada pelo sistema de Segurança da SJB Solados Ltda. ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] Problema com imagens em Postgres 8.3 UTF8
B o a t a r d e a t o d o s , E s t o u t e n d o p r o b l e m a s c o m i m a g e n s n o b a n c o . E i s a s i t u a ç ã o : C o m P o s t g r e s 8 . 3 U T F 8 e m s e r v i d o r L i n u x , u t i l i z o c o m p o n e n t e Z e o s p a r a c o n e c t a r c o m b a n c o , c a r r e g o i m a g e m ( . j p g ) n u m c o m p o n e n t e D B i m a g e d o D e l p h i . A o t e n t a r l e r d á o s e g u i n t e e r r o : B i t m a p i m a g e i s n o t v a l i d . T u d o f u n c i o n a v a b e m e n q u a n t o e u u t i l i z a v a o p o s t g r e s 8 . 1 e m L A T I N 1 . A l g u é m t e m a l g u m a i d é i a d o q u e p o d e s e r ? D e s d e j á a g r a d e ç o q u a l q u e r a j u d a . A t e n c i o s a m e n t e , I r i n e u R a y m u n d o S e n d a E n g e n h a r i a d e D a d o s L t d a . w w w . s e n d a . i n f . b r Esta mensagem foi verificada pelo sistema de Segurança da SJB Solados Ltda. attachment: irineu.vcf ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] Problema com imagens em Postgres 8.3 UTF8
Boa tarde a todos, Estou tendo problemas com imagens no banco.Eis a situação: Com Postgres 8.3 UTF8 em servidor Linux, utilizo componente Zeos para conectar com banco ,carrego imagem(.jpg) num componente DBimage do Delphi. Ao tentar ler dá o seguinte erro: Bitmap image is not valid. Tudo funcionava bem enquanto eu utilizava o postgres 8.1 em LATIN1. Alguém tem alguma idéia do que pode ser? Desde já agradeço qualquer ajuda. Atenciosamente, Irineu Raymundo Senda Engenharia de Dados Ltda. www.senda.inf.br (48) 3265 1379 (48) 3265 1379 Atenciosamente, Irineu Raymundo Senda Engenharia de Dados Ltda. www.senda.inf.br (48) 3265 1379 (48) 3265 1379 Esta mensagem foi verificada pelo sistema de Segurança da SJB Solados Ltda. attachment: irineu.vcf ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Funcao postgres
inet_client_addr - Original Message - From: paulo matadr To: pgbr_LISTA Sent: Wednesday, October 21, 2009 12:09 PM Subject: [pgbr-geral] Funcao postgres Ola pessoal, um duvida simples, existe uma funcao no postgres que retorne o ip do usuario, do tipo: select get_ip ou algo parecido? agradeço -- Veja quais são os assuntos do momento no Yahoo! + Buscados: Top 10 - Celebridades - Música - Esportes -- Esta mensagem foi verificada pelo sistema de Segurança da SJB Solados. -- ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral Esta mensagem foi verificada pelo sistema de Segurança da SJB Solados Ltda. ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] Função com Tabela Temporária Qu e Não Apaga
Bom dia a todos, Tenho a seguinte Função: CREATE OR REPLACE FUNCTION prog_op(integer,character varying,integer,character varying) RETURNS void AS $BODY$ BEGIN CREATE TEMPORARY TABLE numeros_op ( lote_op integer, cod_ref varchar(16), cod_op integer, numero varchar(5), quantidade integer ) WITHOUT OIDS; . DROP TABLE numeros_op; END; $BODY$ LANGUAGE 'plpgsql' VOLATILE; Na primeira vez executo a função sem problemas, na segunda vez da a seguinte mensagem: ERROR: relation with OID 2212534 does not exist CONTEXT: SQL statement INSERT INTO senda.ind_03_03_02_01_02(cod_op,remessa,cod_ref,numero,quantidade) SELECT c.cod_op, $1 ,c.cod_ref,c.numero,SUM(c.quantidade) FROM numeros_op c GROUP BY c.lote_op,c.cod_op,c.cod_ref,c.numero ORDER BY c.lote_op,c.cod_op,c.cod_ref,c.numero PL/pgSQL function prog_op line 81 at SQL statement Aí só encerrando a sessão. Estou usando Postgres 8.1 . Alguém tem alguma idéia do que poderia ser? Agradeço qualquer ajuda, obrigado. Irineu Raymundo Senda Engenharia de Dados Ltda. Esta mensagem foi verificada pelo sistema de Segurança da SJB Solados Ltda. ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Função com Tabela Temporária Qu e Não Apaga
Caro Fabrízio, Valeu pela dica, resolvi o problema usando 'EXECUTE' cfe vc me indicou; foi só reescrever a função e pronto. Atenciosamente, Irineu Raymundo Senda Engenharia de Dados Ltda. www.senda.inf.br (48) 3265 1379 - Original Message - From: Fabrízio de Royes Mello To: Comunidade PostgreSQL Brasileira Sent: Thursday, October 22, 2009 8:34 AM Subject: Re: [pgbr-geral]Função com Tabela Temporária Que Não Apaga 2009/10/21 iri...@senda.inf.br Bom dia a todos, Tenho a seguinte Função: CREATE OR REPLACE FUNCTION prog_op(integer,character varying,integer,character varying) RETURNS void AS $BODY$ BEGIN CREATE TEMPORARY TABLE numeros_op ( lote_op integer, cod_ref varchar(16), cod_op integer, numero varchar(5), quantidade integer ) WITHOUT OIDS; . DROP TABLE numeros_op; END; $BODY$ LANGUAGE 'plpgsql' VOLATILE; Na primeira vez executo a função sem problemas, na segunda vez da a seguinte mensagem: ERROR: relation with OID 2212534 does not exist CONTEXT: SQL statement INSERT INTO senda.ind_03_03_02_01_02(cod_op,remessa,cod_ref,numero,quantidade) SELECT c.cod_op, $1 ,c.cod_ref,c.numero,SUM(c.quantidade) FROM numeros_op c GROUP BY c.lote_op,c.cod_op,c.cod_ref,c.numero ORDER BY c.lote_op,c.cod_op,c.cod_ref,c.numero PL/pgSQL function prog_op line 81 at SQL statement Aí só encerrando a sessão. Estou usando Postgres 8.1 . Alguém tem alguma idéia do que poderia ser? Caro Irieneu, Esse é um problema com versões anteriores a 8.3, conforme descrito no FAQ [1], mas que é contornável... Para resolver o problema basta executar a criação da tua tabela temporária dinâmicamente, ou seja, com o EXECUTE. Tente: EXECUTE 'CREATE TEMPORARY TABLE numeros_op ( lote_op integer, cod_ref varchar(16), cod_op integer, numero varchar(5), quantidade integer ) ON COMMIT DROP'; Note que adicionei o ON COMMIT DROP, e com isso não existe necessidade do DROP TABLE ao final da tua função. Espero ter ajudado. [1] http://www.postgresql.org/docs/faqs.FAQ_brazilian.html#item4.19 -- Fabrízio de Royes Mello Blog sobre TI: http://fabriziomello.blogspot.com -- Esta mensagem foi verificada pelo sistema de Segurança da SJB Solados. -- ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral Esta mensagem foi verificada pelo sistema de Segurança da SJB Solados Ltda. ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] UPDATE em a FOR LOOP de uma funçã o não funciona
- Original Message - From: Rodrigo Sperb To: pgbr-geral@listas.postgresql.org.br Sent: Tuesday, October 20, 2009 11:03 AM Subject: [pgbr-geral] UPDATE em a FOR LOOP de uma função não funciona Olá a todos, Estou tendo um problema para realizar um UPDATE numa tabela dentro de um FOR LOOP de uma função. Por algum motivo, o UPDATE não é realizado. Aqui está a parte em que dá problema: FOR ltt IN SELECT * FROM arrival_time_function AS at INNER JOIN edge AS e ON e.t_node=at.vid WHERE e.f_node=n_i LOOP geo := (SELECT dr_arrivaltime_function(geo_ti,n.geom, ltt.geom, tau_i,tau_prime) FROM (SELECT ltt.t_node AS vid, ef.geom FROM _edge_delay_function_ AS ef WHERE ltt.id=ef.eid AND ltt.val_dir=ef.val_dir) AS n); RAISE NOTICE 'geo = %', st_AsText(geo); ivid := ltt.vid; RAISE NOTICE 'ivid = %', ivid; UPDATE arrival_time_function SET geom=geo WHERE vid=ivid; DELETE FROM _queue_arrival_time_ WHERE vid=ltt.t_node AND tau = tau_i AND tau = tau_prime; END LOOP; Ah! ltt é declarado como do tipo record. E as NOTICEs me indicam que o que não acontece é a atualização na tabela, que o resto vai bem. Por favor, entendam que esse código já foi retrabalhado para tentar resolver o problema. Então, por exemplo, a variável ivid foi criada para ver se assim funcionava, ao invés de simplesmente colocar vid=ltt.vid O DELETE que segue o UPDATE parece não funcionar também... Espero que alguém tenha uma idéia de qual é o problema. Desde já agradeço eventuais sugestões. Isso faz parte da implementação do meu mestrado e perdi quase o dia todo por esso erro, ao meu ver, bobo... Atenciosamente Rodrigo Sperb -- Esta mensagem foi verificada pelo sistema de Segurança da SJB Solados. -- ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral Boa Tarde, Já me aconteceu uma vez a mesma situação, acabei descobrindo que dentro da função tinha criado uma variável com o mesmo nome do campo da tabela que estava executando o update. Foram 4 horas até achar... Sds, Irineu Raymundo Esta mensagem foi verificada pelo sistema de Segurança da SJB Solados Ltda. ___ 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 de modelagem de contas de ba ncos
Bom dia, Se ajudar : No meu caso tenho na tabela de movimentações da conta um campo que grava um sequencial(para saber a sequencia cronológica dos movimentos) e outro o saldo atual (saldo do movimento anterior + o valor do movimento que está sendo incluído). -na tabela da conta fica o saldo inicial. -quando incluo uma nova movimentacao apenas busco o saldo gravado no movimento anterior(se for a primeira movimentação pego o saldo inicial da conta). -quando excluo ou modifico uma movimentaçao tenho que recalcular o saldo apartir do movimento excluído para frente. assim tenho sempre o valor do saldo na conta para consulta sem precisar fazer muito cálculo. espero te ajudado de alguma forma. Atenciosamente, Irineu Raymundo. - Original Message - From: Bruno Carneiro guimaraescarne...@gmail.com To: pgbr-geral@listas.postgresql.org.br Sent: Saturday, October 10, 2009 11:31 AM Subject: [pgbr-geral] Dúvida de modelagem de contas de bancos Quero modelar a movimentação financeira em uma conta. A conta tem um saldo inicial. A partir daí haverão várias movimentações. O saldo inicial + as movimentações vão gerar um novo saldo. Como eu devo tratar esse saldo de forma eficiente? 1- Guardar somente o saldo inicial e toda vez recalcular o saldo baseado nas movimentações? 2- Guardar o saldo atual em um campo. O problema da abordagem número dois é que toda vez que alguém fizer uma nova movimentação tenho que recalcular, talvez não seja o ideal. O que me sugerem? -- View this message in context: http://www.nabble.com/D%C3%BAvida-de-modelagem-de-contas-de-bancos-tp25834706p25834706.html Sent from the PostgreSQL - Brasil mailing list archive at Nabble.com. ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral Esta mensagem foi verificada pelo sistema de Segurança da SJB Solados Ltda. Esta mensagem foi verificada pelo sistema de Segurança da SJB Solados Ltda. ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] Ajuda update em tabela noutro database
Boa Tarde Pessoal, Tenho 2 databases no mesmo banco e preciso fazer uma trigger no after insert de uma tabela do database a que faça um update numa tabela do database b. Alguém tem idéia de como faço isso ? Desde já obrigado pela ajuda. Irineu Raymundo Senda Engenharia de Dados Ltda. Esta mensagem foi verificada pelo sistema de Segurança da SJB Solados Ltda. ___ 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 update em tabela noutro database
Desculpa viajei, são 2 bancos no mesmo servidor, parece que o jeito é usar dblink; esse outro banco é uma aplicação de terceiros, não posso mudar isso. Obrigado. -Mensagem original- De: pgbr-geral-boun...@listas.postgresql.org.br [mailto:pgbr-geral-boun...@listas.postgresql.org.br] Em nome de Osvaldo Kussama Enviada em: quarta-feira, 26 de agosto de 2009 16:51 Para: Comunidade PostgreSQL Brasileira Assunto: Re: [pgbr-geral] Ajuda update em tabela noutro database 2009/8/26 Irineu Raymundo iri...@senda.inf.br: Tenho 2 databases no mesmo banco e preciso fazer uma trigger no after insert de uma tabela do database a que faça um update numa tabela do database b. Dúvida: são dois schemas ou dois databases? (não entendi o que possa significar 2 databases no mesmo banco) Alguém tem idéia de como faço isso ? No caso de schemas diferentes não existe nenhum problema é só referenciar o esquema. No caso de databases diferentes a coisa complica. Você pode utilizar o contrib dblink [1] mas pode acarretar um problema de performance caso o uso não seja eventual. Oscaldo [1] http://www.postgresql.org/docs/current/interactive/dblink.html ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral Esta mensagem foi verificada pelo sistema de Segurança da SJB Solados Ltda. Esta mensagem foi verificada pelo sistema de Segurança da SJB Solados Ltda. ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] RES: RES: Ajuda update em tabela noutro database
Valeu mesmo. -Mensagem original- De: pgbr-geral-boun...@listas.postgresql.org.br [mailto:pgbr-geral-boun...@listas.postgresql.org.br] Em nome de Osvaldo Kussama Enviada em: quarta-feira, 26 de agosto de 2009 17:01 Para: Comunidade PostgreSQL Brasileira Assunto: Re: [pgbr-geral] RES: Ajuda update em tabela noutro database 2009/8/26 Irineu Raymundo iri...@senda.inf.br: Desculpa viajei, são 2 bancos no mesmo servidor, parece que o jeito é usar dblink; esse outro banco é uma aplicação de terceiros, não posso mudar isso. Complementando: Sobre o dblink veja o post do jota Usando o DBLink para interligar dois bancos PostgreSQL em http://jotacomm.wordpress.com/. Veja também a dica do Joao Cosme de Oliveira Junior: uma boa seria utilizar plproxy em casos bem simples Osvaldo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral Esta mensagem foi verificada pelo sistema de Segurança da SJB Solados Ltda. Esta mensagem foi verificada pelo sistema de Segurança da SJB Solados Ltda. ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] Entrar no Grupo
Boa Tarde ! Desculpe minha ignorancia, alguém poderia me dizer quais são os passos para entrar na lista? Muito obrigado. Irineu Raymundo. Esta mensagem foi verificada pelo sistema de Segurança da SJB Solados Ltda. ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral