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

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

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

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




Em 4 de setembro de 2013 08:23, Rafael Fialho Corrêa
escreveu:

> pgAgent..
>
> Ele tem schedules (para colocar horários e dias determinados) e jobs
> (passos que serão realizados) que podem ser tanto em SQL, quanto em
> arquivos do tipo .bat, .sh, etc..
> Dependendo do SO da um trabalhinho pra configurar, mas funciona muito
> bem...
>
> []'s
>
>
> Em 4 de setembro de 2013 08:15, Rudimar  escreveu:
>
>> Pessoal,
>>
>> existe alguma forma no PostgreSQL de eu agendar alguns updates para rodar
>> em determinada hora?
>>
>> ___
>> pgbr-geral mailing list
>> pgbr-geral@listas.postgresql.org.br
>> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>>
>>
>
> ___
> pgbr-geral mailing list
> pgbr-geral@listas.postgresql.org.br
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>
>


-- 
Marcelo Silva

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


Re: [pgbr-geral] Delphi + Zeos: Alterar campos de tabela via trigger

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

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

Exemplo:

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

Veja ai se funciona


Marcelo Silva
---


Em 3 de setembro de 2013 17:35, Rafael Fialho Corrêa
escreveu:

> Já passei por algo parecido sim, Rafael.
> Normalmente o erro estava no próprio SQL repassado ao Zeos.
> Eu utilizo sempre esta estrutura para escrita/edição de dados:
> "select * from tabela where id_tabela = :id_tabela"
> Neste caso, ao efetuar insert ou update, o sistema sempre se comporta de
> maneira correta.
>
> De qualquer forma, creio que deves verificar as propriedades do teu
> TZQuery, antes de mais nada, e verificar se a estrutura de query repassada
> ao componente está de maneira simples e "filtrada".
>
>
> Em 3 de setembro de 2013 17:06, Rafael Naves  > escreveu:
>
>> Boa tarde a todos,
>>
>> Eu tenho uma trigger simples para preencher alguns campos da minha tabela
>> a cada alteração de registro:
>>
>> *CREATE TRIGGER tabela_teste_trigger_ui
>> *
>> *  BEFORE INSERT OR UPDATE *
>> *  ON public.tabela_teste FOR EACH ROW *
>> *  EXECUTE PROCEDURE public.atualiza_campos_ultimos();*
>>
>> *> Ela aciona uma a função abaixo:*
>>
>> *CREATE OR REPLACE FUNCTION public.atualiza_campos_ultimos(
>> *
>> *)*
>> *RETURNS trigger AS*
>> *$body$*
>> *BEGIN
>> *
>> *
>> *
>> *  if (TG_OP = 'INSERT') then*
>> *operacao := 'I';*
>> *  else*
>> *operacao := 'A';  *
>> *  end if;*
>> *  *
>> *  new.DATA_ALTERACAO:= current_timestamp;*
>> *  new.TIPO_OPERACAO := operacao;
>> *
>> *  *
>> *  if (TG_OP = 'INSERT') then
>> *
>> *return old;*
>> *  else*
>> *return new;*
>> *  end if;*
>> *
>> *
>> *END;
>> *
>> *$body$*
>> *LANGUAGE 'plpgsql'*
>> *VOLATILE*
>> *RETURNS NULL ON NULL INPUT*
>> *SECURITY INVOKER*
>> *COST 100;*
>>
>> *Problemática:*
>>
>> Ao executar pelo banco de dados, através de scripts funciona normalmente,
>> no entanto, quando é executada via aplicação usando Delphi 2007 + Zeos
>> 7.0.4 eu recebo o erro:
>>
>> *'0 record(s) updated. Only one record should have been updated.'*
>> *
>> *
>> Em minhas pesquisas e testes realizado pude perceber que o problema esta
>> relacionado com o update dos campos da tabela, fato é que, ao desativar a
>> trigger a aplicação consegue gravar os dados normalmente na tabela.
>>
>> Alguém já passou por isso ou percebeu alguma coisa na função que possa
>> estar ocasionando o problema?
>>
>> Obrigado.
>>
>>
>>
>> --
>> 
>> Rafael M. Naves
>> Analista/Programador
>> (31)9861-4047 (*novo!*)
>> (31)8636-8910
>> http://www.twitter.com/navesrafael
>> http://www.rafaelnaves.com
>>
>>
>> ___
>> pgbr-geral mailing list
>> pgbr-geral@listas.postgresql.org.br
>> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>>
>>
>
> ___
> pgbr-geral mailing list
> pgbr-geral@listas.postgresql.org.br
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>
>


-- 
Marcelo Silva

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


Re: [pgbr-geral] Insert é só pra tabela ?

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

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

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


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

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


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


Fica aí pra quem precisar

Obrigado a todos mais uma vez...


Marcelo Silva
---



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

>
>
>
> 2013/9/3 Juliano Atanazio 
>
>>
>>
>>
>> Em 3 de setembro de 2013 12:23, Matheus de Oliveira <
>> matioli.math...@gmail.com> escreveu:
>>
>>>
>>>
>>>
>>> 2013/9/3 Marcelo da Silva 
>>>
>>>> Pessoal no Delphi tenho a função INSERT que serve para inserir uma
>>>> string dentro da outra, por exemplo:
>>>>
>>>> S := insert('s', 'tete', 3);
>>>>
>>>> S = teste
>>>>
>>>> Existe alguma função que faça isso no postgres?
>>>> Já procurei no manuel, mas não encontrei.
>>>>
>>>>
>>> Existe a função overlay [1]:
>>>
>>> SELECT overlay('tete' placing 's' from 3 for 0);
>>>
>>> Você pode criar uma insert +ou- assim:
>>>
>>> CREATE FUNCTION insert(text,text,int)
>>> RETURNS TEXT
>>> LANGUAGE SQL AS $$
>>> SELECT overlay($1 placing $2 from $3 for 0);
>>> $$;
>>>
>>> [1]
>>> http://www.postgresql.org/docs/current/static/functions-binarystring.html
>>>
>>>
>>>
>> O exemplo do Matheus foi muito mais objetivo rs
>> De qualquer forma é bom ter uma certa variedade de formas de fazer a
>> mesma coisa.
>>
>
> =D
>
>
>> Adicionalmente, este link [1] tem funções de tratamento de strings no
>> PostgreSQL.
>> Extremamente útil :)
>>
>> [1] http://www.postgresql.org/docs/9.2/static/functions-string.html
>>
>>
>>
> Faz mais sentido que o link que eu mandei... aliás, o link que eu mandei
> não faz sentido algum (é pra bytea, apesar de ter a mesma função),
> considerem este do Juliano, xD...
>
> Atenciosamente,
> --
> Matheus de Oliveira
> Analista de Banco de Dados
> Dextra Sistemas - MPS.Br nível F!
> www.dextra.com.br/postgres
>
>
> ___
> pgbr-geral mailing list
> pgbr-geral@listas.postgresql.org.br
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>
>


-- 
Marcelo Silva

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


[pgbr-geral] Insert é só pra tabela ?

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

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

S = teste

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


-- 
Marcelo Silva

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


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

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

Exemplo:

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

   TrataDadosDaPrimeiraFuncao

   Return = Chama SubFuncao(parametros)

end;



Ou tenho que criar sempre funções separadas ?

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

Exemplo:

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

  select numa tabela conforme o parametro

  retorna = SubFuncao(ResultadoDoSelect)
fim funcao


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

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

E assim por diante, conforme o numero de caracter

-- 
Marcelo Silva

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


Re: [pgbr-geral] Tabela com Bytea

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


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

> 2013/8/30 Glauco Torres :
> >
> > Tenho uma tabela com um único campo bytea com  572645 registros, para
> buscar
> > um único registro é tarefa árdua, hoje só essa tabela passa fácil do 100
> GB
> > o que dificulta a manipulação não só dela como do restante do banco.
> >
> > Já estamos buscando formas de resolver esse problema em novos projetos.
>
> Busquem a palestra do Diogo Biazus no primeiro PgBR.  Algo deve ter
> mudado, mas creio que as informações básicas ainda valem.
> ___
> pgbr-geral mailing list
> pgbr-geral@listas.postgresql.org.br
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>



-- 
Marcelo Silva

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


[pgbr-geral] Tabela com Bytea

2013-08-30 Por tôpico Marcelo da Silva
Tenho uma tabela com 2 campos Bytea que guardam imagens JPG
Hoje tem 1.247 registros... e no pgAdmin demora que é uma beleza pra abrir
a tabela...
As imagens tem em média somente 55kb cada

Isso é normal quando se guarda imagem no banco ?



-- 
Marcelo Silva

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


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

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

Certinho aqui... muito obrigado...


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

>
> 2013/8/28 Marcelo da Silva 
>
>> Pessoal, de vez em quando surge umas necessidades doidas e aí vem as
>> ideias doidas também.
>>
>> Preciso em um relatório mostrar um determinado número de linhas mesmo
>> (branco) quando a query não me traz nenhum registro.
>> Bem nó codigo consigo fazer de boa, mas como a query é usada em mais de
>> um local, gostaria de fazer nela.
>>
>
> Se entendi bem, você queria, por exemplo, que a query retornasse ao menos
> N linhas, sendo que se retornar menos, sejam adicionadas linhas em branco
> (digamos NULL) para completar N linhas. É isso? Se não for explique
> melhor...
>
> Se for, isso funciona:
>
> WITH t AS (
> SELECT id, value FROM foo
> )
> SELECT t.* FROM t
> UNION ALL
> SELECT null, null FROM generate_series(1, (SELECT N - count(*) FROM t));
>
>
> (trocar N pelo número mínimo de linhas).
>
> Claro que pode ter implicações negativas em performance caso a consulta
> retorne muitas linhas (devido ao count).
>
> Atenciosamente,
> --
> Matheus de Oliveira
> Analista de Banco de Dados
> Dextra Sistemas - MPS.Br nível F!
> www.dextra.com.br/postgres
>
>
> ___
> pgbr-geral mailing list
> pgbr-geral@listas.postgresql.org.br
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>
>


-- 
Marcelo Silva

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


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

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

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

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



-- 
Marcelo Silva

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


Re: [pgbr-geral] Pra que serve OIDS ?

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

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


Em 26 de agosto de 2013 17:44, Marcone  escreveu:

> Em 26 de agosto de 2013 17:07, Guimarães Faria Corcete DUTRA, Leandro <
>> l...@dutras.org> escreveu:
>>
>> 2013/8/26 Marcelo da Silva :
>>> > Já vi umas bases que usam esses OIDS, pra que servem ?
>>>
>>> Basicamente, para nada.
>>
>>
> Conforme [1], os OID são bem utilizados internamente pelo postgres como
> PKs de tabelas do sistema.
>
> Em 26 de agosto de 2013 17:32, Marcelo da Silva 
>  escreveu:
>
> Imaginei ser isso, então concordo que serve pra quase nada mesmo... a
>> menos que o fulano queira saber em que ordem os registros foram inseridos
>> originalmente... pode ser?
>>
>
> A documentação [1] não dá orientação alguma sobre isso. O OID é um inteiro
> sem sinal de 4 bytes que dá um número bem grande de registros, mas que pode
> vir a ser estourado, aí o OID será reiniciado e sua lógica de ordenação
> perdida.
>
> 1 - http://www.postgresql.org/docs/9.2/static/datatype-oid.html
>
> --
> Marcone Peres - DBA
> http://www.linkedin.com/in/marconeperes
> oraculogeo.blogspot.com
> @marconeperes
> (61) 8146-0028
>
> ___
> pgbr-geral mailing list
> pgbr-geral@listas.postgresql.org.br
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>
>


-- 
Marcelo Silva

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


Re: [pgbr-geral] Pra que serve OIDS ?

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



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

> 2013/8/26 Marcelo da Silva :
> > Já vi umas bases que usam esses OIDS, pra que servem ?
>
> Basicamente, para nada.
>
> Mas, se o gajo não sabe para que servem chaves naturais, os OIDs
> servem como chaves artificiais...
> ___
> pgbr-geral mailing list
> pgbr-geral@listas.postgresql.org.br
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>



-- 
Marcelo Silva

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


[pgbr-geral] Pra que serve OIDS ?

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

Isso porque vem por padrão False no pgAdmin

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


-- 
Marcelo Silva

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


Re: [pgbr-geral] Sintaxe INSERT

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

Simplifica muito...

Valeu Edson



Em 19 de agosto de 2013 17:41, Edson Neto escreveu:

> Em 19 de agosto de 2013 17:22, Marcelo da Silva escreveu:
>
>> Mesmo depois de olhar a sintaxe do INSERT no site do postgres resolvi
>> perguntas aos gurus aqui da lista :)
>>
>> Teria como fazer um insert tratando uma condição ?
>>
>> Exemplo:
>>
>> INSERT INTO TABELA (CAMPO1, CAMPO2)
>> VALUES(VALOR1, VALOR2)
>> WHERE (CAMPO1 NOT IN(X))
>>
>> Ou seja, gostaria de verificar se existe um determinado registro antes de
>> inserir
>>
>> Mas gostaria de saber se dá pra fazer isso no insert simples e não criar
>> uma função pra isso.
>>
>
> O Postgres permite que você realize insert baseado em uma consulta. Com
> isso você poderia fazer o seguinte
>
> INSERT INTO TABELA (CAMPO1, CAMPO2)  select VALOR1,VALOR2  where not
> exists(select 1 from TABELA  where CAMPO1 =X);
>
> Nesse caso apenas ocorreria o insert caso não existisse campo1 com valor x
> na tabela.
>
> []s
>
> Edson
>
>
> ___
> pgbr-geral mailing list
> pgbr-geral@listas.postgresql.org.br
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>
>


-- 
Marcelo Silva

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


[pgbr-geral] Sintaxe INSERT

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

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

Exemplo:

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

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

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

Cada ideia né :)

Mas vai que cola... rsrsrs

-- 
Marcelo Silva

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


Re: [pgbr-geral] Não consigo acessar o postgresql

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



Em 14 de agosto de 2013 17:26, Marcelo da Silva escreveu:

> Qual sistema operacional ?
> Se for Linux talvez tenha que executar o fsck para concertar
>
>
> Em 14 de agosto de 2013 17:20, Eric Patrick escreveu:
>
>> Caros,
>>
>> Hoje fui tentar acessar o postgresql e obtive a seguinte mensagem:
>>
>> psql: FATAL:  could not open file "global/11672": Read-only file system
>>
>> olhei o respectivo arquivo e a permissão está ok, conforme abaixo:
>>
>> -rw---  1 postgres postgres 16384 May 31 11:37 11672
>>
>> Alguém poderia me dar uma ideia do que pode estar acontecendo?
>>
>> ___
>> pgbr-geral mailing list
>> pgbr-geral@listas.postgresql.org.br
>> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>>
>>
>
>
> --
> Marcelo Silva
> 
> Desenvolvedor Delphi / PHP
> My Postgres database
> Cel.: (11) 99693-4251
>



-- 
Marcelo Silva

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


Re: [pgbr-geral] Não consigo acessar o postgresql

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


Em 14 de agosto de 2013 17:20, Eric Patrick escreveu:

> Caros,
>
> Hoje fui tentar acessar o postgresql e obtive a seguinte mensagem:
>
> psql: FATAL:  could not open file "global/11672": Read-only file system
>
> olhei o respectivo arquivo e a permissão está ok, conforme abaixo:
>
> -rw---  1 postgres postgres 16384 May 31 11:37 11672
>
> Alguém poderia me dar uma ideia do que pode estar acontecendo?
>
> ___
> pgbr-geral mailing list
> pgbr-geral@listas.postgresql.org.br
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>
>


-- 
Marcelo Silva

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


Re: [pgbr-geral] CASE + CAST + CONCAT

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

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


Obrigado a todos que se dispuseram...




Em 12 de agosto de 2013 08:41, Rafael Naves
escreveu:

> Bom dia,
>
> Não esta faltando apenas o ")" na linha?
>
> cast((current_date - a.data_ven) as text)||' dias'
>
> Em 12 de agosto de 2013 08:37, Matheus de Oliveira
>  escreveu:
> >
> > On Mon, Aug 12, 2013 at 8:34 AM, Marcelo da Silva 
> wrote:
> >>
> >> Estou tentando fazer algo do tipo:
> >>
> >> ...
> >> case
> >> when ((a.data_qui is null)and(a.data_ven < current_date)) then
> >>   cast(current_date - a.data_ven) as text)||' dias'
> >> when (a.data_qui is not null) then
> >>   'Quitado'
> >> else cast(0 as char(1)) end as status,
> >> ...
> >>
> >> Explicando:
> >>
> >> Preciso mostrar a qtd de dias quando vencido, quando quitado mostrar
> >> quitado,
> >> ou seja hora será integer hora será text, mas pra não dar conflito
> estava
> >> tentando com cast, mudar tudo para text
> >>
> >> Ele reclama da conversão dentro do Case
> >
> >
> > Não testei, mas me parece que ele deve estar reclamando por causa desta
> > parte: `cast(0 as char(1))`. Os demais estão text, então use text aí
> também
> > (ao invés de char) ou então, já que é constante, use '0'.
> >
> >
> > Atenciosamente,
> > --
> > Matheus de Oliveira
> > Analista de Banco de Dados
> > Dextra Sistemas - MPS.Br nível F!
> > www.dextra.com.br/postgres
> >
> >
> > ___
> > pgbr-geral mailing list
> > pgbr-geral@listas.postgresql.org.br
> > https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
> >
>
>
>
> --
> 
> Rafael M. Naves
> Analista/Programador
> (31)9861-4047 (novo!)
> (31)8636-8910
> http://www.twitter.com/navesrafael
> http://www.rafaelnaves.com
> ___
> pgbr-geral mailing list
> pgbr-geral@listas.postgresql.org.br
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>



-- 
Marcelo Silva

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


[pgbr-geral] CASE + CAST + CONCAT

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

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

Explicando:

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

Ele reclama da conversão dentro do Case
-- 
Marcelo Silva

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


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

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

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

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

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

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





-- 
Marcelo Silva

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


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

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


Em 6 de agosto de 2013 10:43, Marcelo da Silva  escreveu:

> Hum... show, ali está bem explicado...
>
> Vou analisar minhas funções...
>
> Só um comentário achei estranho, no inicio ele diz que:
> "O lado negativo de se empregar funções no Postgres ou em qualquer SGBD é
> a necessidade de um tempo significativo de processamento"
> Eu sempre vi as funções dentro do banco como uma virtude justamente pelo
> ganho de processamento.
>
> Será que estou errado denovo?
>
>
>
>
> Em 6 de agosto de 2013 10:34, Claudio Bezerra Leopoldino <
> claudiob...@yahoo.com.br> escreveu:
>
> *Assunto:* Re: [pgbr-geral] Fwd: Funcão para contar dias uteis
>>
>> >Fabio, desculpa aproveitar da sua bondade, mas como cuido de muita coisa
>> aqui, fica meio dificil assimilar algumas coisas no postgres, sei que para
>> isso seria bom fazer um cursinho, mesmo que rápido em DBA Postgres, mas
>> "sabcome né", então eu lhe pergunto quais as diferenças entre IMMUTABLE,
>> VOLATILE, e STABLE ?
>> >Li no manual, mas confeço que fiquei meio confuso, pois ele se refere a
>> dados vindos de tabelas ou não, e ao mesmo tempo cita que os dados podem
>> ser mudados ou não, não compreendi, pois na minha concepção a volatilidade
>> dos dados dependeriam dos dados de entrada também, então o que torna uma
>> função volatil ou não ? Pelo meu ver toda função seria volatil, a menos que
>> se guardasse o resultado em alguma variavel ou tabela, sei lá...
>>
>> Veja os exemplos deste post:
>>
>>
>> http://postgresqlbr.blogspot.com.br/2012/08/categorias-de-volatilidade-de-funcoes.html
>>
>> Cordialmente,
>>
>> Cláudio
>>
>>
>> Em 6 de agosto de 2013 09:36, Fábio Telles Rodriguez <
>> fabio.tel...@gmail.com> escreveu:
>>
>> Em 6 de agosto de 2013 08:56, Marcelo da Silva 
>> escreveu:
>> > Outro detalhe, relendo seu Post, você está dizendo que é melhor
>> utilizar a
>> > verificação em cada select do que ter uma função pra isso? Não entendi.
>>
>> A regra de ouro é: se dá para fazer com SQL puro, não faça com PL.
>> Quando você manda um comando para um SGDB, seja Postgres, SQL Server,
>> Oracle, DB2 ou até o Mysql... eles tentam executar o seu comando da
>> forma mais eficiente possível. Se você manda uma consulta envolvendo
>> varias tabelas, ele vai avaliar em que ordem ele vai pegar as tabelas
>> para executar a sua consulta.
>>
>> Quando você utiliza o PL, o otimizador perde a sua autonomia em favor
>> da sua lógica de programação. Claro que se sua função é do tipo
>> IMMUTABLE, isso não é tão importante, afinal, você não está
>> consultando nenhuma tabela. Mas a sua função vai invariavelmente
>> aparecer dentro de um SQL e aí as coisas vão se complicando.
>> --
>> Atenciosamente,
>> Fábio Telles Rodriguez
>> blog: http://savepoint.blog.br
>> e-mail / gtalk / MSN: fabio.tel...@gmail.com
>> Skype: fabio_telles
>>
>> Timbira - A empresa brasileira de Postgres
>> http://www.timbira.com.br
>> ___
>> pgbr-geral mailing list
>> pgbr-geral@listas.postgresql.org.br
>> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>>
>>
>>
>>
>> --
>> Marcelo Silva
>> 
>> Desenvolvedor Delphi / PHP
>> My Postgres database
>> Cel.: (11) 99693-4251
>>
>> ___
>> pgbr-geral mailing list
>> pgbr-geral@listas.postgresql.org.br
>> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>>
>>
>> ___
>> pgbr-geral mailing list
>> pgbr-geral@listas.postgresql.org.br
>> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>>
>>
>
>
> --
> Marcelo Silva
> 
> Desenvolvedor Delphi / PHP
> My Postgres database
> Cel.: (11) 99693-4251
>



-- 
Marcelo Silva

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


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

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

Vou analisar minhas funções...

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

Será que estou errado denovo?




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

> *Assunto:* Re: [pgbr-geral] Fwd: Funcão para contar dias uteis
>
> >Fabio, desculpa aproveitar da sua bondade, mas como cuido de muita coisa
> aqui, fica meio dificil assimilar algumas coisas no postgres, sei que para
> isso seria bom fazer um cursinho, mesmo que rápido em DBA Postgres, mas
> "sabcome né", então eu lhe pergunto quais as diferenças entre IMMUTABLE,
> VOLATILE, e STABLE ?
> >Li no manual, mas confeço que fiquei meio confuso, pois ele se refere a
> dados vindos de tabelas ou não, e ao mesmo tempo cita que os dados podem
> ser mudados ou não, não compreendi, pois na minha concepção a volatilidade
> dos dados dependeriam dos dados de entrada também, então o que torna uma
> função volatil ou não ? Pelo meu ver toda função seria volatil, a menos que
> se guardasse o resultado em alguma variavel ou tabela, sei lá...
>
> Veja os exemplos deste post:
>
>
> http://postgresqlbr.blogspot.com.br/2012/08/categorias-de-volatilidade-de-funcoes.html
>
> Cordialmente,
>
> Cláudio
>
>
> Em 6 de agosto de 2013 09:36, Fábio Telles Rodriguez <
> fabio.tel...@gmail.com> escreveu:
>
> Em 6 de agosto de 2013 08:56, Marcelo da Silva 
> escreveu:
> > Outro detalhe, relendo seu Post, você está dizendo que é melhor utilizar
> a
> > verificação em cada select do que ter uma função pra isso? Não entendi.
>
> A regra de ouro é: se dá para fazer com SQL puro, não faça com PL.
> Quando você manda um comando para um SGDB, seja Postgres, SQL Server,
> Oracle, DB2 ou até o Mysql... eles tentam executar o seu comando da
> forma mais eficiente possível. Se você manda uma consulta envolvendo
> varias tabelas, ele vai avaliar em que ordem ele vai pegar as tabelas
> para executar a sua consulta.
>
> Quando você utiliza o PL, o otimizador perde a sua autonomia em favor
> da sua lógica de programação. Claro que se sua função é do tipo
> IMMUTABLE, isso não é tão importante, afinal, você não está
> consultando nenhuma tabela. Mas a sua função vai invariavelmente
> aparecer dentro de um SQL e aí as coisas vão se complicando.
> --
> Atenciosamente,
> Fábio Telles Rodriguez
> blog: http://savepoint.blog.br
> e-mail / gtalk / MSN: fabio.tel...@gmail.com
> Skype: fabio_telles
>
> Timbira - A empresa brasileira de Postgres
> http://www.timbira.com.br
> ___
> pgbr-geral mailing list
> pgbr-geral@listas.postgresql.org.br
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>
>
>
>
> --
> Marcelo Silva
> 
> Desenvolvedor Delphi / PHP
> My Postgres database
> Cel.: (11) 99693-4251
>
> ___
> pgbr-geral mailing list
> pgbr-geral@listas.postgresql.org.br
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>
>
> ___
> pgbr-geral mailing list
> pgbr-geral@listas.postgresql.org.br
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>
>


-- 
Marcelo Silva

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


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

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

Quando devo usar

VOLATILE
IMMUTABLE
STABLE

?


Em 6 de agosto de 2013 10:22, Marcelo da Silva  escreveu:

> Fabio, desculpa aproveitar da sua bondade, mas como cuido de muita coisa
> aqui, fica meio dificil assimilar algumas coisas no postgres, sei que para
> isso seria bom fazer um cursinho, mesmo que rápido em DBA Postgres, mas
> "sabcome né", então eu lhe pergunto quais as diferenças entre IMMUTABLE,
> VOLATILE, e STABLE ?
> Li no manual, mas confeço que fiquei meio confuso, pois ele se refere a
> dados vindos de tabelas ou não, e ao mesmo tempo cita que os dados podem
> ser mudados ou não, não compreendi, pois na minha concepção a volatilidade
> dos dados dependeriam dos dados de entrada também, então o que torna uma
> função volatil ou não ? Pelo meu ver toda função seria volatil, a menos que
> se guardasse o resultado em alguma variavel ou tabela, sei lá...
>
>
> Em 6 de agosto de 2013 09:36, Fábio Telles Rodriguez <
> fabio.tel...@gmail.com> escreveu:
>
> Em 6 de agosto de 2013 08:56, Marcelo da Silva 
>> escreveu:
>> > Outro detalhe, relendo seu Post, você está dizendo que é melhor
>> utilizar a
>> > verificação em cada select do que ter uma função pra isso? Não entendi.
>>
>> A regra de ouro é: se dá para fazer com SQL puro, não faça com PL.
>> Quando você manda um comando para um SGDB, seja Postgres, SQL Server,
>> Oracle, DB2 ou até o Mysql... eles tentam executar o seu comando da
>> forma mais eficiente possível. Se você manda uma consulta envolvendo
>> varias tabelas, ele vai avaliar em que ordem ele vai pegar as tabelas
>> para executar a sua consulta.
>>
>> Quando você utiliza o PL, o otimizador perde a sua autonomia em favor
>> da sua lógica de programação. Claro que se sua função é do tipo
>> IMMUTABLE, isso não é tão importante, afinal, você não está
>> consultando nenhuma tabela. Mas a sua função vai invariavelmente
>> aparecer dentro de um SQL e aí as coisas vão se complicando.
>> --
>> Atenciosamente,
>> Fábio Telles Rodriguez
>> blog: http://savepoint.blog.br
>> e-mail / gtalk / MSN: fabio.tel...@gmail.com
>> Skype: fabio_telles
>>
>> Timbira - A empresa brasileira de Postgres
>> http://www.timbira.com.br
>> ___
>> pgbr-geral mailing list
>> pgbr-geral@listas.postgresql.org.br
>> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>>
>
>
>
> --
> Marcelo Silva
> 
> Desenvolvedor Delphi / PHP
> My Postgres database
> Cel.: (11) 99693-4251
>



-- 
Marcelo Silva

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


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

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


Em 6 de agosto de 2013 09:36, Fábio Telles Rodriguez  escreveu:

> Em 6 de agosto de 2013 08:56, Marcelo da Silva 
> escreveu:
> > Outro detalhe, relendo seu Post, você está dizendo que é melhor utilizar
> a
> > verificação em cada select do que ter uma função pra isso? Não entendi.
>
> A regra de ouro é: se dá para fazer com SQL puro, não faça com PL.
> Quando você manda um comando para um SGDB, seja Postgres, SQL Server,
> Oracle, DB2 ou até o Mysql... eles tentam executar o seu comando da
> forma mais eficiente possível. Se você manda uma consulta envolvendo
> varias tabelas, ele vai avaliar em que ordem ele vai pegar as tabelas
> para executar a sua consulta.
>
> Quando você utiliza o PL, o otimizador perde a sua autonomia em favor
> da sua lógica de programação. Claro que se sua função é do tipo
> IMMUTABLE, isso não é tão importante, afinal, você não está
> consultando nenhuma tabela. Mas a sua função vai invariavelmente
> aparecer dentro de um SQL e aí as coisas vão se complicando.
> --
> Atenciosamente,
> Fábio Telles Rodriguez
> blog: http://savepoint.blog.br
> e-mail / gtalk / MSN: fabio.tel...@gmail.com
> Skype: fabio_telles
>
> Timbira - A empresa brasileira de Postgres
> http://www.timbira.com.br
> ___
> pgbr-geral mailing list
> pgbr-geral@listas.postgresql.org.br
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>



-- 
Marcelo Silva

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


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

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


Em 6 de agosto de 2013 08:54, Marcelo da Silva  escreveu:

> Valeu Fabio..., como eu citei eu não manjo, mas aqui tenho que fazer papel
> de DBA e tudo mais, "sabcomé", então nem sobra tempo pra estudar essas
> funções detalhadamente, as dicas aqui da lista são excelentes...
> Vou tratar de mudar a função :)
>
> Mais uma vez, muito obrigado...
>
>
> Em 6 de agosto de 2013 08:50, Fábio Telles Rodriguez <
> fabio.tel...@gmail.com> escreveu:
>
> Marcelo, lamento lhe informar mas você está fazendo isso do jeito
>> errado. Não é que sua função não funcione, mas por princípio não
>> devemos substituir um SQL puro por um PL. Quando você faz isso, o
>> otimizador de desempenho do postgres vai para o vinagre. Além disso,
>> você declarou sua função como VOLATILE. Se declarar como IMMUTABLE,
>> veria ganhos imediatos, vide:
>> http://www.postgresql.org/docs/current/static/sql-createfunction.html
>>
>> Eu escrevi um pouco sobre como trabalhar com datas aqui:
>>
>> http://savepoint.blog.br/brincando-com-algumas-funcoes-com-data-no-postgresql/
>>
>> 2013/8/5 Marcelo da Silva :
>> > Desculpa estava esquecendo de uma linha...
>> >
>> > Agora está OK
>> >
>> > -- Function: fproxdiautil(date)
>> >
>> > -- DROP FUNCTION fproxdiautil(date);
>> >
>> > CREATE OR REPLACE FUNCTION fdiasuteis(pData date, pDias integer)
>> >   RETURNS date AS
>> > $BODY$
>> > declare
>> >   Dia integer;
>> >   SomaDias integer;
>> >   NovaData date;
>> > Begin
>> >   SomaDias = 0;
>> >   NovaData = pData;
>> >   while (SomaDias < pDias) loop
>> > NovaData = NovaData + 1;
>> > Dia = extract(dow from NovaData);
>> > while (Dia = 0 or Dia = 6) loop
>> >   NovaData = NovaData + 1;
>> >   Dia = extract(dow from NovaData);
>> > end loop;
>> > SomaDias = SomaDias + 1;
>> >   end loop;
>> >   return fproxdiautil(NovaData);
>> > end;
>> > $BODY$
>> >   LANGUAGE plpgsql VOLATILE
>> >   COST 100;
>> > ALTER FUNCTION fdiasuteis(date, integer)
>> >   OWNER TO postgres;
>> >
>> >
>> > Marcelo Silva
>> >
>> > ___
>> > pgbr-geral mailing list
>> > pgbr-geral@listas.postgresql.org.br
>> > https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>> >
>>
>>
>>
>> --
>> Atenciosamente,
>> Fábio Telles Rodriguez
>> blog: http://savepoint.blog.br
>> e-mail / gtalk / MSN: fabio.tel...@gmail.com
>> Skype: fabio_telles
>>
>> Timbira - A empresa brasileira de Postgres
>> http://www.timbira.com.br
>> ___
>> pgbr-geral mailing list
>> pgbr-geral@listas.postgresql.org.br
>> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>>
>
>
>
> --
> Marcelo Silva
> 
> Desenvolvedor Delphi / PHP
> My Postgres database
> Cel.: (11) 99693-4251
>



-- 
Marcelo Silva

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


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

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

Mais uma vez, muito obrigado...


Em 6 de agosto de 2013 08:50, Fábio Telles Rodriguez  escreveu:

> Marcelo, lamento lhe informar mas você está fazendo isso do jeito
> errado. Não é que sua função não funcione, mas por princípio não
> devemos substituir um SQL puro por um PL. Quando você faz isso, o
> otimizador de desempenho do postgres vai para o vinagre. Além disso,
> você declarou sua função como VOLATILE. Se declarar como IMMUTABLE,
> veria ganhos imediatos, vide:
> http://www.postgresql.org/docs/current/static/sql-createfunction.html
>
> Eu escrevi um pouco sobre como trabalhar com datas aqui:
>
> http://savepoint.blog.br/brincando-com-algumas-funcoes-com-data-no-postgresql/
>
> 2013/8/5 Marcelo da Silva :
> > Desculpa estava esquecendo de uma linha...
> >
> > Agora está OK
> >
> > -- Function: fproxdiautil(date)
> >
> > -- DROP FUNCTION fproxdiautil(date);
> >
> > CREATE OR REPLACE FUNCTION fdiasuteis(pData date, pDias integer)
> >   RETURNS date AS
> > $BODY$
> > declare
> >   Dia integer;
> >   SomaDias integer;
> >   NovaData date;
> > Begin
> >   SomaDias = 0;
> >   NovaData = pData;
> >   while (SomaDias < pDias) loop
> > NovaData = NovaData + 1;
> > Dia = extract(dow from NovaData);
> > while (Dia = 0 or Dia = 6) loop
> >   NovaData = NovaData + 1;
> >   Dia = extract(dow from NovaData);
> > end loop;
> > SomaDias = SomaDias + 1;
> >   end loop;
> >   return fproxdiautil(NovaData);
> > end;
> > $BODY$
> >   LANGUAGE plpgsql VOLATILE
> >   COST 100;
> > ALTER FUNCTION fdiasuteis(date, integer)
> >   OWNER TO postgres;
> >
> >
> > Marcelo Silva
> >
> > ___
> > pgbr-geral mailing list
> > pgbr-geral@listas.postgresql.org.br
> > https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
> >
>
>
>
> --
> Atenciosamente,
> Fábio Telles Rodriguez
> blog: http://savepoint.blog.br
> e-mail / gtalk / MSN: fabio.tel...@gmail.com
> Skype: fabio_telles
>
> Timbira - A empresa brasileira de Postgres
> http://www.timbira.com.br
> ___
> pgbr-geral mailing list
> pgbr-geral@listas.postgresql.org.br
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>



-- 
Marcelo Silva

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


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

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

Agora está OK

-- Function: fproxdiautil(date)

-- DROP FUNCTION fproxdiautil(date);

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


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


[pgbr-geral] Funcão para contar dias uteis

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

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


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

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


-- 
Marcelo Silva

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


Re: [pgbr-geral] Ajuda com consulta

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

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

select campos from tabelarec
where (condicao)




Em 26 de julho de 2013 14:26, Glauco Torres escreveu:

>
> Tenho o seguinte select que me traz todas as tabelas que possui o campo
>> cod_id:
>>
>> select table_name from information_schema.columns
>> where table_schema not in(' pg_catalog ', ' information_schema ')
>>   and(column_name = 'cod_id')
>>
>> Isso pode te dar uma luz de como fazer seu select
>>
>>
> Pois é essa consulta eu já tinha conseguido fazer ela, o problema é o
> depois, mais mesmo assim obrigado.
>
>
> ___
> pgbr-geral mailing list
> pgbr-geral@listas.postgresql.org.br
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>
>


-- 
Marcelo Silva

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


Re: [pgbr-geral] Ajuda com consulta

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

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

Isso pode te dar uma luz de como fazer seu select


Marcelo Silva
-
Desenvolvedor Delphi / PHP




Em 26 de julho de 2013 11:51, Glauco Torres escreveu:

> Bom dia Pessoal!
>
> Seguinte preciso encontrar em todas as minhas tabelas a coluna de nome
> 'numeronota'  e trazer seus respectivos conteúdos.
>
> Pesquisei algumas coisas mais não encontrei nada para PostgreSQL, o nome
> disso se não estou enganado é reflexão de colunas.
>
> Grato
>
> Att Glauco Torres
>
>
> ___
> pgbr-geral mailing list
> pgbr-geral@listas.postgresql.org.br
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>
>


-- 
Marcelo Silva

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


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

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


Em 22 de julho de 2013 14:12, Fabiano Abreu
escreveu:

> Marcelo,
>
> Tenho este mesmo problema no MySQL. O trim realmente não tira o carácter,
> até porque o carácter enter não é um espaço, creio que seja o padrão ANSI
> mesmo.
>
> Abraços.
>
> Fabiano Abreu
> paposql.blogspot.com.br
> Em 22/07/2013 12:49, "Marcelo da Silva"  escreveu:
>
>> Pessoal, tenho o seguinte, sabe como é o usuário no copia e cola, as
>> vezes vem caracteres invisiveis, mas que nos dão uma dor de cabeça.
>>
>> Veja os exemplos dos select abaixo:
>>
>>  SELECT 'TESTE'  = "TESTE"
>> SELECT TRIM('TESTE ') = "TESTE"
>> SELECT TRIM('TESTE
>> ') = "TESTE "
>>
>> Vejam que o ultimo select tem um Chr(13) no final da string, o que deixa
>> o Trim menos "eficiente" pois ele tira o chr(13) mas deixa um espaço.
>>
>> Me parece que o Trim entende que logo depois do " " tem um novo caracter,
>> então ele passa a considerar o " " como um intervalo de palavras... isso
>> acaba causando problemas numa verificação no Delphi, que que o Trim do
>> Delphi limpa mesmo caracteres como chr(13) quando percebe que não há mais
>> caracteres visiveis.
>>
>> Pergunta: Isso é um bug do trim Postgres ou esse funcionamento está
>> correto?
>>
>> Imaginem uma string "Teste
>>
>>
>>
>> "
>>
>> Ele acaba deixando um caracter em branco no final, no meu ver parece algo
>> errado com o Trim.
>>
>>
>>
>>
>> --
>> Marcelo Silva
>> 
>> Desenvolvedor Delphi / PHP
>> My Postgres database
>> Cel.: (11) 99693-4251
>>
>> ___
>> pgbr-geral mailing list
>> pgbr-geral@listas.postgresql.org.br
>> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>>
>>
> ___
> pgbr-geral mailing list
> pgbr-geral@listas.postgresql.org.br
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>
>


-- 
Marcelo Silva

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


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

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

Veja os exemplos dos select abaixo:

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

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

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

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

Imaginem uma string "Teste



"

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




-- 
Marcelo Silva

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


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

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

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

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


Em 17 de julho de 2013 15:27, Alessandro Gonçalves escreveu:

> Se o c3 tiver uma seletividade maior que c1 o banco vai respeitar os
> parenteses e vai primeiramente  considerar o c1
>
> SELECT * FROM TABELA WHERE ((c1 == 1) AND c3 == 1)
>
>
> Em 17 de julho de 2013 15:16, Marcelo da Silva escreveu:
>
> Opa... Euler, um detalhe me chamou a atenção:
>>
>> " (é claro que ele vai respeitar a ordem indicada
>> com parênteses)."
>>
>> Como assim, poderia dar um exemplo num simples SQL ?
>>
>> Gostaria de saber sobre isso, pois eu sempre separo as condições entre
>> parenteses
>>
>> SELECT * FROM TABELA WHERE (CONDICAO1)AND(CONDICAO2) ETC
>>
>> Faço isso para melhor leitura mesmo... vai que estou errando...
>>
>>
>>
>> Em 17 de julho de 2013 15:09, Euler Taveira escreveu:
>>
>> On 17-07-2013 12:58, engine.gro...@gmail.com wrote:
>>> > Vou "aproveitar" uma explicação que tive de um DBA Oracle...(eu sei, a
>>> > lista é de PG)...
>>> >
>>> Oracle *não* é Postgres. ;)
>>>
>>> > " Procure no where sempre colocar os campos que pertencem a chave de
>>> > indice da tabela, na mesma ordem se a chave for composta, pois o banco
>>> > utiliza a estatistica para realizar a pesquisa e se a chave for
>>> composta
>>> > e a formatacao da filtragem nao for igual a chave, entao o fitro será
>>> > feito sem utilizar a estatistica da tabela  "
>>> >
>>> Isso não é verdade! O otimizador é esperto o suficiente para utilizar
>>> primeiro os campos com *maior* seletividade independente da ordem em que
>>> eles aparecem no WHERE (é claro que ele vai respeitar a ordem indicada
>>> com parênteses).
>>>
>>> Se o outro banco de dados faz isso, ele está anos-luz atrás do Postgres
>>> -- que já faz isso a bastante tempo. Porém, duvido que isso seja verdade
>>> no banco de dados do Larry.
>>>
>>>
>>> --
>>>Euler Taveira   Timbira - http://www.timbira.com.br/
>>>PostgreSQL: Consultoria, Desenvolvimento, Suporte 24x7 e Treinamento
>>> ___
>>> pgbr-geral mailing list
>>> pgbr-geral@listas.postgresql.org.br
>>> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>>>
>>
>>
>>
>> --
>> Marcelo Silva
>> 
>> Desenvolvedor Delphi / PHP
>> My Postgres database
>> Cel.: (11) 99693-4251
>>
>> ___
>> pgbr-geral mailing list
>> pgbr-geral@listas.postgresql.org.br
>> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>>
>>
>
>
> --
> *   *Alessandro Gonçalves
> Programador de Sistemas para Web
>
> ___
> pgbr-geral mailing list
> pgbr-geral@listas.postgresql.org.br
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>
>


-- 
Marcelo Silva

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


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

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

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

Como assim, poderia dar um exemplo num simples SQL ?

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

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

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



Em 17 de julho de 2013 15:09, Euler Taveira  escreveu:

> On 17-07-2013 12:58, engine.gro...@gmail.com wrote:
> > Vou "aproveitar" uma explicação que tive de um DBA Oracle...(eu sei, a
> > lista é de PG)...
> >
> Oracle *não* é Postgres. ;)
>
> > " Procure no where sempre colocar os campos que pertencem a chave de
> > indice da tabela, na mesma ordem se a chave for composta, pois o banco
> > utiliza a estatistica para realizar a pesquisa e se a chave for composta
> > e a formatacao da filtragem nao for igual a chave, entao o fitro será
> > feito sem utilizar a estatistica da tabela  "
> >
> Isso não é verdade! O otimizador é esperto o suficiente para utilizar
> primeiro os campos com *maior* seletividade independente da ordem em que
> eles aparecem no WHERE (é claro que ele vai respeitar a ordem indicada
> com parênteses).
>
> Se o outro banco de dados faz isso, ele está anos-luz atrás do Postgres
> -- que já faz isso a bastante tempo. Porém, duvido que isso seja verdade
> no banco de dados do Larry.
>
>
> --
>Euler Taveira   Timbira - http://www.timbira.com.br/
>PostgreSQL: Consultoria, Desenvolvimento, Suporte 24x7 e Treinamento
> ___
> pgbr-geral mailing list
> pgbr-geral@listas.postgresql.org.br
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>



-- 
Marcelo Silva

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


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

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

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

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

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

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

Bem, qualquer dica é bem vinda :)


Marcelo Silva




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

>  Em 16-07-2013 09:03, Cicero Neto escreveu:
> --corte--
>
> Caso use a clausura WHERE pririze-a INVERTENTO a ordem dos campos EXE:-
> WHERE CAMPO4,3,2,1.
>
> --corte--
>
>
> Bom dia,
>
> Você pode indicar alguma documentação onde informa isto?
>
> Já li toda a documentação do PostgreSQL, principalmente a parte de
> otimização e reescrita de SQL e não lembro de algo informando que a ordem
> de campos no WHERE tem impacto no desempenho, inclusive já fiz testes e
> nunca observei alteração.
>
> Como já faz um tempo que li gostaria de saber de onde você tirou esta
> informação, posso estar enganado, mas acredito que não exista nenhuma
> relação na ordem do WHERE em relação a desempenho na consulta.
>
> Abraço,
> Fabiano Machado Dias
>
>- Português - detectado
>- Inglês
>- Português
>
>
>- Inglês
>- Português
>
><#13fecfcefe68618b_>
>
> ___
> pgbr-geral mailing list
> pgbr-geral@listas.postgresql.org.br
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>
>


-- 
Marcelo Silva

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


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

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

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

Como pode isso ?

Meu servidor deve estar com problema de "balanceamento", rs ?

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

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

-- 
Marcelo Silva

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


Re: [pgbr-geral] Expressão Regular para CNPJ e CPF via SQL

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


2013/7/15 Osvaldo Kussama 

> 2013/7/15, Osvaldo Kussama :
> > Em 15/07/13, Marcelo da Silva escreveu:
> >> Interessante Osvaldo...
> >> Mas por que será que o Postgres colocar um espaço no inicio da String ?
> >> Veja:
> >>
> >> SELECT to_char(01234567890, '000"."000"."000"-"00')
> >>
> >> Result = " 012.345.678-90"
> >>
> >>
> >
> > Coloque FM (FM prefix - fill mode (suppress padding blanks and
> > trailing zeroes)):
> >
> > bdteste=# SELECT '[' || to_char(012345678000123,
> > '00"."000"."000"/""-"00') || ']';
> >?column?
> > ---
> >  [ 12.345.678/0001-23]
> > (1 row)
> >
> > bdteste=# SELECT '[' || to_char(012345678000123,
> > 'FM00"."000"."000"/""-"00') || ']';
> >?column?
> > --
> >  [12.345.678/0001-23]
> > (1 row)
> >
> > Osvaldo
> >
> >
> http://www.postgresql.org/docs/current/interactive/functions-formatting.html
> >
>
>
> Complementando:
>
> O espaço é para um eventual sinal. No caso de positivo ele deixa em branco:
>
> bdteste=# SELECT '[' || to_char(-012345678000123,
> '00"."000"."000"/""-"00') || ']';
>?column?
> ---
>  [-12.345.678/0001-23]
>
> Osvaldo
> ___
> pgbr-geral mailing list
> pgbr-geral@listas.postgresql.org.br
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>



-- 
Marcelo Silva

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


Re: [pgbr-geral] Expressão Regular para CNPJ e CPF via SQL

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

SELECT to_char(01234567890, '000"."000"."000"-"00')

Result = " 012.345.678-90"


Marcelo Silva
--


Em 15 de julho de 2013 15:38, Osvaldo Kussama
escreveu:

> Em 15/07/13, Giovani Rodrigues escreveu:
> > Boa tarde pessoal.
> >
> > Existe a possibilidade no postgres de formatar um campo cnpj ou cpf
> direto
> > na consulta com expressão regulares?
> >
> > Eu armazeno somente números na tabela para esses campos.
> >
>
>
> Uma maneira é você apenas formatar para exibição. Por exemplo:
> bdteste=# SELECT to_char(01234567890, '000"."000"."000"-"00');
>  to_char
> -
>   012.345.678-90
>
> SELECT to_char(012345678000123, '00"."000"."000"/""-"00');
>to_char
> -
>   12.345.678/0001-23
> (1 row)
>
> Osvaldo
> ___
> pgbr-geral mailing list
> pgbr-geral@listas.postgresql.org.br
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>



-- 
Marcelo Silva

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


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

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




Em 5 de julho de 2013 16:07, Bruno Silva  escreveu:

>
> 2013/7/5 Claudio Bezerra Leopoldino 
>
>> EXPLAIN  SELECT A.CAMPOS FROM TABEL_A A
>>
>> WHERE (A.CODIGO NOT IN(SELECT CODIGO FROM TABELA_B))
>>
>
> Trocaria o NOT IN port NOT EXISTS
>
> Bruno E. A. Silva.
> Analista de Sistemas.
> Bacharel em Sistemas de Informação
> Pós-graduando em Gerência de Projetos
> Certified Scrum Master
> LPIC-1
> SCJP, SE 6
> Novell CLA / DCTS ECR
> DBA Postgres
> ---
> “A caixa dizia: Requer MS Windows ou superior. Então instalei Linux.” -
> Sábio Desconhecido
> "Alguns prestam serviço/consultoria de Qualidade, os outros vendem
> licença!"
>
> ___
> pgbr-geral mailing list
> pgbr-geral@listas.postgresql.org.br
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>
>


-- 
Marcelo Silva

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


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

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

OPCAO A

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

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


OPCAO B

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

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


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

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

Mito detonado ? rsrsrs



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

> Não depende apenas da consulta. Depende dos dados armazenados e
> estatísticas no seu servidor.
>
> Peço que use explain e noso envie o reultado:
>
> EXPLAIN SELECT A.CAMPOS FROM TABELA_A A
> LEFT JOIN TABELA_B B ON(B.CODIGO = A.CODIGO)
> WHERE (B.CAMPO IS NULL)
>
> e
>
> EXPLAIN  SELECT A.CAMPOS FROM TABEL_A A
>
> WHERE (A.CODIGO NOT IN(SELECT CODIGO FROM TABELA_B))
>
> Cordialmente,
>
> Cláudio Leopoldino
> postgresqlbr.blogspot.com/
> =
>   --
>  *De:* Marcelo da Silva 
> *Para:* Comunidade PostgreSQL Brasileira <
> pgbr-geral@listas.postgresql.org.br>
> *Enviadas:* Sexta-feira, 5 de Julho de 2013 14:25
> *Assunto:* [pgbr-geral] Duvida básica LEFT JOIN x NOT IN
>
> Qual seria o mais eficiente ?
>
> SELECT A.CAMPOS FROM TABELA_A A
> LEFT JOIN TABELA_B B ON(B.CODIGO = A.CODIGO)
> WHERE (B.CAMPO IS NULL)
>
> ou
>
> SELECT A.CAMPOS FROM TABEL_A A
> WHERE (A.CODIGO NOT IN(SELECT CODIGO FROM TABELA_B))
>
>
> --
> Marcelo Silva
> 
> Desenvolvedor Delphi / PHP
> My Postgres database
> Cel.: (11) 99693-4251
>
> ___
> pgbr-geral mailing list
> pgbr-geral@listas.postgresql.org.br
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>
>
> ___
> pgbr-geral mailing list
> pgbr-geral@listas.postgresql.org.br
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>
>


-- 
Marcelo Silva

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


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

2013-07-05 Por tôpico Marcelo da Silva
Qual seria o mais eficiente ?

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

ou

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


-- 
Marcelo Silva

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


[pgbr-geral] Validar email

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

-- Function: fvalidaemail(text)

-- DROP FUNCTION fvalidaemail(text);

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


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

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

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

-- 
Marcelo Silva

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


[pgbr-geral] Visualizar imagens do campo Bytea (curiosidade)

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

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

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

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

MinhaQueryCampoImagem.SaveToFile('nomedoarquivo.jpg');


-- 
Marcelo Silva

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


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

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

Servidor: Linux 64bits, Postgres 9.1

Maquina desenvolvimento: Windows 64bits, Postgres 9.1

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

Utilizo o Codepage UTF-8 atualmente


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

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

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

Tudo ocorreu belezinha

Esses são alguns cases que tenho


Marcelo Silva
---
Desenvolvedor Delphi / PHP
Postgres 9.1


Em 27 de junho de 2013 09:47, Jean Domingues escreveu:

> >>> Pessoal,
> >>>
> >>> queria saber se é possível restaurar uma cópia da pasta de dados do
> linux em
> >>> um servidor pg de mesma versão no windows (64 bits nos dois).
> >
> >> bom dia,
> >> negativo, somente um dump, devido o filesystem diferente.
> >> vc nao consegue nem se for de linux para linux, e se a instalação é 64
> e o
> >> destino 32 bits, ou vice versa.
> >
> >A questão não é o sistema de arquivos, mas o sistema operacional mesmo.
> >Os arquivos de dados do PostgreSQL é que ficam diferentes de um S.O. pra
> outro ou de uma arquitetura para outra.
> >Um PostgreSQL num Solaris com ZFS não pode ser copiado para um FreeBSD
> com ZFS, também não funcionará.
> >
>
>
> OK, pessoal. Obrigado a todos pelas respostas.
> ___
> pgbr-geral mailing list
> pgbr-geral@listas.postgresql.org.br
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>



-- 
Marcelo Silva

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


Re: [pgbr-geral] Client Postgres, será possível?

2013-05-22 Por tôpico Marcelo da Silva
É... seria uma opção para que qualquer aplicação feita para o Postgres,
possa encontrar as tais DLLs solicitadas pelo mesmo, só isso.
Sei que eles tem muita coisa a fazer e isso seria "se der" mas fica como
dica, sabe que quanto mais facilitado o uso mais se difunde a ferramenta.
E diga-se de passagem, postgres é muito bom.


Em 22 de maio de 2013 14:48, Euler Taveira  escreveu:

> On 22-05-2013 08:30, Marcelo da Silva wrote:
> > Pessoal, uma coisa que tenho notado é que os desenvolvedores que migram
> > para o Postgres tem dificuldade de rodar um Client por causa das DLLs
> > que devem ir junto.
> > Depois de apanhar um pouco acabei por aprender, mas gostaria de deixar
> > uma sugestão, vai que alguém da lista tem acesso ao pessoal do
> > desenvolvimento.
> >
> Qu fique claro, o grupo de desenvolvimento *não* fornece instaladores;
> somente o código-fonte. Algumas pessoas ligadas a comunidade fornecem os
> instaladores para as distribuições suportadas. É assim com o Debian, o
> Red Hat, o FreeBSD e, também, o Windows. Este último, o instalador é
> produzido pela EnterpriseDB (se você prestar atenção verá que no site da
> comunidade há somente um link para o site da referida empresa). Posso
> sugerir isso a eles (EDB) mas não garanto que isso vá entrar na lista de
> afazeres deles.
>
> Ah, e o que você quer não é uma opção para instalar aplicações cliente
> (por exemplo, psql, pg_dump, pg_restore, pgAdmin, ...) mas instalar
> somente as bibliotecas.
>
>
> --
>Euler Taveira   Timbira - http://www.timbira.com.br/
>PostgreSQL: Consultoria, Desenvolvimento, Suporte 24x7 e Treinamento
> ___
> pgbr-geral mailing list
> pgbr-geral@listas.postgresql.org.br
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>



-- 
Marcelo Silva

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


[pgbr-geral] Client Postgres, será possível?

2013-05-22 Por tôpico Marcelo da Silva
Pessoal, uma coisa que tenho notado é que os desenvolvedores que migram
para o Postgres tem dificuldade de rodar um Client por causa das DLLs que
devem ir junto.
Depois de apanhar um pouco acabei por aprender, mas gostaria de deixar uma
sugestão, vai que alguém da lista tem acesso ao pessoal do desenvolvimento.

No firebird tem a opção de instalação do Client sem o Server, assim ele
instala as dependências para que a aplicação possa rodar sem problemas.

Será que o pessoal do Postgres não poderia fazer isso?

Tem muita gente deixando outras bases no Delphi e migrando para o Postgres,
mas estão tendo dificuldade na instalação em maquinas sem nada do postgres.

Eles até levam as DLLs usadas no desenvolvimento, mas o VisualC++ exige
outras DLLs que só são instaladas com a instalação do Server.

-- 
Marcelo Silva

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


Re: [pgbr-geral] Função para substituir caracteres inválidos (genericamente)

2013-05-13 Por tôpico Marcelo da Silva
Cara Douglas, que caracterada tem aí, rsrsrs

Vai me ser muito útil... muito obrigado.




2013/5/13 Douglas Fabiano Specht 

>
>
>
> Em 10 de maio de 2013 10:37, Dickson S. Guedes escreveu:
>
>> Em Sex, 2013-05-10 às 10:11 -0300, Marcelo da Silva escreveu:
>>
>> [... corte ...]
>>
>> > Será que tem como fazer uma função para percorrer uma String e
>> verificar se
>> > o cada caractere tem compatível com LATIN1 ?
>>
>>
>> Re-inventar a roda? Veja a função 'convert' em [1].
>>
>>
>> http://www.postgresql.org/docs/current/static/functions-string.html
>>
>> --
>> Dickson S. Guedes
>> mail/xmpp: gue...@guedesoft.net - skype: guediz
>> http://guedesoft.net - http://www.postgresql.org.br
>> http://www.rnp.br/keyserver/pks/lookup?search=0x8F3E3C06D428D10A
>>
>> ___
>> pgbr-geral mailing list
>> pgbr-geral@listas.postgresql.org.br
>> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>>
>>
> bom dia,
> segue a que eu utilizo, veja se lhe serve:
>
>  CREATE OR REPLACE FUNCTION retira_acentuacao1(p_texto text)
>   RETURNS text AS
>  $BODY$
>  Select translate($1,
>  
> 'áâãäåaaaÁÂÃÄÅAAAèééêëeEEEÉEEìíîïìiiiÌÍÎÏÌIIIóôõöoooÒÓÔÕÖOOOùúûüÙÚÛÜçÇ<>!@#$%¨*()_+={}[]?;:|*~^´`¨æÆø£Øƒªº¿®½¼ßµþýÝ€§¬©¢¥¤ðÐÞÞ¶
> ',  --no final tem tbm o 144 da tabela ascii
>  
> 'áâãaÁÂÃAèééêeeEEEÉEEìíîiìiiiÌÍÎIÌIIIóôõÒÓÔÕùúûuÙÚÛUcC
>  '
>   );
>  $BODY$
>  LANGUAGE sql VOLATILE
>  COST 100;
>
>
> update cadastro
> set
> endereco=retira_acentuacao1(endereco),
>
>
> --
>
> Douglas Fabiano Specht
>
> ___
> pgbr-geral mailing list
> pgbr-geral@listas.postgresql.org.br
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>
>


-- 
Marcelo Silva

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


Re: [pgbr-geral] Mudar Charset num Select ?

2013-05-10 Por tôpico Marcelo da Silva
A intenção seria o usuário digitar texto puro no formulário, mas eles
copiam e colam do Word por exemplo, aí ferra tudo.

Eu preciso em um select, quando tiver caracter do word ele troque pelo
menos por ??? mas os outros registros que estiverem ok, ele mostre
normalmente.
Ou seja, precisava colocar um IF no select mas não sei como fazer isso.
exemplo:

select
  if (campo com caracter valido) then
 mostra o texto
  else
mostra ???
from tabela


é isso...





Em 10 de maio de 2013 10:48, Jean Domingues escreveu:

> >Pessoal, estou tendo problemas de novo com caracteres
> >Tenho um formulario num site que o usuário pode colar um texto do maldito
> word que enche o arquivo de lixo.
> >Acontece que quando tento abrir esse texto no Delphi, mais precisamente
> num componente ZQuery (suite Zeos) ele grita por causa do tipo de caractere
> usado.
> >Bem no site eu uso UTF-8, mas na aplicação tenho que usar LATIN1, porque
> foi começado assim e não tem como mudar.
> >
> >
> >Bem, mais uma solução paliativa:
> >
> >
> >Tem como mudar o CodePage somente em um select pra ele entender que é
> UTF-8 ?
> >Para não ter que mudar no resto da aplicação.
> >
> >
> >
> >
> >Mais uma vez conto com a ajuda dos colegas
>
>
> Se voce estiver armazenando o rtf inteiro, use bytea. É uma saída.
> ___
> pgbr-geral mailing list
> pgbr-geral@listas.postgresql.org.br
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>



-- 
Marcelo Silva

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


[pgbr-geral] Função para substituir caracteres inválidos (genericamente)

2013-05-10 Por tôpico Marcelo da Silva
Pessoal, na luta contra os CodePage :) estou pensando em criar uma função
para tratamento de caracteres, acontece que pra eu ficar caçando esses
caracteres não será tarefa fácil.
Estava pensando em algo do tipo:

funcao fRemoveChar(S = String)
inicio
  For conta caracteres no texto
  Se caracter invalido
 remove (ou substitui por ?)
  Devolve String limpa
fim

Para isso estava pensando em um TRY onde, se houver erro na conversão do
caractere
por exemplo de UFT8 para LATIN1 ele muda o danado

Será que tem como fazer uma função para percorrer uma String e verificar se
o cada caractere tem compatível com LATIN1 ?


Poderiam me dar um exemplo ?
algo do tipo

select LATIN1("?")

Onde ? é o caractere UTF8

Espero ter sido claro


-- 
Marcelo Silva

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


Re: [pgbr-geral] Mudar Charset num Select ?

2013-05-10 Por tôpico Marcelo da Silva
rsrsr, bom


Em 10 de maio de 2013 09:46, Flavio Henrique Araque Gurgel <
fla...@4linux.com.br> escreveu:

> Evite o top-posting.
>
> Em 10-05-2013 09:26, Marcelo da Silva escreveu:
>
>  Opa... é de flash agora ? rsrsrs
>>
>
> Talvez o "The Flash"?
> Não, só acordei cedo demais hoje.
>
>
>  Diga uma coisa, nesse caso, ele não irá mudar o CodePage da aplicação
>> toda não né ? (senão vou ter problemas)
>>
>
> Não.
> Quando você usa SET sem mais nada ele é efêmero e a configuração irá ser
> desfeita quando a conexão terminar.
>
>
> []s
>
> __**
> Flavio Henrique A. Gurgel
> Líder de Projetos Especiais
> Consultoria, Projetos & Treinamentos 4LINUX
> Tel1: +55-11.2125-4747 ou 2125-4748
> www.4linux.com.br
> email: fla...@4linux.com.br
> __
> FREE SOFTWARE SOLUTIONS
> __**_
> pgbr-geral mailing list
> pgbr-geral@listas.postgresql.**org.br
> https://listas.postgresql.org.**br/cgi-bin/mailman/listinfo/**pgbr-geral<https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral>
>



-- 
Marcelo Silva

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


Re: [pgbr-geral] Mudar Charset num Select ?

2013-05-10 Por tôpico Marcelo da Silva
Opa... é de flash agora ? rsrsrs

Diga uma coisa, nesse caso, ele não irá mudar o CodePage da aplicação toda
não né ? (senão vou ter problemas)


Em 10 de maio de 2013 09:23, Flavio Henrique Araque Gurgel <
fla...@4linux.com.br> escreveu:

>
> Em 10-05-2013 09:22, Marcelo da Silva escreveu:
>
>  Pessoal, estou tendo problemas de novo com caracteres
>> Tenho um formulario num site que o usuário pode colar um texto do
>> maldito word que enche o arquivo de lixo.
>> Acontece que quando tento abrir esse texto no Delphi, mais precisamente
>> num componente ZQuery (suite Zeos) ele grita por causa do tipo de
>> caractere usado.
>> Bem no site eu uso UTF-8, mas na aplicação tenho que usar LATIN1, porque
>> foi começado assim e não tem como mudar.
>>
>> Bem, mais uma solução paliativa:
>>
>> Tem como mudar o CodePage somente em um select pra ele entender que é
>> UTF-8 ?
>> Para não ter que mudar no resto da aplicação.
>>
>
> BEGIN;
> SET client_encoding = 'UTF8';
> SELECT...;
> COMMIT;
>
> []s
> __**
> Flavio Henrique A. Gurgel
> Líder de Projetos Especiais
> Consultoria, Projetos & Treinamentos 4LINUX
> Tel1: +55-11.2125-4747 ou 2125-4748
> www.4linux.com.br
> email: fla...@4linux.com.br
> __
> FREE SOFTWARE SOLUTIONS
> __**_
> pgbr-geral mailing list
> pgbr-geral@listas.postgresql.**org.br
> https://listas.postgresql.org.**br/cgi-bin/mailman/listinfo/**pgbr-geral<https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral>
>



-- 
Marcelo Silva

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


[pgbr-geral] Mudar Charset num Select ?

2013-05-10 Por tôpico Marcelo da Silva
Pessoal, estou tendo problemas de novo com caracteres
Tenho um formulario num site que o usuário pode colar um texto do maldito
word que enche o arquivo de lixo.
Acontece que quando tento abrir esse texto no Delphi, mais precisamente num
componente ZQuery (suite Zeos) ele grita por causa do tipo de caractere
usado.
Bem no site eu uso UTF-8, mas na aplicação tenho que usar LATIN1, porque
foi começado assim e não tem como mudar.

Bem, mais uma solução paliativa:

Tem como mudar o CodePage somente em um select pra ele entender que é UTF-8
?
Para não ter que mudar no resto da aplicação.


Mais uma vez conto com a ajuda dos colegas

-- 
Marcelo Silva

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


Re: [pgbr-geral] Cliente Postgres no XP (32bits)

2013-05-03 Por tôpico Marcelo da Silva
Se pelo menos ele desse erro de que falta tal dll (ou dependencias), mas
ele simplesmente da uma erro sem pé nem cabeça :)

Bom saber


Em 3 de maio de 2013 13:15, Juliano Benvenuto Piovezan <
juli...@sinersoft.com.br> escreveu:

> 2013/5/3 Marcelo da Silva :
> > Acontece que só colocando as DLLs ele não foi de jeito nenhum.
> > Instalando o Postgres (só pra teste) na maquina minha aplicação
> funcionou.
> > Estranho, mas isso que aconteceu.
> > Pode ser que a instalação do Postgres corrija alguma coisa no registro do
> > windowsXP, porque mesmo desinstalando o postgres (servidor) minha
> aplicação
> > continua funcionando.
> > Se o problema era as DLLs, conforme retirei o postgres minha aplicação
> > deveria parar de funcionar, mas não.
>
> O que acontece é que o postgres é compilado com o Microsoft Visual
> Studio, o que adiciona a dependência do MSVC RTL. Quando você instala
> o servidor, o mesmo já faz a instalação desta dependência, não a
> removendo após a desinstalação, por isso o cliente continua rodando.
> Você tem duas opções: instalar o pacote fornecido pela Microsoft [1],
> ou compilar a lib utilizando o MinGW [2]. No meu caso, eu optei pela
> segunda opção.
>
> [1] http://www.microsoft.com/en-us/download/details.aspx?id=3387
> [2]
> https://pgolub.wordpress.com/2008/12/15/building-postgresql-client-library-using-mingw-under-winxp-sp3/
> ___
> pgbr-geral mailing list
> pgbr-geral@listas.postgresql.org.br
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>



-- 
Marcelo Silva

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


Re: [pgbr-geral] Cliente Postgres no XP (32bits)

2013-05-03 Por tôpico Marcelo da Silva
rsrsrsr... eee Osvaldo, mas sabe como são as necessidades né, rsrsrs

Preciso rodar minha plicação em máquinas WinXP

Acontece que só colocando as DLLs ele não foi de jeito nenhum.
Instalando o Postgres (só pra teste) na maquina minha aplicação funcionou.
Estranho, mas isso que aconteceu.
Pode ser que a instalação do Postgres corrija alguma coisa no registro do
windowsXP, porque mesmo desinstalando o postgres (servidor) minha aplicação
continua funcionando.
Se o problema era as DLLs, conforme retirei o postgres minha aplicação
deveria parar de funcionar, mas não.

Ou seja coisa de windows mesmo, te entendo perfeitamente


Marcelo Silva
--


Em 3 de maio de 2013 12:24, Osvaldo Kussama escreveu:

> Em 03/05/13, Marcelo da Silva escreveu:
> > O pior Danilo é que acabei de fazer outro teste, instalei o postgres na
> > maldita xp e funcionou, pra tirar a prova desinstalei o postgres e minha
> > aplicação continua funcionando... removi a pasta do postgres que fica em
> > arquivo de programas e continua funcionando, fui na pasta System32 e não
> > existem DLLs do postgres ali... da pra entender ?
> > Só se o postgres corrigiu alguma chave no registro do windows.
> >
> > Bem, vou ter que fazer esse procedimento nas maquinas com XP
> >
> > Instalar o postgres
> > Pegar as DLLs
> > Testar minha aplicação
> > Desinstalar o postgres
> >
> > O que importa é que funcionou (mas muito sinistro :))
> >
>
> O que eu não consegui entender é o que vai rodar em sua máquina XP.
> Uma aplicação cliente ou o servidor PostgreSQL.
> Se for o servidor eu não consigo entender como pode continuar rodando
> após você desinstalar. Se for uma aplicação cliente então realmente
> não precisa do servidor, você apenas precisa se conectar com o
> servidor.
>
> Agora sobre esta tal de DLL desculpe-me mas MS-Windows não é minha praia.
>
> Osvaldo
> ___
> pgbr-geral mailing list
> pgbr-geral@listas.postgresql.org.br
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>



-- 
Marcelo Silva

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


Re: [pgbr-geral] Cliente Postgres no XP (32bits)

2013-05-03 Por tôpico Marcelo da Silva
O pior Danilo é que acabei de fazer outro teste, instalei o postgres na
maldita xp e funcionou, pra tirar a prova desinstalei o postgres e minha
aplicação continua funcionando... removi a pasta do postgres que fica em
arquivo de programas e continua funcionando, fui na pasta System32 e não
existem DLLs do postgres ali... da pra entender ?
Só se o postgres corrigiu alguma chave no registro do windows.

Bem, vou ter que fazer esse procedimento nas maquinas com XP

Instalar o postgres
Pegar as DLLs
Testar minha aplicação
Desinstalar o postgres

O que importa é que funcionou (mas muito sinistro :))


Marcelo Silva
-


Em 3 de maio de 2013 12:04, Danilo Silva escreveu:

>
>
> Em 3 de maio de 2013 11:57, Marcelo da Silva  escreveu:
>
> Erros muito estranhos, uns dias atras coloquei meus sistema em maquina XP
>> somente levando comigo as dlls.
>> Hoje estou tentando fazer o mesmo esquema, mas sem chance, ele dá um erro
>> do windows e não vai... pior que é aquele erro inespecífico do windows que
>> não ajuda em nada...
>> Bem, pra tirar a duvida resolvi baixar e instalar o postgres na maquina
>> com XP pra ver se subia... e subiu... então minha aplicação também
>> funcionou...
>> Então peguei as DLLs desse bendito XP e coloquei em outra maquina XP,
>> denovo não funcionou... caraca... será que vou ter que instalar o Postgres
>> em todas as maquinas XP ?
>> Existe uma versão Cliente postgres onde instala e registra somente as
>> DLLs clientes ?
>>
>>
>>
> Verifique sua libpq, normalmente quando eu utilizava windows, eu colocava
> a libpq dentro da pasta system32.
>
> []s
> Danilo
>
>
> ___
> pgbr-geral mailing list
> pgbr-geral@listas.postgresql.org.br
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>
>


-- 
Marcelo Silva

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


[pgbr-geral] Cliente Postgres no XP (32bits)

2013-05-03 Por tôpico Marcelo da Silva
Erros muito estranhos, uns dias atras coloquei meus sistema em maquina XP
somente levando comigo as dlls.
Hoje estou tentando fazer o mesmo esquema, mas sem chance, ele dá um erro
do windows e não vai... pior que é aquele erro inespecífico do windows que
não ajuda em nada...
Bem, pra tirar a duvida resolvi baixar e instalar o postgres na maquina com
XP pra ver se subia... e subiu... então minha aplicação também funcionou...
Então peguei as DLLs desse bendito XP e coloquei em outra maquina XP,
denovo não funcionou... caraca... será que vou ter que instalar o Postgres
em todas as maquinas XP ?
Existe uma versão Cliente postgres onde instala e registra somente as DLLs
clientes ?



-- 
Marcelo Silva

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


Re: [pgbr-geral] Curiosidade - ForeignKey

2013-04-26 Por tôpico Marcelo da Silva
Em 26 de abril de 2013 10:28, Osvaldo Kussama
escreveu:

> Em 26/04/13, Marcelo da Silva escreveu:
> >
> > Então podemos ter N para N quando for FKs (sem unique), entendi...
> > Minha duvida surgiu porque eu tentei criar uma FK referenciando para um
> > Campo PK de outra tabela e ele me forçou a colocar NotNull no campo B
> >
> > Vivendo e aprendendo :)
> >
> > Mas no meu caso vou ter que fazer uns malabarismos pois o CampoA é uma
> PKey
> >
>
>
> Não, você entendeu errado.
> Você só pode ter (1:N) ou (0:N). Para ter (N:N) você precisa ter uma
> tabela auxiliar com dois (1:N).
>
> Veja:
>
> http://www.postgresql.org/docs/current/interactive/ddl-constraints.html#DDL-CONSTRAINTS-FK
>
> Osvaldo
> ___
> pgbr-geral mailing list
> pgbr-geral@listas.postgresql.org.br
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>

eita rsrssr

-- 
Marcelo Silva

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


Re: [pgbr-geral] Curiosidade - ForeignKey

2013-04-26 Por tôpico Marcelo da Silva
Em 26 de abril de 2013 10:02, José Neto Nogueira escreveu:

> Marcelo, para ficar mais facil, supondo que a tabelaA fosse tabelaProduto
> e a tabelaB fosse tabelaNotaFiscal, por exemplo, dado que para cada produto
> eu tenho um codigo que faz parte da PK (chave primaria) eu
> poderia ter varias repetições deste valor na tabela de nota fiscal na
> coluna FK que referencia essa PK desde que essa coluna não tivesse outra
> restrição, como ser UK (uniqqe key), mesmo que essa coluna da FK tenha
> restrição de NULL você poderia deixar vários nulos ou várias notas fiscais
> vendendo o mesmo produto, logo repetiria a FK. Isso é permitido pois não
> sendo PK ou UK pode repetir.
>
>
> 2013/4/26 Marcelo da Silva 
>
>> Então Danilo, FKs no meu modo de entender não que deva ter valores
>> únicos, mas a TabelaA de referencia devem sim ter valores únicos,
>>  mas na TabelaB podem ser N valores, é o velho 1(A) para N(B)
>>
>> TabelaA->Codigo
>> 1
>> 2
>> 3
>> 4
>>
>> TabelaB->Codigo (FK para TabelaA)
>> 1
>> 1
>> 1
>> 2
>> 2
>> 2
>> 3
>> 3
>> 3
>> ...
>>
>> Veja que os valores da TabelaB estão contidos na TabelaA e o FK me parece
>> que exige isso.
>> A duvida é se a TabelaB poderia estar ou não na TabelaA, mas quando
>> estiver deve ter o valor idêntico.
>> Pelo que vejo isso só é possível por Functions como você citou.
>>
>>
>>
>>
>> Em 26 de abril de 2013 09:34, Danilo Silva 
>> escreveu:
>>
>>>
>>>
>>>
>>> Em 26 de abril de 2013 09:02, Marcelo da Silva escreveu:
>>>
>>> Sei que ao criamos uma FK o campo lincado devem ter o mesmo conteúdo nas
>>>> tabelas A e B
>>>>
>>>> Exemplo:
>>>> TabelaA->Codigo = 123
>>>> TabelaB->Codigo = 123 FK->TabelaA
>>>>
>>>> Tenho a seguinte duvida:
>>>>
>>>> TabelaB->Codigo pode ser
>>>> 0
>>>> 123
>>>> 0
>>>> 456
>>>> etc
>>>>
>>>> Queria saber se existe uma FK que diga que quando o valor de B for > 0
>>>> ele esteja na tabela A, senão ele permite que seja 0 (somente)
>>>>
>>>> Isso existe, ou só por Triggers / Procedures ?
>>>>
>>>> Até onde eu conheço por FKs, o campo referenciado deve possuir  valores
>>> únicos. Creio que para seu caso deverás criar uma function que faça essa
>>> verificação.
>>>
>>> []s
>>> Danilo
>>>
>>>
>>> ___
>>> pgbr-geral mailing list
>>> pgbr-geral@listas.postgresql.org.br
>>> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>>>
>>>
>>
>>
>> --
>> Marcelo Silva
>> 
>> Desenvolvedor Delphi / PHP
>> My Postgres database
>> Cel.: (11) 99693-4251
>>
>> ___
>> pgbr-geral mailing list
>> pgbr-geral@listas.postgresql.org.br
>> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>>
>>
>
> ___
> pgbr-geral mailing list
> pgbr-geral@listas.postgresql.org.br
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>
>

Então podemos ter N para N quando for FKs (sem unique), entendi...
Minha duvida surgiu porque eu tentei criar uma FK referenciando para um
Campo PK de outra tabela e ele me forçou a colocar NotNull no campo B

Vivendo e aprendendo :)

Mas no meu caso vou ter que fazer uns malabarismos pois o CampoA é uma PKey


-- 
Marcelo Silva

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


Re: [pgbr-geral] Curiosidade - ForeignKey

2013-04-26 Por tôpico Marcelo da Silva
Então Danilo, FKs no meu modo de entender não que deva ter valores únicos,
mas a TabelaA de referencia devem sim ter valores únicos,
 mas na TabelaB podem ser N valores, é o velho 1(A) para N(B)

TabelaA->Codigo
1
2
3
4

TabelaB->Codigo (FK para TabelaA)
1
1
1
2
2
2
3
3
3
...

Veja que os valores da TabelaB estão contidos na TabelaA e o FK me parece
que exige isso.
A duvida é se a TabelaB poderia estar ou não na TabelaA, mas quando estiver
deve ter o valor idêntico.
Pelo que vejo isso só é possível por Functions como você citou.




Em 26 de abril de 2013 09:34, Danilo Silva escreveu:

>
>
>
> Em 26 de abril de 2013 09:02, Marcelo da Silva escreveu:
>
> Sei que ao criamos uma FK o campo lincado devem ter o mesmo conteúdo nas
>> tabelas A e B
>>
>> Exemplo:
>> TabelaA->Codigo = 123
>> TabelaB->Codigo = 123 FK->TabelaA
>>
>> Tenho a seguinte duvida:
>>
>> TabelaB->Codigo pode ser
>> 0
>> 123
>> 0
>> 456
>> etc
>>
>> Queria saber se existe uma FK que diga que quando o valor de B for > 0
>> ele esteja na tabela A, senão ele permite que seja 0 (somente)
>>
>> Isso existe, ou só por Triggers / Procedures ?
>>
>> Até onde eu conheço por FKs, o campo referenciado deve possuir  valores
> únicos. Creio que para seu caso deverás criar uma function que faça essa
> verificação.
>
> []s
> Danilo
>
>
> ___
> pgbr-geral mailing list
> pgbr-geral@listas.postgresql.org.br
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>
>


-- 
Marcelo Silva

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


Re: [pgbr-geral] Stored Procedure.

2013-04-26 Por tôpico Marcelo da Silva
Sobre o TopPost, no IG (email), ele sempre abre a resposta abaixo to
conteudo, mas ao enviar ele mostra acima.
Como voces fazem editam o conteudo existente abrindo linhas a cada
sub-tópico ?
Qual cliente de email voces usam ?


Em 26 de abril de 2013 08:02, izaque Maciel escreveu:

> Bem, eu não irei retornar o valor somente de uma variável, mas de todo um
> select, no caso o último select da procedure, que há campos varchar e
> numerics. A partir do retorno desta procedure atual, criarei outra que
> receberá os valores desta. Como que fica, o "SETOF" e "return next" como já
> mencionado anteriormente pelo colega Jean?
> Obrigado.
>
>
> Em 25 de abril de 2013 22:52, Danilo Silva 
> escreveu:
>
>> 2013/4/25 izaque Maciel 
>>
>>> Certo, mas pode me dar um exemplo, de como ficaria isso?
>>>
>>
>> Pessoal cuidado com o top-posting.
>>
>> Respondendo a pergunta, se você irá retornar apenas o valor de uma
>> variável, na assinatura da função utilize apenas "RETURNS numeric", ou
>> seja, retire o "SETOF". Mas lembre-se o tipo da variável deve ser do mesmo
>> tipo do RETURNS.
>>
>> []s
>> Danilo
>>
>>>
>>>
>>> Em 25 de abril de 2013 08:54, Jean Domingues 
>>> escreveu:
>>>
>>> Mas vc esta retornando um record onde deveria retornar numeric. E, se
 for set of, retorne com return next (varios registros), senao, nao use
 setof, use apenas numeric no tipo do retorno.

   --
  *De:* izaque Maciel 
 *Para:* Comunidade PostgreSQL Brasileira <
 pgbr-geral@listas.postgresql.org.br>
 *Enviadas:* Quinta-feira, 25 de Abril de 2013 8:11
 *Assunto:* [pgbr-geral] Stored Procedure.

 Bom dia pessoal, não consegui concluir esta procedure pela questão do
 retorno, que tem que me retornar todos os campos do "último select" abaixo,
 e com o retorno deste último select, criarei outra stored procedure para
 pegar o retorno dessa e trabalharei alguns cálculos. Peço a ajuda de vocês,
 obrigado.


 CREATE OR REPLACE FUNCTION public.retorna_valores_go (
   id_emolumento numeric(12,2),
   dt_calculo_emol date,
   valor_documento numeric(12,2)
 )
 RETURNS SETOF numeric AS
 $body$
 DECLARE

   vidEmolumento numeric(12,2);
   vidVigencia numeric(12,2);
   vidEmolItens numeric(12,2);
   regEmolItens record;
 BEGIN

   -- Verifica se existe o emolumento
   select e.id into vidEmolumento
   from emolumentos e
   where e.id = id_emolumento;

   -- Se encontrado, localiza a vigência
   if (videmolumento is not null) then
   begin
   select v.id into vidvigencia
 from vigencia v
 where dt_calculo_emol between v.dt_inicial and v.dt_final;

 -- Se econtrada a vigência, localiza o emolumento pelo valor
 if (vidvigencia is not null) then
   select e.id into videmolitens
   from emolumentos_itens e
   where valor_documento between e.fx_valor_final and
 e.fx_valor_final;
 end if;

 -- Se foi localizado o emolumento
 if (videmolitens is not null) then
   select e.id into videmolitens
   from emolumentos_itens e
where e.id_emolumentos  = videmolumento and
 e.id_vigencia = vidvigencia and
 e.fx_valor_inicial = 0 and
 e.fx_valor_final   = 0;
 end if;

 if (videmolitens is not null) then
 begin
   select e.id,
  e.id_emolumentos,
  e.fx_valor_inicial,
  e.fx_valor_final,
  e.valor_emolumento,
  e.tx_jud,
  e.fundesp,
  e.valor2,
  e.valor3,
  e.valor4,
  e.valor5,
  e.outras_despesas,
  e.pag_extra_inicio,
  e.valor_pag_extra,
  e.fundo_pag_extra,
  e.tx_jud_pag_extra,
  e.cod_tab_correg,
  e.cod_interno,
  e.calc_txjud,
  e.calc_fundesp,
  e.calc_valor2,
  e.calc_valor3,
  e.calc_valor4,
  e.calc_valor5,
  e.calc_pagina_extra into regEmolItens
   from emolumentos_itens e
   where valor_documento between e.fx_valor_final and
 e.fx_valor_final;

   return regEmolItens;
 end;
 end if;
   end;
   end if;


 END
 $body$
 LANGUAGE 'plpgsql'
 VOLATILE
 CALLED ON NULL INPUT
 SECURITY INVOKER
 COST 100;

 ___
 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.pos

[pgbr-geral] Curiosidade - ForeignKey

2013-04-26 Por tôpico Marcelo da Silva
Sei que ao criamos uma FK o campo lincado devem ter o mesmo conteúdo nas
tabelas A e B

Exemplo:
TabelaA->Codigo = 123
TabelaB->Codigo = 123 FK->TabelaA

Tenho a seguinte duvida:

TabelaB->Codigo pode ser
0
123
0
456
etc

Queria saber se existe uma FK que diga que quando o valor de B for > 0 ele
esteja na tabela A, senão ele permite que seja 0 (somente)

Isso existe, ou só por Triggers / Procedures ?



-- 
Marcelo Silva

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


Re: [pgbr-geral] Alterar dados de varias tabelas ao "mesmo tempo"

2013-04-23 Por tôpico Marcelo da Silva
Em 23 de abril de 2013 13:27, Flavio Henrique Araque Gurgel <
fla...@4linux.com.br> escreveu:

>
> Em 23-04-2013 13:25, Marcelo da Silva escreveu:
>
>  Bem, não é exatamente ao mesmo tempo, mas a ideia é a seguinte:
>>
>> No banco existem N tabelas com o campo "cod_id"
>>
>> Eu gostaria de fazer um update em todas as tabelas que possuem este
>> cod_id par um mesmo numero, exemplo:
>>
>> update tabelaA set cod_id = X where cod_id = Y
>> update tabelaB set cod_id = X where cod_id = Y
>> update tabelaC set cod_id = X where cod_id = Y
>> Etc
>>
>> Pra eu fazer isso tenho que ver todas as tabelas que tem este campo numa
>> base de 200 tabelas pra depois fazer o Update em cada tabela.
>>
>> Será que podemos agilizar este processo com um update e where numa
>> tabela do sistema ?
>>
>
> Não.
> Mas você pode fazer um script que lê as tabelas existentes e "monta" os
> UPDATEs pra você.
> Tudo depende de quantas vezes você terá que fazer isso.
>
> Pergunto: os campos cod_id tem o mesmo significado e são relacionados?
> Por que se forem, você deve relacioná-los com uma chave estrangeira a uma
> tabela que os contém como chave primária. Utilizando "ON UPDATE CASCADE",
> você faz o UPDATE só uma vez na tabela referenciada e todas as outras serão
> atualizadas automaticamente.
>
>
>
Pois é Flavio, até pensei num ForeignKey mas não fiz isso no começo, agora
pra parar tudo e linkar esses campos não será nada facil.
Vou ter que criar um while no sistema pra ler essas tabelas e automatizar
essa alteração.
Tenho que fazer isso porque alguns usuários cadastraram uma mesma empresa
varias vezes com CPNJs diferentes (porque o cliente insistiu pra deixar o
sistema aberto no inicio, sabe como é né)... agora tenho que solucionar o
problema. Mas faz parte :)

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


[pgbr-geral] Alterar dados de varias tabelas ao "mesmo tempo"

2013-04-23 Por tôpico Marcelo da Silva
Bem, não é exatamente ao mesmo tempo, mas a ideia é a seguinte:

No banco existem N tabelas com o campo "cod_id"

Eu gostaria de fazer um update em todas as tabelas que possuem este cod_id
par um mesmo numero, exemplo:

update tabelaA set cod_id = X where cod_id = Y
update tabelaB set cod_id = X where cod_id = Y
update tabelaC set cod_id = X where cod_id = Y
Etc

Pra eu fazer isso tenho que ver todas as tabelas que tem este campo numa
base de 200 tabelas pra depois fazer o Update em cada tabela.

Será que podemos agilizar este processo com um update e where numa tabela
do sistema ?

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


[pgbr-geral] Tipo de isolamento numa transação

2013-04-16 Por tôpico Marcelo da Silva
Pessoal esses dias postei um problema que estou tendo com o travamento
"persistente" de registros. (por hora resolvido)
Lendo essa materia
http://www.activedelphi.com.br/forum/viewtopic.php?t=33645  vejo as
diferenças que o componente ZEOS que uso para minhas aplicações tem.
Bem hoje o mais adequado pra mim, já que preciso das informações mais
atuais possível (mas não lixo) é o "tiReadCommitted", mas como citado por
um colega da lista meu servidor está com muitos " intransaction",
bem, mudando para "tiNone" ele acaba como esse comportamento e
possivelmente irá melhorar meus travamentos, mas ficou na cuca, como o
banco ou aplicação vai se comportar no caso de deixar "tiNone"? (já que no
site dão diz claramente).
Eu dou refresh em minhas querys sempre que possível e que preciso de
informações atualizadas, neste caso (com tiNone) será que ele vai me trazer
as alterações mais recentes ?
Em um teste simples (a mesma aplicação), mas com duas conexões distintas e
com "tiNone" me parece que ele traz as ultimas atualizações do registro,
mas estou na dúvida se ao ter N usuários ele vai considerar o ultimo commit
ou ele poderá me dar um registro (versão) que não seja exatamente a ultima
alteração.
Como o Postgres se comporta por padrão?
Me parece que em alguns bancos existe o "Garbage Collection", meu receio é
ele me dar os dados desse garbage e este pode não ser a versão mais atual
do registro.

O colegas poderiam opnar sobre o assunto, por favor?


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


Re: [pgbr-geral] Registro tava e pronto

2013-04-12 Por tôpico Marcelo da Silva
Com toda humildade possivel :)

Não vejo como, no meu caso que preciso de transações concorrentes (tempo
real), abrir e fechar as transações sem um malabarismo excepcional.
Por exemplo, meu cadastro de clientes se o usuário abre, não posso abrir
pegar X registros e fechar a transação, eu trabalho com componentes DBWare
(conexão direta com a tabela), eu tenho um controle manual por assim dizer,
quando um registro está em uso e outro tenta abri-lo o sistema não deixa...
funciona de boa.
 O Financeiro tem que ver uma venda que acabou de ser efetivada e dar o
aval, se não retorna ao vendedor e por ai vai... é bem dinâmico mesmo, é
atendimento ao público (balcão).
Esse meu problema não acontece toda hora, é bem exporádico, mas quando
acontece me dá esse transtorno.
Na minha aplicação enquanto um formulario está aberto tenho que manter a
transação aberta senão ele limpa as informações.

Quanto a terminar somente o processo do tal registro eu consigo fazer isso
pelo pgadmin mas ele trava o registro mesmo sem a conexão, isso que estou
achando estranho.

Eu pedi pra todos sairem, vi que não havia mais conexão, só a minha, então
tentei alterar o tal registro, mas não foi, ele só liberou depois que
restartei o postgres.

Só a título de comparação, quando usava o MySQL nesse mesmo conceito que
trabalho não ocorria isso, um colega disse aqui na lista que o modo do
MySQL trabalhar é diferente, é tipo um espelho, tanto é que posso alterar
uma tabela colocando ou inserindo novos campos que ele não grita. No
postgres já vi que isso não é possível, mas compreendo que são arquiteturas
diferentes.
Só preciso compreender melhor o postgres pra lidar com essas situações

A ajuda dos colegas aqui tem me ajudado muito, mais uma vez agradeço!


Marcelo Silva
---


Em 12 de abril de 2013 16:15, Marcone  escreveu:

> Em 12 de abril de 2013 15:58, Marcelo da Silva 
> escreveu:
> > Veja a tela do PGAdmin
> >
> > http://imagebin.org/253758
>
> A imagem tá chei de " in transaction"... cara isso só dá dor de
> cabeça como essa que você tá tendo agora.
>
> > Quando ele trava eu só consigo parar a sessão pelo PGAdmin nesta tela aí,
> > mas se eu tentar alterar o registro seja pelo pgadmin ou pela minha
> > aplicação ele trava denovo, ou seja, tenho que mandar todo mundo sair do
> > sistema, reiniciar o postgres pra ele liberar o tal registro.
>
> Se você tá com moral de mandar todo mundo sair do sistema no meio do
> expediente para reiniciar o banco, é bom você canalizar isso para ser
> feita uma alteração urgente nessa aplicação para ela começar a
> terminar as transações (commit ou rollback)!!
>
> > Tenho notado que isso ocorre quando dá uma queda de conexão, mas não
> > necessariamente trava um registro, mas quando trava é este transtorno.
> > Bem, as maquinas com cabo fisico é tranquilo, não dá problema pois não
> cai,
> > mas as com wireless sempre me causam isso.
> >
> > Como liberar o tal registro pra não ter que parar todos, tem um esquema ?
>
> Um solução sintomática e paliativa seria você terminar o processo do
> postgres que está causando o lock com a função pg_terminate_backend[1]
> - USE COM EXTREMA CAUTELA para não matar quem não tem culpa!
>
> > Se desse pra eu fazer algo pela aplicação que travou o registro eu daria
> um
> > Rollback e beleza, mas ele chega a perder a conexão, aí já era.
> >
> > To na luta pra achar uma solução amigável...
> >
> >
> > Marcelo Silva
> > ---
>
>
>
> 1 - http://www.postgresql.org/docs/9.2/static/functions-admin.html
>
>
> --
> Marcone Peres - DBA
> http://www.linkedin.com/in/marconeperes
> oraculogeo.blogspot.com
> @marconeperes
> (61) 8146-0028
> ___
> pgbr-geral mailing list
> pgbr-geral@listas.postgresql.org.br
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Registro tava e pronto

2013-04-12 Por tôpico Marcelo da Silva
Veja a tela do PGAdmin

http://imagebin.org/253758

Quando ele trava eu só consigo parar a sessão pelo PGAdmin nesta tela aí,
mas se eu tentar alterar o registro seja pelo pgadmin ou pela minha
aplicação ele trava denovo, ou seja, tenho que mandar todo mundo sair do
sistema, reiniciar o postgres pra ele liberar o tal registro.
Tenho notado que isso ocorre quando dá uma queda de conexão, mas não
necessariamente trava um registro, mas quando trava é este transtorno.
Bem, as maquinas com cabo fisico é tranquilo, não dá problema pois não cai,
mas as com wireless sempre me causam isso.

Como liberar o tal registro pra não ter que parar todos, tem um esquema ?

Se desse pra eu fazer algo pela aplicação que travou o registro eu daria um
Rollback e beleza, mas ele chega a perder a conexão, aí já era.

To na luta pra achar uma solução amigável...


Marcelo Silva
---


Em 12 de abril de 2013 15:44, Marcone  escreveu:

> Em 12 de abril de 2013 15:25, Marcelo da Silva 
> escreveu:
> > Pessoal, tem hora que um registro trava e quem diz que consigo fazer algo
> > nele
>
> Pouca informação...
>
> > Eu não uso Lock em nada
>
> Não usar locks não significa que um registro nunca será "lockado".
>
> > As vezes por uma queda de rede, sei lá
> > Só sei que um tal registro tarava e não consigo deletar, update, só
> select
> >
> > COmo destravar nessa situação ?
> >
> > Eu estou tendo que reiniciar o postgres pra conseguir dar um update no
> > registro
> >
>
> Quando isso acontecer, verifique se existem alguma transação aberta na
> view pg_stat_activity[1].
>
> Geralmente, nesses casos, na coluna current_query aparece a indicação
> "in transaction".
>
> Possivelmente (com certeza) devido ao fato de uma aplicação ter
> iniciado uma transação e não ter finalizado a mesma.
>
> 1 - http://www.postgresql.org/docs/9.2/static/monitoring-stats.html
>
> --
> Marcone Peres - DBA
> http://www.linkedin.com/in/marconeperes
> oraculogeo.blogspot.com
> @marconeperes
> (61) 8146-0028
> ___
> pgbr-geral mailing list
> pgbr-geral@listas.postgresql.org.br
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


[pgbr-geral] Registro tava e pronto

2013-04-12 Por tôpico Marcelo da Silva
Pessoal, tem hora que um registro trava e quem diz que consigo fazer algo
nele
Eu não uso Lock em nada

As vezes por uma queda de rede, sei lá
Só sei que um tal registro tarava e não consigo deletar, update, só select

COmo destravar nessa situação ?

Eu estou tendo que reiniciar o postgres pra conseguir dar um update no
registro


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


Re: [pgbr-geral] Update dentro de função

2013-04-08 Por tôpico Marcelo da Silva
*select teste(); *
*
*
*Teria que ter os valores para A e B, não é isso ?*
*
*
*Marcelo Silva*
*---*


Em 8 de abril de 2013 16:52, Bruno Moreno  escreveu:

> Caros, possuo uma função que está compilando e executando sem erros.
> Dentro dela tem um comando UPDATE. Após executada, a função acaba por não
> realizar nenhuma alteração nos meus dados.
>
> Acredito que o erro esteja quando chamo o UPDATE pelo fato de que com uma
> função simples como a que consta abaixo, também não tenho o resultado
> esperado.
>
> Não consegui identificar este erro simples, alguém pode me ajudar?
>
> Muito obrigado.
>
> *create table x (a integer, b integer)*
> *insert into x values (1,2);*
> *insert into x values (1,3);*
> *
> *
> *CREATE OR REPLACE FUNCTION teste()*
> *RETURNS VOID AS $$*
> *  DECLARE*
> *delta INTEGER;*
> *  BEGIN *
> * delta := -9;*
> * EXECUTE 'UPDATE x SET a = 1 WHERE b = 2';*
> *  END;*
> *$$ LANGUAGE plpgsql;*
> *
> *
> *select teste();*
> *select * from x*
>
> Bruno Neiva Moreno
> http://brunomoreno.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


Re: [pgbr-geral] Função para concatenar resultados

2013-04-08 Por tôpico Marcelo da Silva
É desculpa, é 9.x

Putz, mais essa... "string_agg" que beleza...

Esse postgres me surpreende a cada dia

Marcelo Silva
--


Em 8 de abril de 2013 10:10, Marcone  escreveu:

> 2013/4/8 Marcelo da Silva :
> > Pessoal estou tentando concatenar numa string o resultado de um select:
> >
> > email1, email2, email3, etc
> >
> > Sei pouca coisa em termos de funções em Postgres, criei a função abaixo
> pra
> > isso.
> > Mas está faltando o principal que é concatenar, vejam:
> >
> > CREATE OR REPLACE FUNCTION femailsclientes(integer)
> >   RETURNS character varying AS
> > $BODY$
> >   declare
> > result character varying;
> > begin
> >
> > for result in select distinct email from mv_clientes_emails where
> > (cod_id = $1)
> > loop
> >   result = result || ',' || result;
> > end loop;
> >   return result;
> >
> > end;
> > $BODY$
> >   LANGUAGE plpgsql VOLATILE
> >   COST 100;
> > ALTER FUNCTION femailsclientes(integer)
> >   OWNER TO postgres;
>
>
> Marcelo... você não mencionou a versão do Postgres, mas se for 9.0 ou
> superior, basta usar a função string_agg [1].
>
> Mais ou menos assim:
>
> Select cod_id,
> string_agg(email, ', ')
> from mv_clientes_emails
> group by cod_id;
>
> 1 - http://www.postgresql.org/docs/9.0/static/functions-aggregate.html
>
> --
> Marcone Peres - DBA
> http://www.linkedin.com/in/marconeperes
> @marconeperes
> (61) 8146-0028
> ___
> pgbr-geral mailing list
> pgbr-geral@listas.postgresql.org.br
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>
___
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 concatenar resultados

2013-04-08 Por tôpico Marcelo da Silva
Resolvido

Pessoal, com a ajuda dos colegas cheguei a seguinte função

CREATE OR REPLACE FUNCTION femailsclientes(integer)
  RETURNS character varying AS
$BODY$
  declare
emails character varying;
reg record;
begin
emails = '';
for reg in select email from mv_clientes_emails where (cod_id = $1)
loop
  emails = reg.email || ', ' || emails;
end loop;
  return left(emails, length(emails)-2); -- Retira a ultima virgula
end;
$BODY$
  LANGUAGE plpgsql IMMUTABLE
  COST 100;
ALTER FUNCTION femailsclientes(integer)
  OWNER TO postgres;


Show de bola obrigado a todos


Marcelo Silva



Em 8 de abril de 2013 10:08, Fábio Telles Rodriguez
escreveu:

> Ao invés de usar um LOOP  que pode sair bem caro, você pode utilizar
> ARRAYs que são bem eficientes. Veja o exemplo:
>
> CREATE TABLE teste (abizi varchar);
> INSERT INTO teste VALUES ('AAA'),('BBB'),('CCC'),('DDD');
> SELECT array_to_string(array_agg(abizi),',') FROM teste;
>
> Aqui usei duas funções com array, uma de aggregação: array_agg[1] e outra
> para transformar o array numa string, o array_to_string[2].
>
> [1] http://www.postgresql.org/docs/current/static/functions-aggregate.html
> [2] http://www.postgresql.org/docs/current/static/functions-array.html
>
> OBS: Se for usar uma função mesmo, lembre-se de declarar como IMMUTABLE e
> não como VOLATILE. Assim o desempenho da sua função melhora muito.
>
> []s
>
>
>
> 2013/4/8 Marcelo da Silva 
>
>> Pessoal estou tentando concatenar numa string o resultado de um select:
>>
>> email1, email2, email3, etc
>>
>> Sei pouca coisa em termos de funções em Postgres, criei a função abaixo
>> pra isso.
>> Mas está faltando o principal que é concatenar, vejam:
>>
>> CREATE OR REPLACE FUNCTION femailsclientes(integer)
>>   RETURNS character varying AS
>> $BODY$
>>   declare
>> result character varying;
>> begin
>>
>> for result in select distinct email from mv_clientes_emails where
>> (cod_id = $1)
>> loop
>>   result = result || ',' || result;
>> end loop;
>>   return result;
>>
>> end;
>> $BODY$
>>   LANGUAGE plpgsql VOLATILE
>>   COST 100;
>> ALTER FUNCTION femailsclientes(integer)
>>   OWNER TO postgres;
>>
>> Podem me ajudar?
>>
>> Obrigado
>> ...
>>
>> Marcelo Silva
>>
>>
>> ___
>> pgbr-geral mailing list
>> pgbr-geral@listas.postgresql.org.br
>> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>>
>>
>
>
> --
> Atenciosamente,
> Fábio Telles Rodriguez
> blog: http:// 
> <http://www.midstorm.org/~telles/>s<http://tellesr.wordpress.com/>
> avepoint.blog.br
> e-mail / gtalk / MSN: fabio.tel...@gmail.com
> Skype: fabio_telles
>
> Timbira - A empresa brasileira de Postgres
> http://www.timbira.com.br
>
> ___
> pgbr-geral mailing list
> pgbr-geral@listas.postgresql.org.br
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>
>
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


[pgbr-geral] Função para concatenar resultados

2013-04-08 Por tôpico Marcelo da Silva
Pessoal estou tentando concatenar numa string o resultado de um select:

email1, email2, email3, etc

Sei pouca coisa em termos de funções em Postgres, criei a função abaixo pra
isso.
Mas está faltando o principal que é concatenar, vejam:

CREATE OR REPLACE FUNCTION femailsclientes(integer)
  RETURNS character varying AS
$BODY$
  declare
result character varying;
begin

for result in select distinct email from mv_clientes_emails where
(cod_id = $1)
loop
  result = result || ',' || result;
end loop;
  return result;

end;
$BODY$
  LANGUAGE plpgsql VOLATILE
  COST 100;
ALTER FUNCTION femailsclientes(integer)
  OWNER TO postgres;

Podem me ajudar?

Obrigado
...

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


Re: [pgbr-geral] Voltando ao assunto, mas com outra visão (CHAR ou VARCHAR) ?

2013-04-03 Por tôpico Marcelo da Silva
Vai ver que depois o cara coloca Unique porque ele tem que ser um
identificador mas não necessariamente sequencial
Vai saber


2013/4/3 Leonardo Cezar 

> 2013/4/3 Alexsander Rosa 
>
> Que tal isso aqui?:
>>
>> CREATE TABLE CFOP (ID INTEGER NOT NULL,CFOP   INTEGER,
>> DESCRICAO  BLOB SUB_TYPE 1 SEGMENT SIZE 80,
>> APLICACAO  BLOB SUB_TYPE 1 SEGMENT SIZE 80
>> );
>>
>>
> Agora já não sei se brincas ou se falas sério...
>
> CFOP não é um identificador único?
>
> -Leo
> --
> Leonardo Cezar
> http://www.postgreslogia .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


Re: [pgbr-geral] INSERT AGUARDANDO TRANSAÇÃO (VIOLAÇÃO DE CHAVE)

2013-04-02 Por tôpico Marcelo da Silva
PGAdmin



Em 2 de abril de 2013 16:18, Marcelo da Silva  escreveu:

> Eu costumo usar o PDAdmin pra gerenciar o Status do banco, nele você pode
> interromper os processos que desejar
>
>
> Em 2 de abril de 2013 10:41, MIGUEL JOSE DE LIMA <
> mig...@inlocsistemas.com.br> escreveu:
>
> Bom Dia,
>>
>> Se possível, como posso interromper (obter erro/status) para um INSERT
>> (que viola chave) não fique aguardando outra transação em aberto?
>> Li sobre pg_am aminsert, mas não sei se é por ai!??? Se é como aplicar?
>>
>> Obrigado.
>> ___
>> pgbr-geral mailing list
>> pgbr-geral@listas.postgresql.org.br
>> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>>
>
>
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] INSERT AGUARDANDO TRANSAÇÃO (VIOLAÇÃO DE CHAVE)

2013-04-02 Por tôpico Marcelo da Silva
Eu costumo usar o PDAdmin pra gerenciar o Status do banco, nele você pode
interromper os processos que desejar


Em 2 de abril de 2013 10:41, MIGUEL JOSE DE LIMA <
mig...@inlocsistemas.com.br> escreveu:

> Bom Dia,
>
> Se possível, como posso interromper (obter erro/status) para um INSERT
> (que viola chave) não fique aguardando outra transação em aberto?
> Li sobre pg_am aminsert, mas não sei se é por ai!??? Se é como aplicar?
>
> Obrigado.
> ___
> pgbr-geral mailing list
> pgbr-geral@listas.postgresql.org.br
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Voltando ao assunto, mas com outra visão (CHAR ou VARCHAR) ?

2013-04-02 Por tôpico Marcelo da Silva
Hum... agora está mais claro
Bom saber...

Marcelo Silva
-


Em 2 de abril de 2013 09:34, Dickson S. Guedes escreveu:

> Em 2 de abril de 2013 09:30, Jean Domingues 
> escreveu:
> >>A final, deve-se ou não usar o CHAR sendo que existe o VARCHAR ?
> >>Pra mim o CHAR seria mais rápido por ter um tamanho fixo, mas pela
> matéria mostra-se o inverso!!!
> >>Sei que a matéria fala sobre o Oracle, mas como o Postgres no meu ver
> tem muito a ver com ele, como se comportar no caso do CHAR e VARCHAR do
> postgres ?
> >>* Sei que existem muitas matérias na web sobre o postgres, mas gostaria
> de saber a opinião do especialistas aqui da lista :) (acho mais confiável,
> rsrsr)
> >
> > Tip: There are no performance differences between these three types,
> apart from increased storage size when using the blank-padded type, and a
> few extra cycles to check the length when storing into a length-constrained
> column. While character(n) has performance advantages in some other
> database systems, it has no such advantages inPostgreSQL. In most
> situations text or character varying should be used instead.
> >
> > http://www.postgresql.org/docs/9.2/static/datatype-character.html
> >
> > Entendo que a diferença seria apenas de espaço em disco mesmo. Use
> varchar e boa.
>
> Exato.
>
> O que o pessoal confunde é que alguns SGDB trataram campos fixos de
> uma forma ou de outra diferentemente da que o Postgres tratou, e como
> ele não seguiu a mesma linha esta diferença de custo não se aplica a
> ele.
>
> []s
> --
> Dickson S. Guedes
> mail/xmpp: gue...@guedesoft.net - skype: guediz
> http://github.com/guedes - http://guedesoft.net
> http://www.postgresql.org.br
> ___
> pgbr-geral mailing list
> pgbr-geral@listas.postgresql.org.br
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


[pgbr-geral] Voltando ao assunto, mas com outra visão (CHAR ou VARCHAR) ?

2013-04-02 Por tôpico Marcelo da Silva
Pessoal, vira e mexe nos deparamos com a mesma dúvida só que por angulo
diferente.
Por exemplo, antigamente numa cirurgia de garganta tirava-se as amídalas e
pronto, hoje não se tira mais porque sabe-se que as amídalas são um alarme
muito importante :)

Bem passando de pato pra rato, temos o "Usar CHAR ou VARCHAR" ?

Até hoje eu tenho o conceito que:

N Caracteres fixos = CHAR
N Caracteres variados = VARCHAR

Lendo essa matéria sobre Oracle voltou a dúvida:
http://www.fabioprado.net/2011/08/qual-tipo-de-dado-devo-usar-char.html

Na matéria diz que "deve-se evitar o uso de CHAR" mesmo que seja fixo, por
exemplo em UF (CHAR(2))

A final, deve-se ou não usar o CHAR sendo que existe o VARCHAR ?

Pra mim o CHAR seria mais rápido por ter um tamanho fixo, mas pela matéria
mostra-se o inverso!!!

Sei que a matéria fala sobre o Oracle, mas como o Postgres no meu ver tem
muito a ver com ele, como se comportar no caso do CHAR e VARCHAR do
postgres ?

* Sei que existem muitas matérias na web sobre o postgres, mas gostaria de
saber a opinião do especialistas aqui da lista :) (acho mais confiável,
rsrsr)

Marcelo Silva

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


Re: [pgbr-geral] Saber quem esta usando uma tabela

2013-04-01 Por tôpico Marcelo da Silva
rsrsr, valeu Dickson


Em 1 de abril de 2013 11:49, Dickson S. Guedes escreveu:

> Em 1 de abril de 2013 11:31, Jean Domingues 
> escreveu:
> >>Em 1 de abril de 2013 11:19, Marcelo da Silva 
> escreveu:
> >>> Pessoal, as vezes preciso executar alterações numa tabela, e se ele
> estiver
> >>> sendo usada não consigo.
> >>>
> >>> Tem como saber se aquela tabela está sendo usada e por quem (IP por
> exemplo)
> >>> antes de executar a tal alteração ?
> >>
> >>Sim.
> >
> > Por que se dar ao trabalho de dar uma resposta inútil como esta? Espero
> que seja brincadeira.
>
> A pergunta foi objetiva, minha resposta também :) (e olha que, por ser
> primeiro de Abril, eu poderia ter dito 'não' ;) )
>
> Mas sim, foi uma brincadeira mas com o intuito de obter uma segunda
> pergunta, mais elaborada e com um pouco mais de detalhes sobre o que
> ele realmente precisa.
>
> []s
> --
> Dickson S. Guedes
> mail/xmpp: gue...@guedesoft.net - skype: guediz
> http://github.com/guedes - http://guedesoft.net
> http://www.postgresql.org.br
> ___
> pgbr-geral mailing list
> pgbr-geral@listas.postgresql.org.br
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Saber quem esta usando uma tabela

2013-04-01 Por tôpico Marcelo da Silva
Mesmo que não seja brincadeira, vou considerar que fui muito objetivo na
questão, apesar de citar "IP por exemplo", rsrsrs

Estou vendo alguns comandos na web

Será que pode-se fazer assim:

if (tabela em uso)
ignora
ou
altera tabela


Mais ou menos isso que estava pensando



Em 1 de abril de 2013 11:31, Jean Domingues escreveu:

> >Em 1 de abril de 2013 11:19, Marcelo da Silva 
> escreveu:
> >> Pessoal, as vezes preciso executar alterações numa tabela, e se ele
> estiver
> >> sendo usada não consigo.
> >>
> >> Tem como saber se aquela tabela está sendo usada e por quem (IP por
> exemplo)
> >> antes de executar a tal alteração ?
> >
> >Sim.
> >
> Por que se dar ao trabalho de dar uma resposta inútil como esta? Espero
> que seja brincadeira.
> ___
> pgbr-geral mailing list
> pgbr-geral@listas.postgresql.org.br
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


[pgbr-geral] Saber quem esta usando uma tabela

2013-04-01 Por tôpico Marcelo da Silva
Pessoal, as vezes preciso executar alterações numa tabela, e se ele estiver
sendo usada não consigo.

Tem como saber se aquela tabela está sendo usada e por quem (IP por
exemplo) antes de executar a tal alteração ?

É que não posso ficar pedindo pra todos sair do sistema parando a empresa
toda.
Gostaria de minimizar esse problema ao precisar alterar uma tabela "não
muito importante". Essa tabela as vezes está sendo usado somente por uma
pessoa.



Marcelo Silva

___
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 para listar Arvore de Titulos (recursividade) - Dica

2013-03-28 Por tôpico Marcelo da Silva
Pessoal eu ia postar uma duvida sobre recursividade no postgres, mas acabei
por achar uma dica bem legal sobre isso, vou deixar aí pra voces

Tabela:
  TITULOS
codcli,
documento
pedido
pedido_reneg

Acontece que titulos podem ser agrupados e renegociados desta cria-se na
mesma tabela só que mudam os campos pedido e pedido_reneg

Então temos

  pedido: 1 -> reneg 0
  pedido: 2 -> reneg 0
viraram
  pedido_reneg 3 - pedido 1 e 2

É a mesma coisa do esquema Pai / Filho

Bem vai ai o link:
http://imasters.com.br/artigo/21777/postgresql/queries-recursivas-em-postgresql/

show de bola :)

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


Re: [pgbr-geral] Melhorar Select

2013-03-22 Por tôpico Marcelo da Silva
De fato criar um indice no campo OBS melhorou a performance...
Bem eu não sou DBA então costumo ler algumas materias na web pra melhorar
nisso
Já li em vários lugares que devemos tomar cuidado na criação dos indices de
form indiscriminada
E as recomendações é evitar criar indices em campos muito repetitivos como
Flags (V/F) (S/N) (A/B/C) e etc.
Neste caso o campo obs só guarda os valores (M/F/C), ou seja vão se repetir
bastante
Mas eu deveria criar indices nestes campos com o Postgres ?
Meu sistema não tem aquela demanda enorme de INSERTS e UPDATES, tem mais
SELECTS mesmo.

Seria uma exceção no meu caso esses indices em FLAGs ?


Valeu Matheus






Em 22 de março de 2013 14:33, Matheus de Oliveira  escreveu:

>
>
> 2013/3/22 Marcelo da Silva 
>
>> Pessoal estou com o seguinte select e gostaria de algumas sugestões para
>> melhorar a performance
>>
>> select a.*, b.pessoa, b.cpf_cnpj, b.fantasia, b.nome as razao, c.login,
>> d.login as ope_lib, e.cod_gru, e.descricao
>> from mv_libera a
>> inner join mv_clientes b on(b.cod_id = a.cod_id)
>> inner join mv_usuarios c on(c.cod_usu = a.cod_ope)
>> left join mv_usuarios d on(d.cod_usu = a.usu_lib)
>> inner join mv_usuarios_grupos e on(e.cod_gru = c.cod_gru)
>> where (obs in('F','M'))
>> order by a.liberado, a.data_cad
>>
>>
>> Já criei os indices nos campos de pesquisa ( inners e afins )
>>
>>
> Quais exatamente?
>
>
>> Mas estou achando ele meio lento
>>
>> Ele retorna 5.427 registros, ou seja a tabela não é tao grande
>>
>>
> A quantidade de registros de um select ser pequena não quer dizer que as
> tabelas envolvidas não sejam.
>
>
> No explain ele retorna assim:
>>
>> "Sort  (cost=927.90..938.92 rows=4408 width=313)"
>> "  Sort Key: a.liberado, a.data_cad"
>> "  ->  Hash Left Join  (cost=216.28..661.08 rows=4408 width=313)"
>> "Hash Cond: (a.usu_lib = d.cod_usu)"
>> "->  Hash Join  (cost=214.06..598.26 rows=4408 width=305)"
>> "  Hash Cond: (a.cod_id = b.cod_id)"
>> "  ->  Hash Join  (cost=4.30..316.86 rows=4408 width=232)"
>> "Hash Cond: (a.cod_ope = c.cod_usu)"
>> "->  Seq Scan on mv_libera a  (cost=0.00..251.18
>> rows=4653 width=142)"
>> "  Filter: (obs = ANY ('{F,M}'::bpchar[]))"
>> "->  Hash  (cost=3.66..3.66 rows=51 width=94)"
>> "  ->  Hash Join  (cost=1.41..3.66 rows=51
>> width=94)"
>> "Hash Cond: (c.cod_gru = e.cod_gru)"
>> "->  Seq Scan on mv_usuarios c
>>  (cost=0.00..1.54 rows=54 width=16)"
>> "->  Hash  (cost=1.18..1.18 rows=18
>> width=82)"
>> "  ->  Seq Scan on mv_usuarios_grupos
>> e  (cost=0.00..1.18 rows=18 width=82)"
>> "  ->  Hash  (cost=167.12..167.12 rows=3412 width=77)"
>> "->  Seq Scan on mv_clientes b  (cost=0.00..167.12
>> rows=3412 width=77)"
>> "->  Hash  (cost=1.54..1.54 rows=54 width=12)"
>> "  ->  Seq Scan on mv_usuarios d  (cost=0.00..1.54 rows=54
>> width=12)"
>>
>>
> Olhando por cima, a "mv_libera" é a que _pesa_ mais nessa consulta (apesar
> de não ser a única). Um índice no campo "obs" pode ajudar.
>
> Mas... rode um EXPLAIN ANALYZE ao invés de só EXPLAIN. O EXPLAIN sozinho
> mascára muita informação (como tempo real e possíveis erros de estatísticas
> do PG).
>
>
>>
>> Sinceramente não sou expert em DB então fico boiando no Explain.
>>
>> Toda sugestão será bem vinda
>>
>
> O explain.depesz.com ajuda bastante nessa interpretação.
>
>
>
>>
>> Obs: Na tabela A preciso de todos os campos, por isso o *, sei que isso
>> afeta a performance, mas é o preço neste caso.
>>
>>
>>
> Não é desculpa!!! Você tem "CERTEZA" que essa tabela não vai mudar um dia
> e serão adicionados mais campos que você NÃO precisa? E se acontecer de
> adicionarem um campo com mesmo nome de um campo (ou alias) de outra tabela
> que usa nesse select?
>
> O "*" não é só um problema de performance...
>
>
> Atenciosamente,
> --
> Matheus de Oliveira
> Analista de Banco de Dados
> Dextra Sistemas - MPS.Br nível F!
> www.dextra.com.br/postgres
>
>
> ___
> pgbr-geral mailing list
> pgbr-geral@listas.postgresql.org.br
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>
>
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


[pgbr-geral] Melhorar Select

2013-03-22 Por tôpico Marcelo da Silva
Pessoal estou com o seguinte select e gostaria de algumas sugestões para
melhorar a performance

select a.*, b.pessoa, b.cpf_cnpj, b.fantasia, b.nome as razao, c.login,
d.login as ope_lib, e.cod_gru, e.descricao
from mv_libera a
inner join mv_clientes b on(b.cod_id = a.cod_id)
inner join mv_usuarios c on(c.cod_usu = a.cod_ope)
left join mv_usuarios d on(d.cod_usu = a.usu_lib)
inner join mv_usuarios_grupos e on(e.cod_gru = c.cod_gru)
where (obs in('F','M'))
order by a.liberado, a.data_cad


Já criei os indices nos campos de pesquisa ( inners e afins )

Mas estou achando ele meio lento

Ele retorna 5.427 registros, ou seja a tabela não é tao grande

No explain ele retorna assim:

"Sort  (cost=927.90..938.92 rows=4408 width=313)"
"  Sort Key: a.liberado, a.data_cad"
"  ->  Hash Left Join  (cost=216.28..661.08 rows=4408 width=313)"
"Hash Cond: (a.usu_lib = d.cod_usu)"
"->  Hash Join  (cost=214.06..598.26 rows=4408 width=305)"
"  Hash Cond: (a.cod_id = b.cod_id)"
"  ->  Hash Join  (cost=4.30..316.86 rows=4408 width=232)"
"Hash Cond: (a.cod_ope = c.cod_usu)"
"->  Seq Scan on mv_libera a  (cost=0.00..251.18
rows=4653 width=142)"
"  Filter: (obs = ANY ('{F,M}'::bpchar[]))"
"->  Hash  (cost=3.66..3.66 rows=51 width=94)"
"  ->  Hash Join  (cost=1.41..3.66 rows=51
width=94)"
"Hash Cond: (c.cod_gru = e.cod_gru)"
"->  Seq Scan on mv_usuarios c
 (cost=0.00..1.54 rows=54 width=16)"
"->  Hash  (cost=1.18..1.18 rows=18
width=82)"
"  ->  Seq Scan on mv_usuarios_grupos e
 (cost=0.00..1.18 rows=18 width=82)"
"  ->  Hash  (cost=167.12..167.12 rows=3412 width=77)"
"->  Seq Scan on mv_clientes b  (cost=0.00..167.12
rows=3412 width=77)"
"->  Hash  (cost=1.54..1.54 rows=54 width=12)"
"  ->  Seq Scan on mv_usuarios d  (cost=0.00..1.54 rows=54
width=12)"


Sinceramente não sou expert em DB então fico boiando no Explain.

Toda sugestão será bem vinda

Obs: Na tabela A preciso de todos os campos, por isso o *, sei que isso
afeta a performance, mas é o preço neste caso.


Marcelo Silva

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


Re: [pgbr-geral] Dividir por Zero = Erro

2013-03-21 Por tôpico Marcelo da Silva
Mais uma, show Osvaldo

Ficou assim:

((b.valor_sug * 100) / nullif(a.valor_ant, 0))-100 as aum_total

Valeu...


Em 21 de março de 2013 12:43, Osvaldo Kussama
escreveu:

> Em 21/03/13, Marcelo da Silva escreveu:
> > Pessoal, tenho o seguinte select:
> >
> > select
> >   a.*,
> >   b.valor_sug,
> >   ((a.valor_pv * 100) / a.valor_ant)-100 as aum_parcial,
> >   ((b.valor_sug * 100) / a.valor_ant)-100 as aum_total
> > from mv_produtos_historico a
> > inner join mv_produtos b on(b.codigo = a.codigo)
> > where (a.codigo = '01')
> > order by
> >   a.data_cad desc,
> >   a.cod_key desc
> >
> > Acontece que quando "a.valor_ant"  é igual a Zero ele dá erro (lógico
> rsrs)
> >
> > Vou ter que tratar com "Case When" ou existe algum outro esquema pra
> isso ?
> >
>
>
> Não sei se é uma solução para sua necessidade, mas poderia usar:
> nullif(a.valor_ant, 0)
> que dará resultado NULL se valor_ant for zero.
>
> Osvaldo
> ___
> pgbr-geral mailing list
> pgbr-geral@listas.postgresql.org.br
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


[pgbr-geral] Dividir por Zero = Erro

2013-03-21 Por tôpico Marcelo da Silva
Pessoal, tenho o seguinte select:

select
  a.*,
  b.valor_sug,
  ((a.valor_pv * 100) / a.valor_ant)-100 as aum_parcial,
  ((b.valor_sug * 100) / a.valor_ant)-100 as aum_total
from mv_produtos_historico a
inner join mv_produtos b on(b.codigo = a.codigo)
where (a.codigo = '01')
order by
  a.data_cad desc,
  a.cod_key desc

Acontece que quando "a.valor_ant"  é igual a Zero ele dá erro (lógico rsrs)

Vou ter que tratar com "Case When" ou existe algum outro esquema pra isso ?


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


[pgbr-geral] Como o motor reage neste caso ? (curiosidade)

2013-03-07 Por tôpico Marcelo da Silva
Pessoal, montando um select surgiu uma curiosidade...

O Select

select z.* from(
  select
data_ven,
historico,
valor
  from tabela_A
  --where (data_ven between 'data_ini' and 'data_fim') --- COLOCAR O FILTRO
AQUI ??

  union all

  select
data_ven,
historico,
valor
  from tabela_B
  --where (data_ven between 'data_ini' and 'data_fim') --- COLOCAR O FILTRO
AQUI ??
) as z
where (data_ven between 'data_ini' and 'data_fim') --- OU COLOCAR O FILTRO
DIRETO AQUI ?


Fazendo um explain com o filtro somente em Z o motor me pareceu eficiente,
e trouxe os registros de A e B como se os filtros ali existissem
A princípio imaginei que ele trouxesse todos os registros de A e B e depois
filtrasse em Z, deixando o select lento, mas não foi assim.

É isso mesmo ?

Me parece que ele analisa primeiro Z, depois A e B
Que interessante...


Marcelo Silva

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


Re: [pgbr-geral] Update com Inner Join ( ou Left Join )

2013-03-01 Por tôpico Marcelo da Silva
Hum, ficou mais simples :)

Obrigado por mais essa pessoal



Em 1 de março de 2013 09:37, Juliano Benvenuto Piovezan <
juli...@sinersoft.com.br> escreveu:

> 2013/3/1 Marcelo da Silva :
> > Pessoal tenho o seguinte UPDATE
> >
> > update mv_servicos_balcao as a set tipo = b.tipo
> > from mv_vendas_pre as b
> > where (b.pedido = a.pedido)
> >
> > Bem, vão existir alguns registros que não estão na tabela B, desta forma
> eu
> > preciso que o TIPO seja 'F' por default
> >
> > Eu posso fazer 2 Updates, mas achei meio tosco
> > Se eu pudesse usar Left Join colocaria um Coalesce(b.tipo, 'F') e me
> > serviria, mas não encontrei como fazer isso no PG
> >
> > Terei que fazer 2 Update mesmo ?
> >
> >
>
> Você pode referenciar a tabela mv_servicos_balcao também no FROM,
> fazendo o LEFT JOIN com a tabela mv_vendas_pre.
>
> UPDATE mv_servicos_balcao a
> SET tipo = COALESCE(b.tipo, 'F')
> FROM a1 LEFT JOIN mv_vendas_pre b ON (a1.pedido = b.pedido)
> WHERE a.pedido = a1.pedido;
> ___
> pgbr-geral mailing list
> pgbr-geral@listas.postgresql.org.br
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


[pgbr-geral] Update com Inner Join ( ou Left Join )

2013-03-01 Por tôpico Marcelo da Silva
Pessoal tenho o seguinte UPDATE

update mv_servicos_balcao as a set tipo = b.tipo
from mv_vendas_pre as b
where (b.pedido = a.pedido)

Bem, vão existir alguns registros que não estão na tabela B, desta forma eu
preciso que o TIPO seja 'F' por default

Eu posso fazer 2 Updates, mas achei meio tosco
Se eu pudesse usar Left Join colocaria um Coalesce(b.tipo, 'F') e me
serviria, mas não encontrei como fazer isso no PG

Terei que fazer 2 Update mesmo ?


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


Re: [pgbr-geral] Ordenar String como data

2013-02-27 Por tôpico Marcelo da Silva
Valeu Euler...

2013/2/27 Euler Taveira 

> On 27-02-2013 16:39, Marcelo da Silva wrote:
> > Pessoal como fazer neste caso, tenho o seguinte select
> >
> > select z.*, (a_pagar + a_receber) as diferenca from(
> >   select
> > concat(extract(month from a.data_ven),'/', extract(year from
> a.data_ven))
> > as periodo,
> > -coalesce(sum(c.val_doc), 0) as a_pagar,
> > coalesce(sum(d.val_doc), 0) as a_receber
> >   from mv_contas_pagrec a
> >   inner join mv_historicos b on(b.cod_his = a.cod_his)
> >   left join mv_contas_pagrec c on(c.cod_key = a.cod_key)and(c.c = 'P')
> >   left join mv_contas_pagrec d on(d.cod_key = a.cod_key)and(d.c = 'R')
> >   where (a.obs not in('C'))
> > and(a.data_ven between '01/09/2012' and '31/01/2013')
> > and(a.data_qui is null)
> > and(a.pedido_ren <= 0)
> >   group by
> > 1
> >   order by
> > 1
> > ) as z
> >
> substitua 'order by 1' por:
>
> order by extract(year from a.data_ven), extract(month from a.data_ven)
>
>
> --
>Euler Taveira de Oliveira - Timbira   http://www.timbira.com.br/
>PostgreSQL: Consultoria, Desenvolvimento, Suporte 24x7 e Treinamento
> ___
> pgbr-geral mailing list
> pgbr-geral@listas.postgresql.org.br
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


[pgbr-geral] Ordenar String como data

2013-02-27 Por tôpico Marcelo da Silva
Pessoal como fazer neste caso, tenho o seguinte select

select z.*, (a_pagar + a_receber) as diferenca from(
  select
concat(extract(month from a.data_ven),'/', extract(year from
a.data_ven)) as periodo,
-coalesce(sum(c.val_doc), 0) as a_pagar,
coalesce(sum(d.val_doc), 0) as a_receber
  from mv_contas_pagrec a
  inner join mv_historicos b on(b.cod_his = a.cod_his)
  left join mv_contas_pagrec c on(c.cod_key = a.cod_key)and(c.c = 'P')
  left join mv_contas_pagrec d on(d.cod_key = a.cod_key)and(d.c = 'R')
  where (a.obs not in('C'))
and(a.data_ven between '01/09/2012' and '31/01/2013')
and(a.data_qui is null)
and(a.pedido_ren <= 0)
  group by
1
  order by
1
) as z



Preciso ordenar pelo resultado Mes/Ano
Mas ele está entendendo como string por causa do cast, como fazer para que
ele entenda que é mes e ano?


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


Re: [pgbr-geral] SQL Para extrato de C/C

2013-02-26 Por tôpico Marcelo da Silva
emprestimo_colaborador,
> id_colaborador, dt_lancamento, tipo_lancamento, vlr_lancamento) VALUES
> (14,2,'2012-06-12','C',100.00);
>
> -- TRUNCATE TABLE emprestimo_colaborador;
> --dql
>
> -- listando emprestimo
>
> SELECT *
>  FROM emprestimo_colaborador
> ;
>
> -- listando saldo, com coluna informando débito e crédito, detalhado,
> com acompanhamento do saldo, forma 01
>
>SELECT id_colaborador
> , dt_lancamento
> , tipo_lancamento
> , vlr_lancamento
> ,
> (
>  SELECT sum
>   (
>CASE WHEN tipo_lancamento = 'D' THEN
> vlr_lancamento * -1
>  WHEN tipo_lancamento = 'C' THEN
> vlr_lancamento
> ELSE
> 0.00
>END
>   )
>FROM emprestimo_colaborador
>   WHERE dt_lancamento <= ec.dt_lancamento
> AND id_colaborador = 2
> )  AS saldo
> FROM emprestimo_colaborador AS ec
>  ORDER BY dt_lancamento
>;
>
>
> -- listando saldo, com coluna informando débito e crédito, detalhado,
> com acompanhamento do saldo, com mais detalhes forma 02
>
>SELECT id_colaborador
> , dt_lancamento
> , tipo_lancamento
> , CASE WHEN tipo_lancamento = 'C' THEN
> vlr_lancamento
>   ELSE
>0.00
>  END AS credito
> , CASE WHEN tipo_lancamento = 'D' THEN
> vlr_lancamento
>   ELSE
>0.00
>  END AS debito
> ,
> (
>  SELECT sum
>   (
>CASE WHEN tipo_lancamento = 'D' THEN
> vlr_lancamento * -1
>  WHEN tipo_lancamento = 'C' THEN
> vlr_lancamento
> ELSE
> 0.00
>END
>   )
>FROM emprestimo_colaborador
>   WHERE dt_lancamento <= ec.dt_lancamento
> AND id_colaborador = 2
> )  AS saldo
> FROM emprestimo_colaborador AS ec
>  ORDER BY ec.dt_lancamento
>;
>
> No script acima vc pode mudar o campo date para timestamp.
>
> Espero ter ajudado.
>
>
>
> Em 26 de fevereiro de 2013 09:14, José Mello Júnior
>  escreveu:
> > Utilizando o Case e functions window para demonstrar o saldo, nem há
> > necessidade de qualquer outra coisa.
> >
> > Att
> >
> > Em 26 de fevereiro de 2013 08:27, Ricardo Carlini Sperandio
> >  escreveu:
> >
> >> Enviado pelo Motorola Razr
> >> Em 25/02/2013 23:50, "Eduardo Almeida" 
> >> escreveu:
> >>
> >>
> >> >
> >> > tente algo como
> >> >
> >> > SELECT
> >> > ( CASE WHEN ( flag = 'credito' ) THEN total ELSE 0 END) AS
> >> > receitas,
> >> > ( CASE WHEN ( flag = 'debito' )  THEN total ELSE 0 END) AS
> >> > despesas
> >> > FROM tbl_tabela
> >> > WHERE flag IN ('credito', 'debito') ;
> >> >
> >> >
> >> >
> >> >
> >> > On 25/02/2013 23:30, Marcelo Silva wrote:
> >> >>
> >> >>
> >> >>
> >> >> From: Eduardo Almeida
> >> >> Sent: Monday, February 25, 2013 11:20 PM
> >> >> To: Comunidade PostgreSQL Brasileira
> >> >> Subject: Re: [pgbr-geral] SQL Para extrato de C/C
> >> >>
> >> >> On 25/02/2013 16:19, Marcelo da Silva wrote:
> >> >>>
> >> >>> Pessoal, tenho um duvida simples porem gostaria da opinião dos
> >> >>> amigos...
> >> >>> Preciso montar um extrato estilo do banco Itau, mais ou menos assim
> >> >>>
> >> >>> Historico A Pagar A ReceberDiferençaSaldo
> >> >>> teste10,00   10,00   10,00
>  10,00
> >> >>> teste2 -25,00   20,00-5,00
> 5,00
> >> >>> ...
> >> >>>
> >> >>> Bem... como uso uma tabela só para guardar contas a pagar e
> receber, é
> >> >>> simples pegar Debitos e Creditos,
> >> >>> mas o resultado sai em um unica coluna, gostaria de ter o layout
> >> >>> acima...
> >> >>> Será que é possivel fazer no SQL ou terei que montar o relatorio na
> >> >>> mão?
> >> >>>
> >> >>> O que tenho hoje é assim:
> >> >>>
> >> >>> teste 10,00
> >> >>> teste 1  10,00
> >> >>> teste 2  -25,00
> >> >>> teste 2   20,00
> >> >>> ...
> >> >>
> >> >>
> >> >> E como

[pgbr-geral] SQL Para extrato de C/C

2013-02-25 Por tôpico Marcelo da Silva
Pessoal, tenho um duvida simples porem gostaria da opinião dos amigos...
Preciso montar um extrato estilo do banco Itau, mais ou menos assim

Historico A Pagar A ReceberDiferençaSaldo
teste10,00   10,00   10,00  10,00
teste2 -25,00   20,00-5,00   5,00
...

Bem... como uso uma tabela só para guardar contas a pagar e receber, é
simples pegar Debitos e Creditos,
mas o resultado sai em um unica coluna, gostaria de ter o layout acima...
Será que é possivel fazer no SQL ou terei que montar o relatorio na mão?

O que tenho hoje é assim:

teste 10,00
teste 1  10,00
teste 2  -25,00
teste 2   20,00
...

Estive pensando em Union mas pelo que vejo não é isso...
Com crossover de tabelas tambem não consegui chegar num resultado esperado

:(


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


Re: [pgbr-geral] PROBLEMAS PARA LEVANTAR O BANCO

2011-11-06 Por tôpico Marcelo da Silva
Bem, eu faria o seguinte... primeiro lugar, salvaria a pasta de dados
completa do postgres em um local seguro (se ainda não o fez e se não tiver
backup recente)
Depois continuaria a verificar o problema, primeiramente verificando se não
tem outro programa utilizando a porta do postgres 5432 por padrão.
Normalmente problemas de socket podem estar relacionados com a porta em uso.
Caso esse não seja o problema, desinstalaria o postgres e reinstalaria, e
funcionando, voltaria o backup ou pasta do postgres.

Antes disso eu costumo ter uma VM a parte para fazer esses testes de
recuperação.

A principio seria isso...

Em 6 de novembro de 2011 15:52, José Mello Júnior <
jose.mello.jun...@gmail.com> escreveu:

> Sim, trata-se de um Banco em produção e instalado há algum tempo (+-3
> anos), e o Win 7 que utilizo é o 64bits.
>
> []´s
>
> 2011/11/6 Marcelo da Silva 
>
>> Eu uso o Postgres8.4 no Windows Ultimate 32bits e funciona sem problemas.
>> Por acaso voce liberou as conexões nos arquivo de configurações do
>> Postgres?
>>
>>
>>
>> Em 5 de novembro de 2011 12:10, José Mello Júnior <
>> jose.mello.jun...@gmail.com> escreveu:
>>
>>> Não sei o que acontece, mas o windows não consegue manter o Banco. Erro
>>> do LOG:
>>>
>>> 2011-11-05 11:03:53 BRTLOG:  could not connect socket for statistics
>>> collector: Invalid argument
>>> 2011-11-05 11:03:53 BRTLOG:  trying another address for the statistics
>>> collector
>>> 2011-11-05 11:03:56 BRTLOG:  database system was shut down at 2011-11-05
>>> 11:03:34 BRT
>>> 2011-11-05 11:03:58 BRTLOG:  could not receive data from client: Unknown
>>> winsock error 10061
>>> 2011-11-05 11:04:05 BRTLOG:  autovacuum launcher started
>>> 2011-11-05 11:04:07 BRTLOG:  database system is ready to accept
>>> connections
>>> 2011-11-05 11:04:09 BRTLOG:  could not receive data from client: Unknown
>>> winsock error 10061
>>> 2011-11-05 11:04:12 BRTLOG:  could not receive data from client: Unknown
>>> winsock error 10061
>>> Windows 7 64 - Ultimate
>>> Versão do Banco: 8.4
>>>
>>>
>>> --
>>> Mello Júnior
>>> 41.3252-3555
>>>
>>> ___
>>> 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
>>
>>
>
>
> --
> Mello Júnior
> 41.3252-3555
>
> ___
> pgbr-geral mailing list
> pgbr-geral@listas.postgresql.org.br
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>
>
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] PROBLEMAS PARA LEVANTAR O BANCO

2011-11-06 Por tôpico Marcelo da Silva
Eu uso o Postgres8.4 no Windows Ultimate 32bits e funciona sem problemas.
Por acaso voce liberou as conexões nos arquivo de configurações do Postgres?



Em 5 de novembro de 2011 12:10, José Mello Júnior <
jose.mello.jun...@gmail.com> escreveu:

> Não sei o que acontece, mas o windows não consegue manter o Banco. Erro do
> LOG:
>
> 2011-11-05 11:03:53 BRTLOG:  could not connect socket for statistics
> collector: Invalid argument
> 2011-11-05 11:03:53 BRTLOG:  trying another address for the statistics
> collector
> 2011-11-05 11:03:56 BRTLOG:  database system was shut down at 2011-11-05
> 11:03:34 BRT
> 2011-11-05 11:03:58 BRTLOG:  could not receive data from client: Unknown
> winsock error 10061
> 2011-11-05 11:04:05 BRTLOG:  autovacuum launcher started
> 2011-11-05 11:04:07 BRTLOG:  database system is ready to accept connections
> 2011-11-05 11:04:09 BRTLOG:  could not receive data from client: Unknown
> winsock error 10061
> 2011-11-05 11:04:12 BRTLOG:  could not receive data from client: Unknown
> winsock error 10061
> Windows 7 64 - Ultimate
> Versão do Banco: 8.4
>
>
> --
> Mello Júnior
> 41.3252-3555
>
> ___
> pgbr-geral mailing list
> pgbr-geral@listas.postgresql.org.br
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>
>
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Navegar entre os registros

2011-04-11 Por tôpico Marcelo da Silva
Isso não depende do postgres e sim da aplicação que está desenvolvendo.


Marcelo Silva
-

Em 11 de abril de 2011 22:07, ERP - GERÊNCIA Gestão Empresarial <
joci...@erp-gerencia.com> escreveu:

>  Olá,
>
> 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 ?
>
> Primeiro registro:
>
> select * from tbl_cgmun
>
> where tbl_cgmun.MUNCOD > ''
>
> limit 1;
>
> registro Anterior:
>
> select * from tbl_cgmun
>
> where tbl_cgmun.MUNCOD < '0150'
>
> order by MUNCOD desc
>
> limit 1;
>
> Próximo registro:
>
> select * from tbl_cgmun
>
> where tbl_cgmun.MUNCOD > '0150'
>
> order by MUNCOD
>
> limit 1;
>
> Último registro:
>
> select * from tbl_cgmun
>
> where tbl_cgmun.MUNCOD <= ''
>
> order by MUNCOD desc
>
> limit 1
>
> Grato,
>
> Jocimar de Oliveira
>
> www.erp-gerencia.com
>
> Paraná - Região dos Campos Gerais
>
> Atuando como: Desenvolvedor de Sistemas - Profissional liberal
>
> Início das atividades: 19/mar/1989 - 21 anos
>
> Linguagem de programação: FlagShip
>
> S.O.: Linux
>
> Migrando para linguagem de programação: Java (Desktop)
>
> SGBD: PostGreSQL
>
> IDE: NetBeans 6.9.1
>
> S.O.: Linux
>
> ___
> pgbr-geral mailing list
> pgbr-geral@listas.postgresql.org.br
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>
>
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] sql formatar nome

2011-02-08 Por tôpico Marcelo da Silva
Fabrizio, muito boa sua ajuda... diga uma coisa tem alguma materia pra
podermos entender essa select por partes pra futuras implementações?

Por exemplo a parte "(a|as|os)[[:blank:]]" significa que sempre que tiver um
espaco depois de a,as,os ele vai deixas a palavra em minusculo?
Mas ai como ele vai saber que é "das, dos, de, etc"?

Interessante esse regexp_replace

Marcelo Silva
--


Em 7 de fevereiro de 2011 20:06, Fabrízio de Royes Mello <
fabriziome...@gmail.com> escreveu:

>
> Em 7 de fevereiro de 2011 18:09, Leonardo Cezar escreveu:
>
>
>> Com um pouquinho mais de criatividade e tempo dá pra resolver melhor,
>> mas é por aqui:
>>
>> SELECT regexp_replace(initcap('leonardo danubio henrique da silva dos
>> santos cezar'), '([[:upper:]])(a|as|os)[[:blank:]]', E'd\\2 ', 'g');
>>
>>   regexp_replace
>> -
>>  Leonardo Danubio Henrique da Silva dos Santos Cezar
>> (1 row)
>>
>>
>
> Só um ajuste para o caso de existir a preposição "de":
>
> postgres@bdteste=# SELECT regexp_replace(initcap('fabrizio de royes
> mello'), '([[:upper:]])(a|as|os|e)[[:blank:]]', E'd\\2 ', 'g');
>  regexp_replace
> -
>  Fabrizio de Royes Mello
> (1 row)
>
>
> Ainda tens de incrementar um pouco essa expressão regular, pois pode
> existir um nome do tipo:
>
> fulano de tal souza e silva
>
> Usando a expressão acima fica:
>
> postgres@bdteste=# SELECT regexp_replace(initcap('fulano de tal souza e
> silva'), '([[:upper:]])(a|as|os|e)[[:blank:]]', E'd\\2 ', 'g');
> regexp_replace
> -
>  Fulano de Tal Souza E Silva
> (1 row)
>
>
> Mas isso fica para tema de casa...
>
> --
> Fabrízio de Royes Mello
> >> Blog sobre TI: http://fabriziomello.blogspot.com
> >> Perfil Linkedin: http://br.linkedin.com/in/fabriziomello
>
>
> ___
> pgbr-geral mailing list
> pgbr-geral@listas.postgresql.org.br
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>
>
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] ACESSO AO ARQUIVO DE BACKUP

2011-01-21 Por tôpico Marcelo da Silva
Se estiver compactado pode tentar o WinRar Windos ou Algum que abra .gz no
Linux
Se não tiver compactado abra no WordPad ou Notepad... o notepad não guenta
arquivos muito grande, fica lento.
Mesmo com a extenção .backup ele normalmente é puro texto.


Marcelo Silva


Em 21 de janeiro de 2011 09:49, José Mello Júnior <
jose.mello.jun...@gmail.com> escreveu:

> Pessoal,
>
> Cliente armazenava BACKUP no mesmo disco em que o servidor estava
> instalado. Preciso abrir o arquivo de BACKUP pois está dando um erro de
> final de arquivo inesperado. Como descompacto esse arquivo. (Postgresql
> 8.2.15 - Windows).
>
> Obrigado
>
> --
> Mello
> 41.9957-2007
>
> ___
> pgbr-geral mailing list
> pgbr-geral@listas.postgresql.org.br
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>
>
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Alterar tabela Aberta

2010-12-19 Por tôpico Marcelo da Silva
Hum, muito interessante :)



2010/12/18 Marcal Hokama 

>
> > 
> > From: marc...@ig.com.br
> > To: pgbr-geral@listas.postgresql.org.br
> > Date: Tue, 14 Dec 2010 15:22:20 -0200
> > Subject: [pgbr-geral] Alterar tabela Aberta
> >
> > Pessoal não vou fazer comparações aqui heim, é só pra saber se posso ou
> > não posso.
> > No MySQL eu posso alterar uma tabela mesmo que esteja sendo usada, é
> > claro que não vou fazer alterações críticas como deletar uma coluna ou
> > mudar o nome ou tipo de um campo, mas adicionar um campo.
> > Por exemplo:
> >
> > ALTER TABLE vendas_recebe ADD COLUMN taxa_ban numeric(12,2) NOT NULL
> > DEFAULT 0;
> >
> > Estou adicionando uma coluna que nao pode ser nula, mas com valor
> > padrao dessa forma não pode dar erro.
> >
> > No MySQL não importa se estão usando o sistema.
> >
>
> Na verdade, no MySQL a tabela que está sendo alterada ainda pode ser
> utilizada somente para leitura por outras sessões, e as escritas podem
> sofrer "atraso", conforme [1]:
>
> "in most cases, ALTER TABLE makes a temporary copy of the original table.
> MySQL incorporates the alteration into the copy, then deletes the original
> table and renames the new one. While ALTER TABLE is executing, the original
> table is readable by other sessions. Updates and writes to the table are
> stalled until the new table is ready, and then are automatically redirected
> to the new table without any failed updates. The temporary table is created
> in the database directory of the new table. This can differ from the
> database directory of the original table for ALTER TABLE operations that
> rename the table to a different database."
>
> > Mas no Postgres percebi que ele congela o PgAdmin até que a tabela seja
> > totalmente liberada... imagino que seja porque o PgAdmin precise de
> > acesso exclusivo a tal tabela quando vai fazer alguma alteração.
> >
> > Pergunta: Existe como "burlar" isso?
> >
> > Ou seja quando eu tiver certeza de que minha alteração não causará
> > problema eu force a alteração?
> >
>
> A princípio não, conforme [2]:
>
> "ALTER TABLE cannot safely be executed concurrently with other operations
> on the same table, so it obtains an exclusive lock on the table to enforce
> that.
> (...)
> ACCESS EXCLUSIVE - Conflicts with locks of all modes (ACCESS SHARE, ROW
> SHARE, ROW EXCLUSIVE, SHARE UPDATE EXCLUSIVE, SHARE, SHARE ROW
> EXCLUSIVE,EXCLUSIVE, and ACCESS EXCLUSIVE). This mode guarantees that the
> holder is the only transaction accessing the table in any way.Acquired by
> the ALTER TABLE, DROP TABLE, TRUNCATE, REINDEX, CLUSTER, and VACUUM FULL
> commands. This is also the default lock mode for LOCK TABLE statements that
> do not specify a mode explicitly.
> Tip: Only an ACCESS EXCLUSIVE lock blocks a SELECT (without FOR
> UPDATE/SHARE) statement."
> > Marcelo Silva
> >
>
> [1] http://dev.mysql.com/doc/refman/5.1/en/alter-table.html[2]
> http://www.postgresql.org/docs/current/static/explicit-locking.html
>
> Atenciosamente,
>
> Marçal de Lima Hokamae-mail: mhokama
> @hotmail.comhttp://www.twitter.com/mhokama
>
> ___
> 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