Re: [pgbr-geral] REF. Script Silencioso - #02

2008-08-19 Por tôpico Osvaldo Rosario Kussama
Paulo escreveu:
>  
> Instalo hoje o PostgreSQL em modo silencioso no Windows, gostaria de 
> saber se existe
> um modo de executar scripts em modo silencioso, ou seja, apos instalacao
> silenciosa do banco executar os scripts de tabelas, triggers, views, etc.
>  


psql --file filename (ou -f filename)?
http://www.postgresql.org/docs/current/interactive/app-psql.html

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


Re: [pgbr-geral] erro funcao

2008-08-14 Por tôpico Osvaldo Rosario Kussama
Daniel P Lim escreveu:
> O que há de errado com essa função:
> 
> CREATE OR REPLACE FUNCTION buscar_pessoa(text)
>   RETURNS SETOF tb_pessoa AS
> $BODY$
> declare
>   texto text;
>   linha tb_pessoa%ROWTYPE;
> begin
>   texto = replace(replace(ltrim(rtrim($1)), '', ''), '', '&');
>   for linha in
> select nomecompleto from tb_pessoa
> where nomecompleto ilike ( texto)
>   loop
> return next linha;
>   end loop;
>   return;
> end
> $BODY$
>   LANGUAGE 'plpgsql' VOLATILE;
> 
> retorna o seguinte erro:
> 
> ERRO:  função que tem argumento do tipo conjunto foi chamada em um 
> contexto que não pode aceitar um conjunto
> CONTEXT:  PL/pgSQL function "buscar_pessoa" while casting return value 
> to function's return type
> 


Toda função que retorna um SETOF deve ser chamada da seguinte forma:
SELECT * FROM funcao();
já que ela pode retornar múltiplas linhas.

Verifique se é isso.

Osvaldo

PS.: Não entendi a expressão replace(ltrim(rtrim($1)), '', ''). Você 
quer substituir uma string vazia por uma string vazia ou existe um 
erro de transcrição?
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] RES: RES: RES: SUPERUSER X CREATEUSER

2008-08-14 Por tôpico Osvaldo Rosario Kussama
Alisson Viegas | Acsiv Sistemas escreveu:
> O jeito é não dar atributo createuser pra ninguém, já que o banco 
> entende como superuser.
> 
> Aí a aplicação que controlará isso. É uma pena!
> 


Uma possível solução é criar - como superusuário - uma função, com a 
opção SECURITY DEFINER [1], que crie um usuário.

Retire a permissão de execução para todo o esquema [3].

Permita que apenas o usuário desejado execute esta função [2].
GRANT EXECUTE
 ON FUNCTION funcname (...)
 TO rolename

Assim ele poderá criar novos usuários mas não terá os demais 
privilégios de um superusuário.

Veja um exemplo ao final de [1].

[1] 
http://www.postgresql.org/docs/current/interactive/sql-createfunction.html
[2] http://www.postgresql.org/docs/current/interactive/sql-grant.html
[3] http://www.postgresql.org/docs/current/interactive/sql-revoke.html

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


Re: [pgbr-geral] work_mem

2008-08-13 Por tôpico Osvaldo Rosario Kussama
Vinicius escreveu:
> 
> Qual seria o tamanho ideal de work_mem para um server com 32gb RAM.
> 


Veja as considerações do Josh Berkus em:
http://www.powerpostgresql.com/PerfList

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


Re: [pgbr-geral] RES: Hubert Lubaczewski: NULLs vs. NOT IN()

2008-08-13 Por tôpico Osvaldo Rosario Kussama
Alisson Viegas | Acsiv Sistemas escreveu:
> Ribamar, to migrando pra SGDB (sempre usei DBF).
> 
> Poderiam me explicar por quê correr dos nulos.
> 
> Sempre pensei que nulos “aliviava” a carga do banco.
> 
>  
> 
>  
> 
> At.te,
> Alisson Viegas
> [EMAIL PROTECTED]
> 
> ---
> Acsiv Sistemas
> www.acsiv.com.br 
> 
>  
> 
>  
> 
> *De:* [EMAIL PROTECTED] 
> [mailto:[EMAIL PROTECTED] *Em nome de 
> *Ribamar Sousa
> *Enviada em:* quarta-feira, 13 de agosto de 2008 12:12
> *Para:* Comunidade PostgreSQL Brasileira
> *Assunto:* Re: [pgbr-geral] Hubert Lubaczewski: NULLs vs. NOT IN()
> 
>  
> 
> 2008/8/13 Osvaldo Kussama <[EMAIL PROTECTED] 
> >
> 
> Ribamar:
> 
> Talvez seja o caso descrito no manual:
> 
> http://www.postgresql.org/docs/current/interactive/functions-subquery.html#AEN15302
> 
> "Note that if the left-hand expression yields null, or if there are no
> equal right-hand values and at least one right-hand row yields null,
> the result of the NOT IN construct will be null, not true. This is in
> accordance with SQL's normal rules for Boolean combinations of null
> values."
> 
> A combinação de NULL com NOT IN nem sempre dá o resultado que
> usualmente (bom senso?) esperamos.
> 
> Osvaldo
> 
> 
> Osvaldo, parece que isso reforça a grande recomendação dos gurus e mestre:
> 
> "Corram dos nulos!".
> 
> Mas e se o bichim correr atraz da gente? :)
> 


A idéia de NULL é algo que normalmente confunde os iniciantes em banco 
de dados.

Usualmente NULL significa algo desconhecido, algo que não tem valor.

NULL não é uma string vazia '' (uma string vazia é algo conhecido: é 
uma string de comprimento zero).

Outra grande confusão: NULL = NULL? ou NULL <> NULL?
Como NULL é algo desconhecido como posso saber se: "algo que não sei o 
que é" pode ser igual (ou diferente) de "algo que não tenho a menor 
idéia do que seja"? Por isso a resposta para qualquer destas duas 
comparações é NULL! (isto é: não sei).

E se comparar algum valor com NULL? Por ex. 10 = NULL ou 10 <> NULL? 
Também em ambos os casos o resultado é NULL.

Como saber se uma expressão é ou não NULL?
Utilize: IS [ NOT ] NULL
Assim: 10 IS NULL dá como resposta falso.

Como fazer para considerar como igual ou diferente o resultado de 
comparações envolvendo NULL?
Utilize: IS [ NOT ] DISTINCT FROM
Assim: 10 IS DISTINCT FROM NULL dá como resposta verdadeiro;
NULL IS DISTINCT FROM NULL dá como resposta falso.

E tenha muito cuidado com a utilização de IN e NOT IN.

SELECT 10 IN (10,20); ==> verdadeiro
SELECT 10 NOT IN (10,20); ==> falso
SELECT 10 IN (NULL,10,20); ==> verdadeiro
SELECT 10 NOT IN (NULL,10,20); ==> false

SELECT 30 IN (10,20); ==> falso
SELECT 30 NOT IN (10,20); ==> verdadeiro
SELECT 30 IN (NULL,10,20); ==> NULL
SELECT 30 NOT IN (NULL,10,20); ==> NULL

Se a expressão do lado esquerdo do IN (ou NOT IN) for NULL o resultado 
será sempre NULL.

Por isso sempre tome cuidado ao utilizar NULL.

Ele pode ser útil?
Sim, por ex. uma data de encerramento contendo NULL normalmente 
significa que o item ainda está ativo. É só tomar os devidos cuidados 
ao utilizá-lo.

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


Re: [pgbr-geral] Limpar Buffer no Postgresql

2008-08-12 Por tôpico Osvaldo Rosario Kussama
[EMAIL PROTECTED] escreveu:
> 
> Preciso fazer um teste em dois cenário no Postgresql, um com indices na 
> base e outro sem indices.
> Para ficar o mais confiavel possivel o teste, preciso limpar o cache.
> Teria um comando para limpar o shared buffer do banco de dados e ou 
> outros lugares que possam guardar dados em cache?
> Se eu reiniciar o Banco entre um teste e outro, funciona para limpar os 
> "caches"?
>  


Não é mais fácil atualizar as estatísticas e rodar um EXPLAIN para 
cada teste e comparar os planos de execução gerados?

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


Re: [pgbr-geral] Resultado de COUNT armazenado - tem como ?

2008-08-11 Por tôpico Osvaldo Rosario Kussama
Marcos Aurelio escreveu:
> sALLdações.
> 
> Supunhemos que se tem um tabela com 3 colunas: Nome, Descricao, 
> Instrucao. Na coluna "instrucao" tem-se armazenado (como conteudo) uma 
> instrução(string) do tipo: "select count(*) from tabelaX where condicao Y".
> 
> É possível obter-se um recordset com:
> 
> NomeDescricaoQtd
> XYZ   descricao-qualquer20
> ZYX   mais-uma-descricao  111
> KYG  e-agora-mane38
> 
> Há alguma função que "executa" uma instrucao SQL que esteja armazenada 
> como conteudo de uma coluna ?
> 
> Algo como:
> SELECT nome, descricao, funcaoExec( instrucao) as qtd
> FROM tabelaXYZ
> 



Faça uma função em PL/pgSQL, retornando SETOF, que varra os registros 
de sua tabela [2] e para cada um deles dê um EXECUTE na expressão 
contida no campo Instrucao [1] e retorne o registro montado.

[1] 
http://www.postgresql.org/docs/current/interactive/plpgsql-statements.html#PLPGSQL-STATEMENTS-EXECUTING-DYN
[2] 
http://www.postgresql.org/docs/current/interactive/plpgsql-control-structures.html#PLPGSQL-RECORDS-ITERATING

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


Re: [pgbr-geral] ALTER COLUMN como TYPE integer

2008-08-07 Por tôpico Osvaldo Rosario Kussama
Shander Lyrio escreveu:
> Osvaldo Rosario Kussama wrote:
>> bdteste=# ALTER TABLE foo ALTER COLUMN x TYPE INT4;
>> ERRO:  coluna "x" não pode ser convertida para tipo "int4"
>>
>> bdteste=# ALTER TABLE foo ALTER COLUMN x TYPE INT4 USING x::int;
>> ALTER TABLE
> 
>   Estava por fora do "using", acho que preciso estudar mais as novas 
> features.
> 


Mas esta não é nova, é da versão 8.0 de 2005!

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


Re: [pgbr-geral] ALTER COLUMN como TYPE integer

2008-08-07 Por tôpico Osvaldo Rosario Kussama
sergio santos escreveu:
> Olá pessoal
> Toda vez que crio um campo em uma tabela do tipo "character varying" e 
> no futuro, quando preciso mudar o tipo do campo para integer, o 
> PostgreSQL me retorna a seguinte mensagem:
> 
> "
> 
> *Erro de SQL:*
> 
> ERRO:  coluna "x" não pode ser convertida para tipo "pg_catalog.int4"
> 
> *Indicação de entrada :*
> ALTER TABLE teste ALTER COLUMN x TYPE integer
> 
> "
> ps. é claro que todos os dados do campo são integer
> 


Veja a cláusula "USING expression".

bdteste=# CREATE TEMP TABLE foo(x varchar);
CREATE TABLE
bdteste=# INSERT INTO foo VALUES ('11'), ('222'), ('333');
INSERT 0 3
bdteste=# SELECT * FROM foo;
   x
-
  11
  222
  333
(3 registros)

bdteste=# ALTER TABLE foo ALTER COLUMN x TYPE INT4;
ERRO:  coluna "x" não pode ser convertida para tipo "int4"

bdteste=# ALTER TABLE foo ALTER COLUMN x TYPE INT4 USING x::int;
ALTER TABLE
bdteste=# \d foo
   Tabela "pg_temp_1.foo"
  Coluna |  Tipo   | Modificadores
+-+---
  x  | integer |

bdteste=# SELECT * FROM foo;
   x
-
   11
  222
  333
(3 registros)

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


Re: [pgbr-geral] Recuperacao de dados (missao impossivel?)

2008-08-06 Por tôpico Osvaldo Rosario Kussama
Ricardo Carlini Sperandio escreveu:
> Nobres,
>  estou diante da seguinte situacao: alguem fez o "favor" de corromper
> um sistema de arquivos ext3 numa maquina virtual vmware. Pois bem,
> consegui recuperar os arquivos porem, sem a organizacao de diretorios
> e sem os nomes corretos, algo do tipo.
> #342785  #342820  #342844  #342880  #359187 ...
> Filtrando os arquivos consegui achar alguns arquivos referentes a base
> de dados do postgres (aqueles que possuem como nome o  oid da tabela).
> Abrindo um destes arquivos no vim observei que os dados que eu quero
> estao contidos nele:
> 
> [EMAIL PROTECTED]@[EMAIL PROTECTED]@[EMAIL PROTECTED]@[EMAIL 
> PROTECTED]@[EMAIL PROTECTED]@[EMAIL PROTECTED](G^W?([EMAIL PROTECTED]@[EMAIL 
> PROTECTED]@[EMAIL PROTECTED]@[EMAIL PROTECTED]@[EMAIL PROTECTED]@[EMAIL 
> PROTECTED]@[EMAIL PROTECTED]@[EMAIL PROTECTED]@[EMAIL PROTECTED]@[EMAIL 
> PROTECTED]@[EMAIL PROTECTED]@[EMAIL PROTECTED]@[EMAIL PROTECTED]@
> 2 [EMAIL PROTECTED]@[EMAIL PROTECTED]@)[EMAIL PROTECTED]@[EMAIL 
> PROTECTED]@[EMAIL PROTECTED]@[EMAIL PROTECTED]@[EMAIL PROTECTED]
> 3 [EMAIL PROTECTED]@[EMAIL PROTECTED]@[EMAIL PROTECTED]@[EMAIL 
> PROTECTED]@[EMAIL PROTECTED]@[EMAIL PROTECTED]@[EMAIL PROTECTED]@[EMAIL 
> PROTECTED]@[EMAIL PROTECTED]@^@
> 4 [EMAIL PROTECTED]@[EMAIL PROTECTED]@[EMAIL PROTECTED]@[EMAIL PROTECTED]@
> [EMAIL PROTECTED]@[EMAIL PROTECTED]@[EMAIL PROTECTED]@[EMAIL 
> PROTECTED]@[EMAIL PROTECTED]@   [EMAIL PROTECTED]@^@
> [EMAIL PROTECTED]@[EMAIL PROTECTED]@[EMAIL PROTECTED]@[EMAIL PROTECTED]  
> [EMAIL PROTECTED]@[EMAIL PROTECTED]   [EMAIL PROTECTED]@[EMAIL 
> PROTECTED]@0
> [EMAIL PROTECTED]@[EMAIL PROTECTED]@[EMAIL PROTECTED]@[EMAIL 
> PROTECTED]@[EMAIL PROTECTED]@[EMAIL PROTECTED]@[EMAIL PROTECTED]@31  [EMAIL 
> PROTECTED]@[EMAIL PROTECTED]
> [EMAIL PROTECTED]@[EMAIL PROTECTED]@[EMAIL PROTECTED]@\[T,[EMAIL 
> PROTECTED]@[EMAIL PROTECTED]@([EMAIL PROTECTED]@[EMAIL PROTECTED]@[EMAIL 
> PROTECTED]@^Z^@   [EMAIL PROTECTED]@`
> 
> nesse caso sao: 250089 3132911597 etc...
> 
> ou seja, onde consigo achar a relacao entre o padrao da tabela e o
> formato binario do arquivo em questao? (que ai um script perl
> resolveria facil minha questao...)
> 
> 


Veja se dá alguma luz:
http://www.postgresql.org/docs/current/interactive/storage.html

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


Re: [pgbr-geral] Quando usar? REAL, DOUBLE PRECISION e NUMERIC

2008-08-06 Por tôpico Osvaldo Rosario Kussama
Paulo escreveu:
> Gostaria de saber ser voces conhecem algum ODBC Postgresql e NATURAL/ADABAS
> 


Por favor não sequestre mensagens, você bagunça o histórico.
Siga a regra: assunto novo, uma nova mensagem.

Das 'Regras das Listas de Discussão" em:
http://www.postgresql.org.br/RegrasLista
"histórico da lista. Eu já repeti isso aqui algumas vezes e outras 
pessoas também. É um novo assunto então crie um assunto (e-mail) novo. 
Criar um assunto novo não quer dizer clicar em 'Responder' (aka 
Reply), apagar o assunto antigo e escrever um novo; isso não remove o 
vínculo deste e-mail com o antigo. Para que tenhamos um bom histórico, 
não faça isso; "

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


Re: [pgbr-geral] converter Character Sets

2008-08-06 Por tôpico Osvaldo Rosario Kussama
Mr J.L. escreveu:
> 
> Me deparei com uma base LATIN1 e preciso converte-la para LATIN9. Peguei o 
> arquivo de dump da LATIN1 e editei (com vi):
> 
> SET client_encoding = 'LATIN1';
> 
> para 
> 
> SET client_encoding = 'LATIN9';
> 
> É correto fazer isso?
> 
> Aparentemente deu certo, só nao sei se ess tipo de alteracao pode gerar algum 
> problema.
> Alguem poderia me ajudar?
> 


Se você já tem o arquivo então pode utilizar o iconv:
man iconv

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


Re: [pgbr-geral] ODBC

2008-08-06 Por tôpico Osvaldo Rosario Kussama
Aldo Prosol escreveu:
>  
> E u tenho um campo dentro de uma tabela timestamp with time zone, qual é 
> a função e eu uso para fazer a comparação com a data sem o time
> ex:
> eu quero visualizar todos os registros com data = '06/08/2008'
>  


Por favor não sequestre uma mensagem, você bagunça o histórico.
Sua mensagem não tem nada a ver com ODBC.
Siga regra: assunto novo, uma nova mensagem (não dê reply).

Quanto a sua dúvida você pode, por ex.:
- usar data_trunc(): date_trunc('day', seu_timestamp) = 
to_date('06/08/2008', 'DD/MM/')
http://www.postgresql.org/docs/current/interactive/functions-datetime.html#FUNCTIONS-DATETIME-TRUNC
- usar cast: seu_timestamp::date = '2008-8-6'::date
Veja 4.2.8. Type Casts em:
http://www.postgresql.org/docs/8.3/interactive/sql-expressions.html

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


Re: [pgbr-geral] Quando usar? REAL, DOUBLE PRECISION e NUMERIC

2008-08-05 Por tôpico Osvaldo Rosario Kussama
William Leite Araújo escreveu:
> 2008/7/30 Shander Lyrio <[EMAIL PROTECTED] 
> >
> 
> 
> (...)
>Eu acredito que numeric deva ser utilizando sempre que se
> precisar de
> um campo do tipo numeric. Nunca vi nem ouvi esta história de  quantidade
> de registros. Se você precisa fazer conversão é provavel que sua
> modelagem inicial tenha sido errada e nada tem haver com o tipo numeric
> em si.
> 
> 
> Esquecí de mencionar. A conversão inicial era de tabelas em DBF (clipper).
>  
> 
> (...)
>Amigo, mágica não existe. Certamente existe outra coisa erra
> nos tais
> "procedimentos" e não é o uso de numeric que causou este problema. Eu
> uso extensivamente peso, cubagem e preços com numeric em tabelas com
> muito mais registros do que o que você cita e nunca vi nada de anormal.
> 
> 
>Várias consultas sucessivas usando campo com o tipo "NUMERIC" e 
> nenhuma mágica ou magia negra ou qualquer outro modo obscuro da "força". 
> Apenas falta de atenção e pressa na execução de uma tarefa que me tomou 
> mais de um mês!
>  
> 
> 
>Vamos tomar cuidado com este tipo de afirmação categórica na
> lista sem
> nenhum embasamento científico para evitar que colegas que cairam no
> PostGreSql de paraquedas e ainda estão iniciando seus estudos achem que
> isto é uma regra.
> 
> 
>  Minha intenção é assustar mesmo. Fiquei pasmo quando isso aconteceu 
> e, caso tivesse tomado mais cuidado, certamente não teria perdido tanto 
> tempo acertando os procedimentos (óbvio que os testes da migração eram 
> feitos em uma base pequena, mas mesmo nelas, ao invés de receber o erro 
> em 30 segundos o mesmo demorava mais de 3 minutos...)
>  
> 
> 
>É muito mais fácil o seu "procedimento específico" ter sido
> executado
> de forma pouco performática por qualquer outra limitação de ambiente do
> que o PostGreSql manter um tipo de dados que não deveria ser usado pois
> apresenta performance 600 vezes menor que outro.
> 
> 
>  Não há nada de especial. Apenas consultas sucessivas a tabelas cuja 
> "constante" de comparação (no caso os valores [NEW].[coluna] que eram do 
> tipo NUMERIC.
>  
> 
>  
>Dados científicos, paupáveis e replicáveis para embasar esta
> recomendação??
> 
> 
>  Infelizmente não posso divulgar, mas posso mostrar um exemplo numa 
> base qualquer.
>  
> #select count(1) from xmls_logs;
>  count
> ---
>   6159
> (1 registro)
> 
> #select 1 from xmls_logs where xml_id = '534'::numeric;
>  ?column?
> --
> 1
> (1 registro)
> 
> *Tempo: 35,081 ms*
> 
> # select 1 from xmls_logs where xml_id = '534';
>  ?column?
> --
> 1
> (1 registro)
> 
> *Tempo: 1,456 ms*
> 
> Isso numa tabela de 6156 registros...
> 


William:

Só para fins de esclarecimento: Você pode rodar as duas consultas 
acima mas em ordem invertida? Isso é:
Primeiro: select 1 from xmls_logs where xml_id = '534';
e logo depois: select 1 from xmls_logs where xml_id = '534'::numeric;
e reportar os tempos obtidos?

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


Re: [pgbr-geral] Quando usar? REAL, DOUBLE PRECISION e NUMERIC

2008-08-05 Por tôpico Osvaldo Rosario Kussama
William Leite Araújo escreveu:
> 2008/7/30 Shander Lyrio <[EMAIL PROTECTED] 
> >
> 
> 
> (...)
>Eu acredito que numeric deva ser utilizando sempre que se
> precisar de
> um campo do tipo numeric. Nunca vi nem ouvi esta história de  quantidade
> de registros. Se você precisa fazer conversão é provavel que sua
> modelagem inicial tenha sido errada e nada tem haver com o tipo numeric
> em si.
> 
> 
> Esquecí de mencionar. A conversão inicial era de tabelas em DBF (clipper).
>  
> 
> (...)
>Amigo, mágica não existe. Certamente existe outra coisa erra
> nos tais
> "procedimentos" e não é o uso de numeric que causou este problema. Eu
> uso extensivamente peso, cubagem e preços com numeric em tabelas com
> muito mais registros do que o que você cita e nunca vi nada de anormal.
> 
> 
>Várias consultas sucessivas usando campo com o tipo "NUMERIC" e 
> nenhuma mágica ou magia negra ou qualquer outro modo obscuro da "força". 
> Apenas falta de atenção e pressa na execução de uma tarefa que me tomou 
> mais de um mês!
>  
> 
> 
>Vamos tomar cuidado com este tipo de afirmação categórica na
> lista sem
> nenhum embasamento científico para evitar que colegas que cairam no
> PostGreSql de paraquedas e ainda estão iniciando seus estudos achem que
> isto é uma regra.
> 
> 
>  Minha intenção é assustar mesmo. Fiquei pasmo quando isso aconteceu 
> e, caso tivesse tomado mais cuidado, certamente não teria perdido tanto 
> tempo acertando os procedimentos (óbvio que os testes da migração eram 
> feitos em uma base pequena, mas mesmo nelas, ao invés de receber o erro 
> em 30 segundos o mesmo demorava mais de 3 minutos...)
>  
> 
> 
>É muito mais fácil o seu "procedimento específico" ter sido
> executado
> de forma pouco performática por qualquer outra limitação de ambiente do
> que o PostGreSql manter um tipo de dados que não deveria ser usado pois
> apresenta performance 600 vezes menor que outro.
> 
> 
>  Não há nada de especial. Apenas consultas sucessivas a tabelas cuja 
> "constante" de comparação (no caso os valores [NEW].[coluna] que eram do 
> tipo NUMERIC.
>  
> 
>  
>Dados científicos, paupáveis e replicáveis para embasar esta
> recomendação??
> 
> 
>  Infelizmente não posso divulgar, mas posso mostrar um exemplo numa 
> base qualquer.
>  
> #select count(1) from xmls_logs;
>  count
> ---
>   6159
> (1 registro)
> 
> #select 1 from xmls_logs where xml_id = '534'::numeric;
>  ?column?
> --
> 1
> (1 registro)
> 
> *Tempo: 35,081 ms*
> 
> # select 1 from xmls_logs where xml_id = '534';
>  ?column?
> --
> 1
> (1 registro)
> 
> *Tempo: 1,456 ms*
> 
> Isso numa tabela de 6156 registros...
> 


William:

Só para fins de esclarecimento: Você pode rodar as duas consultas 
acima mas em ordem invertida? Isso é:
Primeiro: select 1 from xmls_logs where xml_id = '534';
e logo depois: select 1 from xmls_logs where xml_id = '534'::numeric;
e reportar os tempos obtidos?

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


Re: [pgbr-geral] ODBC POSTGRESQL LINUX!!!

2008-08-01 Por tôpico Osvaldo Rosario Kussama
Rafael Melo escreveu:
> 
> Na verdade eu já consegui instalar o postgresql... acesso ele... criei as
> tabelas nele...
> 
> O QUE EU PRECISO É FAZER UMA CONEXÃO ODBC para utilizar uma aplicação que só
> se comunica com um banco através de ODBC...
> 
> Como configurar uma ODBC???
> 


Veja se ajuda:
http://pt.wikibooks.org/wiki/PostgreSQL_Pr%C3%A1tico/Conectividade

Verifique se você está permitindo conexões no pg_hba.conf e no 
postgresql.conf. Se não souber pra que servem estes arquivos leia:
http://icewall.org/~hjort/pgsql/naoconecta.htm

Osvaldo
___
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 restore + utf8

2008-08-01 Por tôpico Osvaldo Rosario Kussama
Mr J.L. escreveu:
> 
> Realizei um dump em uma base utf8 e versao 8.2 (linux) do seguinte modo:
> 
> # pg_dump -F c -Z 9 BD
> 
> Eu fiz o restore de desse dump em uma base latin9 (na versao 8.2 e 8.3, fiz 
> em duas versoes diferentes) e automaticamente ja fez as alteraçoes nos 
> caracteres especiais (ç,^,~, entre outros).
> 
> Gostaria de saber se o restore automaticamente sempre faz essas alteracoes? 
> 
> Sempre que eu restaurar minha um banco de um determinado encoding em um 
> encoding diferente do banco original vai fazer essa alteracoa automatica?
> 



O pg_dump gera um SET client_encoding para o encoding utilizado (no 
caso utf8) logo no início do arquivo e, portanto, no restore ele fará 
a conversão (desde que seja uma conversão existente).
Veja a tabela das conversões possíveis em:
http://www.postgresql.org/docs/current/interactive/multibyte.html#AEN27466

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


Re: [pgbr-geral] [INICIANTE] Executar função P L.

2008-07-31 Por tôpico Osvaldo Rosario Kussama
Leandro Hamid escreveu:
> 
> 2008/7/31 Osvaldo Rosario Kussama <[EMAIL PROTECTED] 
> <mailto:[EMAIL PROTECTED]>>
> 
> Leandro Hamid escreveu:
>  >
>  > Sou novato na lista e estou iniciando os meus estudos relacionados ao
>  > PostgreSQL ,estou estudando a linguagem procedural PL/PgSQL e tenho
>  > algumas dúvidas que são as seguintes;
>  >
>  > - Para executar uma função eu teria que escreve-la no próprio psql e
>  > depois executa-la a partir de um SELECT, eu não tenho como
> escrever esta
>  > função em um editor de texto qualquer e chamar esta função o psql?
>  >
> 
> Sim, você pode escrever sua função no editor de sua preferência,
> gravar e incluí-la no psql através do comando:
> /i nome_do_arquivo
> 
> 
> Para tal procedimento eu tenho que passar o diretório onde se encontra o 
> arquivo?
> 
> /i /diretório/nome_do_arquivo
> 


Sim

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


Re: [pgbr-geral] [INICIANTE] Executar função P L.

2008-07-31 Por tôpico Osvaldo Rosario Kussama
Leandro Hamid escreveu:
> 
> Sou novato na lista e estou iniciando os meus estudos relacionados ao 
> PostgreSQL ,estou estudando a linguagem procedural PL/PgSQL e tenho 
> algumas dúvidas que são as seguintes;
> 
> - Para executar uma função eu teria que escreve-la no próprio psql e 
> depois executa-la a partir de um SELECT, eu não tenho como escrever esta 
> função em um editor de texto qualquer e chamar esta função o psql?
> 

Sim, você pode escrever sua função no editor de sua preferência, 
gravar e incluí-la no psql através do comando:
/i nome_do_arquivo


> - Qual é o procedimento mais adequado para executar uma função escrita 
> em qualquer linguagem procedural?
> 

Caso sua função retorne um conjunto de registros (setof) então use:
SELECT * FROM sua_funcao(parâmetros...);
Caso contrário utilize:
SELECT sua_funcao(parâmetros...);

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

2008-07-31 Por tôpico Osvaldo Rosario Kussama
Mr J.L. escreveu:
> 
> Como faço para fazer um dump de um servidor remoto. 
> Por exemplo: 
> Estou na maquina 10.0.0.1 que pode acessar a maquina 201.0.100.2
> Eu preciso do dump de um banco que esta na maquina 201.0.100.2. como faço 
> isso remotamente?
> 


O pg_dump é uma aplicação cliente, veja:
http://www.postgresql.org/docs/current/interactive/app-pgdump.html

é só você informar, além dos parâmetros usuais, onde está a base:
--host=host
--port=port
--username=username
--password

Osvaldo
___
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 conversão de data

2008-07-30 Por tôpico Osvaldo Rosario Kussama
Rudinei Dias escreveu:
> Olá a todos.
> 
> Estou com uma dificuldade de achar como uma convesão está sendo 
> executada no banco.
> O sistema que estou estudando (moodle) armazena todas as datas em campos 
> tipo int8.
> Não consigo descobrir como converter novamente "isso" para data. Não 
> achei uma referência ao formato.
> Para ter uma idéia, 1219633200 equivale a 25/08/2008.
> 
> Alguma idéia?
> 


Sim, Unix epoch:

bdteste=# SELECT EXTRACT(EPOCH FROM TIMESTAMP WITH TIME ZONE 
'2008-08-25');
  date_part

  1219633200
(1 registro)

bdteste=# SELECT to_timestamp(1219633200);
   to_timestamp

  2008-08-25 00:00:00-03
(1 registro)

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


Re: [pgbr-geral] Dúvida Função

2008-07-30 Por tôpico Osvaldo Rosario Kussama
Fernando Brombatti escreveu:
> O TO_NUMBER me pareceu mais "transparente". 
> 


O problema com a to_number() é o tamanho da string com 9s que você é 
obrigado a colocar: ela precisa ter o mesmo tamanho da string original 
caso contrário pode não considerar todos os algarismos existentes.

É contornável mas a expressão fica mais complexa:

bdteste=# SELECT to_number('AB345CD234','9');
  to_number
---
345
(1 registro)

bdteste=# SELECT to_number('AB345CD234','');
  to_number
---
   3452
(1 registro)

bdteste=# SELECT to_number('AB345CD234','99');
  to_number
---
 345234
(1 registro)


bdteste=# \set foo '\'AB3,45CD#xz234\''
bdteste=# SELECT to_number(:foo,repeat('9', length(:foo)));
  to_number
---
 345234
(1 registro)

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


Re: [pgbr-geral] Dúvida Função

2008-07-30 Por tôpico Osvaldo Rosario Kussama
Shander Lyrio escreveu:
> Fernando Brombatti wrote:
>> Alguém já usou função para extrair números de uma string?
>>
>> Ex.: AB345CD234  => 345234
> 
> 
> lista=# select regexp_replace('AB345CD234', '[A-Z]', '','g');
>   regexp_replace
> 
>   345234
> (1 row)
> 


Complementando a resposta do Shander:

Caso sua string possa conter outros caracteres não numéricos, além das 
letras [A-Z], o uso de '[^[:digit:]]' é mais abrangente.
http://www.postgresql.org/docs/current/interactive/functions-matching.html#FUNCTIONS-POSIX-REGEXP

bdteste=# SELECT regexp_replace('AB3,45CD/xz234', '[^[:digit:]]', '', 
'g');
  regexp_replace

  345234
(1 registro)


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


Re: [pgbr-geral] Dúvida Função

2008-07-30 Por tôpico Osvaldo Rosario Kussama
Fernando Brombatti escreveu:
> Alguém já usou função para extrair números de uma string?
> 
> Ex.: AB345CD234  => 345234
> 


to_number()?
http://www.postgresql.org/docs/current/interactive/functions-formatting.html

bdteste=# SELECT to_number('AB345CD234','99');
  to_number
---
 345234
(1 registro)

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


Re: [pgbr-geral] Replicação de dados

2008-07-29 Por tôpico Osvaldo Rosario Kussama
Junin escreveu:
> Saudações Galera,
> 
> Gostaria de replicar meus dados de algumas tabelas em outro servidor,
> é possível?
> Se possível, mandar material
> 


Comece por aqui:
http://www.postgresql.org/docs/current/interactive/high-availability.html

Osvaldo

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


Re: [pgbr-geral] PostgreSQL, Discos e Cia

2008-07-28 Por tôpico Osvaldo Rosario Kussama
Rubens Jose Rodrigues escreveu:
> 
> Ótimo texto, porém vamos corrigir alguns erros na ortografia :
> 
> a) Sub-Título RAID, 10ª linha, elimine o espaço deixado na palavra 
> "concomitant emente".
> b) Sub-Título DISCOS, 7ª linha, corrija a palavra "fibre" por "fiber" de 
> "fiber channel".

Mas creio que o Fábio quis dizer "fibre channel" mesmo. Veja:
http://en.wikipedia.org/wiki/Fibre_channel


> 
> Como sempre, generoso em seus textos, a coerência associada com a 
> razoabilidade ajuda e muito, e este texto pode orientar exatamente quem 
> precisa.
> 



Fábio:
Obrigado e parabéns pelo artigo.

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

2008-07-25 Por tôpico Osvaldo Rosario Kussama
Brasil Software escreveu:
> Pessoal apareceu uma tabela estranha no db "sql_parts" alguem sabe me 
> dizer se é tabela de sistema do postgresql.
> 


A tabela sql_parts faz parte do Information Schema. Veja:
http://www.postgresql.org/docs/current/interactive/infoschema-sql-parts.html

Osvaldo
PS. Não sequestre uma mensagem para iniciar um novo assunto, você 
bagunça o histórico.
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] REFERENCIA EM BANCO DE DADOS DE HOSTS DIFERENTES

2008-07-23 Por tôpico Osvaldo Rosario Kussama
Junin escreveu:
> 
> Existe a possibilidade de ter dois bancos em máquinas diferentes e
> fazer referencia(FOREIGN KEY)?
> 


Não é possível fazer uma referência a uma tabela em um banco de dados 
para outro banco de dados (foreign key) nem na mesma máquina.
No PostgreSQL os bancos de dados são estanques, para separar dados e 
ainda assim poder relacioná-los a solução é utilizar diferentes 
esquemas em um único banco de dados. Veja:
http://www.postgresql.org/docs/current/interactive/ddl-schemas.html

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


Re: [pgbr-geral] Instalação do Postgres 7.4 no W in 2008 Server(Sebastian SWC)

2008-07-23 Por tôpico Osvaldo Rosario Kussama
Brasil Software escreveu:
> 
> Tenho o seguinte problema: Utilizava o firebird com WIN1252 e a ordem de 
> saida ficava do jeito que o usuario digitava mais convertir a mesma base 
> para postgresql 8.2 com latin1 e a ordem passou a ser por codigo do item.
> 
> tem algum jeito de mudar isso.
> 

Em primeiro lugar: sua pergunta tem alguma coisa a ver com o assunto 
(Instalação do Postgres 7.4 no Win 2008 Server)?

O postgreSQL só garante alguma ordem dos registros recuperados se você 
utilizar a cláusua ORDER BY em seu SELECT (não existe uma "ordem em 
que o usuário digita").

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


Re: [pgbr-geral] Instalação do Postgres 7.4 no W in 2008 Server

2008-07-23 Por tôpico Osvaldo Rosario Kussama
Rogerio Grando escreveu:
>> Sei que é uma versão antiga, mas a aplicação em que trabalho esta
>> homologada
>> apenas
>> para a versão 7.4, existe um processo para realizar esse upgrad que
>> espero
>> terminar em breve,
>> enquanto isso tenho que instalar a 7.4 mesmo em nossos clientes.
>> Obrigado Osvaldo.
> 
> (Shander Lyrio);
> Acho que essa opinião não é apenas sua, ja cheguei a argumentar sobre essa 
> questão do cygwin com eles em uma ligação a muito tempo atras e não fui bem 
> recebido.
> 
> (Osvaldo)
> Perguntar para eles eu estava deixando em ultimo caso, ja que tem uma gama 
> de profissionais na lista, mas não tenho muito o que fazer.
> Tendo ou não uma solução para esse problema eu posto aqui na lista.
> 


Creio que, com eventuais raríssimas excessões, a (quase) totalidade 
das pessoas que utilizavam o PostgreSQL no ambiente MS-Windows 
passaram a utilizar a versão nativa desde o lançamento da versão 8.0 
em Jan/2005. Por isso creio que será mais fácil a dbExperts ajudá-lo. 
Seu problema me parece ser de compatibilidade da versão da dbExperts 
com o MS-Windows Server 2008.

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


Re: [pgbr-geral] Instalação do Postgres 7.4 no W in 2008 Server(Sebastian SWC)

2008-07-21 Por tôpico Osvaldo Rosario Kussama
Rogerio Grando escreveu:
>>> Sei que é uma versão antiga, mas a aplicação em que trabalho esta 
>>> homologada
>>> apenas
>>> para a versão 7.4, existe um processo para realizar esse upgrad que 
>>> espero
>>> terminar em breve,
>>> enquanto isso tenho que instalar a 7.4 mesmo em nossos clientes.
>>> Obrigado Osvaldo.
> 
>> Você não tentou instalar o cygwin[1]? antigamente era o único jeito de
>> instalar o postgres no windows[2]. o suporte nativo do banco ao
>> windows veio só na versão 8.0.
> 
> Oi Sebastian SWC,
> É que a versão que utilizamos para nossos clientes windows é uma versão paga 
> desenvolvida pela dbExperts, temos uma licença na empresa e esta vamos 
> fazendo testes no Win 2008 Server.
> Obrigado pela dica, se não descobrir o problema, essa vai ser uma opção.
> 



Mas se vocês compraram da dbExperts eles não deveriam dar o suporte 
para este problema que, me parece, ser um problema específico da 
versão deles. Talvez exista uma incompatibilidade com o Windows 2008 
Server por este ser muito posterior. A versão deles funcionava no 
Windows NT.

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


Re: [pgbr-geral] Qual software eu uso para uma locadora de video usando o postgresql?

2008-07-18 Por tôpico Osvaldo Rosario Kussama
Leonardo Vilar escreveu:
> Pc Abrantes wrote:
>> tbm naum entendi cara... vc poderia explicar melhor?
>>
> qual software eu poderia usar para que o cliente onde eu instalei o 
> banco de dados possa usar este banco de dados?
> 


psql? PgAdmin?
rs, rs, rsss...

Fica dificil responder se você não for claro. A princípio o PostgreSQL 
não é uma ferramenta para usuários finais, você deve desenvolver sua 
aplicação em C, C++, Python, Java, Visual Basic, PHP, Perl ect - que 
ela sim, utilizará o PostgreSQL - e disponibilizá-la para seu cliente.


Osvaldo

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


Re: [pgbr-geral] Chave estrangeira

2008-07-17 Por tôpico Osvaldo Rosario Kussama
sergio santos escreveu:
> 
> Existe a possibilidade de uma tabela 'x' receber 2 chaves estrangeiras 
> de uma mesma tabela 'y'?
> 

Sim.
Defina bem qual o papel de cada uma delas (o que cada uma está 
relacionando), por ex. em uma única tabela "pessoas" você pode ter as 
chaves estrangeiras "pai" e "mãe".

Osvaldo


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


Re: [pgbr-geral] Um registro, vários valores (n ão sei um bom nome pra isso)

2008-07-17 Por tôpico Osvaldo Rosario Kussama
William Leite Araújo escreveu:
>Na verdade você não precisaria de nenhum /contrib/ para executar 
> essa operação.
> http://www.postgresql.org/docs/8.3/interactive/sql-createaggregate.html
> 
>Bastaria criar uma função de /agregação/ para concatenar os 
> valores. Um exemplo:
> 
> *CREATE AGGREGATE* txtcat(sfunc=textcat, basetype=text,stype=text);
> 
> *SELECT* c.name  as "NomeCarta", 
> trim(txtcat(*COALESCE*(d.name ||', ',''))', ') as "Cores"
>*FROM* cards c *JOIN* colors_for_cards cc on( c.code= cc.cards) 
> *JOIN* colors d on (cc.colors = d.code))
>*GROUP BY* c.code
> 


Nessa linha considero mais interessante, e mais genérico, o exemplo 
array_accum.
http://www.postgresql.org/docs/current/interactive/xaggr.html

CREATE AGGREGATE array_accum (anyelement)
(
 sfunc = array_append,
 stype = anyarray,
 initcond = '{}'
);

SELECT attrelid::regclass, array_accum(attname)
 FROM pg_attribute
 WHERE attnum > 0 AND attrelid = 'pg_tablespace'::regclass
 GROUP BY attrelid;

attrelid|  array_accum
---+---
  pg_tablespace | {spcname,spcowner,spclocation,spcacl}
(1 row)

SELECT attrelid::regclass, array_accum(atttypid)
 FROM pg_attribute
 WHERE attnum > 0 AND attrelid = 'pg_tablespace'::regclass
 GROUP BY attrelid;

attrelid|   array_accum
---+-
  pg_tablespace | {19,26,25,1034}
(1 row)

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


Re: [pgbr-geral] Um registro, vários valores (n ão sei um bom nome pra isso)

2008-07-16 Por tôpico Osvaldo Rosario Kussama
Osvaldo Kussama escreveu:
> Em 15/07/08, Xisberto<[EMAIL PROTECTED]> escreveu:
>> Olá a todos.
>>
>> Tenho pouca experiência com SQL em geral, estou querendo aprender. Acabei de
>> entrar na lista porque não consigo realizar uma consulta. Não sei nem como
>> procuro no google pela solução do problema (não sei que palavras-chave
>> usar).
>>
>> Explicando melhor:
>>
>> Estou fazendo um banco para catalogar coleções de cartas de um jogo. Neste
>> jogo existem 5 cores e cada carta pode ter entre 0 e 5 cores. Para
>> representar isso, após alguma pesquisa, fiz 3 tabelas:
>>
>> _
>> mtg_collection=# \d cards
>> Table "public.cards"
>>Column   |  Type  |  Modifiers
>> ++--
>>  code   | integer| not null default
>> nextval('cards_code_seq'::regclass)
>>  name   | character varying(100) | not null
>>  portuguese | character varying(100) |
>> Indexes:
>> "cards_pkey" PRIMARY KEY, btree (code)
>> "cards_name_key" UNIQUE, btree (name)
>> "cards_portuguese_key" UNIQUE, btree (portuguese)
>>
>> _
>> mtg_collection=# \d colors
>>Table "public.colors"
>>Column   | Type  |   Modifiers
>> +---+---
>>  code   | integer   | not null default
>> nextval('colors_code_seq'::regclass)
>>  name   | character varying(15) | not null
>>  portuguese | character varying(15) | not null
>> Indexes:
>> "colors_pkey" PRIMARY KEY, btree (code)
>> "colors_name_key" UNIQUE, btree (name)
>> "colors_portuguese_key" UNIQUE, btree (portuguese)
>>
>> _
>> mtg_collection=# \d colors_for_card
>>   Table "public.colors_for_card"
>>  Column |  Type   |   Modifiers
>> +-+---
>>  code   | integer | not null default
>> nextval('color_for_card_code_seq'::regclass)
>>  color  | integer |
>>  card   | integer |
>> Indexes:
>> "color_for_card_pkey" PRIMARY KEY, btree (code)
>> Foreign-key constraints:
>> "color_for_card_card_fkey" FOREIGN KEY (card) REFERENCES cards(code)
>> "color_for_card_color_fkey" FOREIGN KEY (color) REFERENCES colors(code)
>>
>> Esta terceira tabela serve para relacionar as duas principais. Eu gostaria
>> de saber se existe como em uma única consulta sql retornar cara carta em uma
>> linha, listando todas as cores dela.
>>
>> Não precisa escrever o select aqui, gostaria de sugestões de sintaxe a usar
>> e de onde pesquisar sobre sintaxe sql.
>>
> 
> 
> Dê uma olhada no módulo contrib/tablefunc.
> Creio que a função crosstab é exatamente o que procura.
> http://www.postgresql.org/docs/8.3/interactive/tablefunc.html
> 


Complementando:
Aproveitando o mote da discussão sobre a preferência que se deve dar
ao uso de chaves naturais nas tabelas pergunto:
Por que utilizar estas chaves artificiais nestas tabelas?
Seu uso fornece algum ganho ou será justamente o contrário, isto é, 
apenas irão complicar suas queries?

Osvaldo

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


Re: [pgbr-geral] Criação de tabela - PostgreeSQL 8 .2

2008-07-16 Por tôpico Osvaldo Rosario Kussama
Marcondes Alexandre escreveu:
> Srs, criei uma tabela conforme abaixo e os campos estão com aspas, como 
> faço para retirá-los.
> 


Primeiro veja qual é a diferença quando você utiliza aspas em:
http://pgdocptbr.sourceforge.net/pg80/sql-syntax.html#SQL-SYNTAX-IDENTIFIERS

"Os identificadores e as palavras chave não fazem distinção entre 
letras maiúsculas e minúsculas. Portanto,

UPDATE MINHA_TABELA SET A = 5;

pode ser escrito de forma equivalente como

uPDaTE minha_tabela SeT a = 5;

Normalmente utiliza-se a convenção de escrever as palavras chave em 
letras maiúsculas e os nomes em letras minúsculas, como mostrado abaixo:

UPDATE minha_tabela SET a = 5;

Existe um segundo tipo de identificador: o identificador delimitado ou 
identificador entre aspas, formado pela colocação de uma seqüência 
arbitrária de caracteres entre aspas ("). Um identificador delimitado 
é sempre um identificador, e nunca uma palavra chave. Portanto, 
"select" pode ser usado para fazer referência a uma tabela ou coluna 
chamada "select", enquanto select sem aspas sempre é uma palavra chave 
ocasionando, por isso, um erro do analisador quando usado onde um nome 
de tabela ou de coluna for esperado. O exemplo acima pode ser 
reescrito utilizando identificadores entre aspas como mostrado abaixo:

UPDATE "minha_tabela" SET "a" = 5;

Identificadores entre aspas podem conter qualquer caractere que não 
seja a própria aspas (Para incluir uma aspas, devem ser escritas duas 
aspas). Esta funcionalidade permite criar nomes de tabelas e de 
colunas que não seriam possíveis de outra forma, como os contendo 
espaços ou e-comercial (&). O limite do comprimento ainda se aplica.

Colocar um identificador entre aspas torna diferente as letras 
maiúsculas e minúsculas, enquanto as letras dos nomes não envoltos por 
aspas são sempre convertidas em minúsculas. Por exemplo, os 
identificadores FOO, foo e "foo" são considerados o mesmo 
identificador pelo PostgreSQL, mas "Foo" e "FOO" são diferentes dos 
três primeiros e entre si."

Agora para alterar seu identificador delimitado ou identificador entre 
aspas para um identificador comum creio que a maneira mais fácil seja 
você fazer um pg_dumpall:

pg_dumpall --schema-only --username=username > filename

http://pgdocptbr.sourceforge.net/pg80/app-pg-dumpall.html

Edite o arquivo filename e remova as aspas de seus identificadores.

Regarregue seu banco:

psql -f filename template1

Presumindo que seu banco ainda não tenha dados, se, por acaso, já 
tiver dados carregados não utilize a opção --schema-only.

Osvaldo

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


Re: [pgbr-geral] Dúvida no acesso ao PostgreeSQL 8 .2

2008-07-15 Por tôpico Osvaldo Rosario Kussama
Marcondes Alexandre escreveu:
> Ocorreu o seguinte erro na autenticação com o banco de dados Postgre.
> 
>  
> 
> org.postgresql.util.PSQLException: FATAL: no pg_hba.conf entry for host 
> "192.168.200.10", user "usapc", database "sapc", SSL off
> 


Edite o arquivo pg_hba.conf e inclua uma entrada que contemple o 
acesso que deseja fazer.

host: "192.168.200.10"
user "usapc"
database "sapc"
SSL off

Mais detalhes em:
http://www.postgresql.org/docs/current/interactive/auth-pg-hba-conf.html

Verifique também se o postgresql.conf foi alterado para permitir 
conexões de outras máquinas. Veja o parâmetro listen_addresses em:
http://www.postgresql.org/docs/current/interactive/runtime-config-connection.html#RUNTIME-CONFIG-CONNECTION-SETTINGS

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


Re: [pgbr-geral] Carga de base, com estados e munic ípios

2008-07-11 Por tôpico Osvaldo Rosario Kussama
Guilherme Carvalho escreveu:
> 
> Alguém da lista pode indicar um local onde eu possa pegar um script de 
> carga para estados e municípios?
> 

IBGE, veja:
http://www.ibge.gov.br/cidadesat/default.php
ou
http://www.sidra.ibge.gov.br/bda/territorio/azmenu.asp?z=t&o=4

Osvaldo

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


Re: [pgbr-geral] Obtendo informações para Monitora mento

2008-07-10 Por tôpico Osvaldo Rosario Kussama
Enio escreveu:
> 
> No PostgreSQL exite alguma view que se consegue ver , quando foi 
> feito o ultimo VACUUM, AUTO VACUUM, REINDEX E O ULTIMO BACKUP FISICO DOS 
> BANCOS ?
> 


pg_catalog.pg_stat_all_tables
tem: last_vacuum, last_autovacuum, last_analyze e last_autoanalyze

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

2008-07-10 Por tôpico Osvaldo Rosario Kussama
Wagner Bonfiglio escreveu:
> Olá...
> 
> Estou tentando fazer uma VIEW que seja equivalente a:
> 
> select rowid from rfc.trivias where rowid not in (select idtrivia from
> rfc.triviavotos where idclien = 8382);
> 
> só que gostaria de deixar o "idclien" variável né, não fixo.
> 
> Passei isso para uma pessoa que cuida do banco de dados e ela fez a
> seguinte view:
> 
> SELECT t.rowid, t.created, t.updated, t.idcriador, t.pergunta,
> t.resp1, t.resp2, t.resp3, t.resp4, t.respcerta, t.linkfoto,
> t.idfilmescorr, t.atorescorr, t.status, aa.idclien
>FROM rfc.trivias t, ( SELECT triviavotos.idtrivia, triviavotos.idclien
>FROM rfc.triviavotos) aa
>   WHERE t.rowid <> aa.idtrivia;
> 
> Assim, segundo ele, teoricamente era só passar um "WHERE idclien =
> 8382" na view e meus problemas estariam resolvidos, mas isso não
> aconteceu.. Acabaram vindo múltiplos resultados iguais...
> 
> O problema é que, com a minha view, não consigo passar o "WHERE
> idclien = 8382", pois ele está na subquery..
> 
> Alguma idéia do que fazer??
> 


Verifique se "prepared statements" ajuda:
http://www.postgresql.org/docs/current/interactive/sql-prepare.html
http://www.postgresql.org/docs/current/interactive/sql-execute.html
http://www.postgresql.org/docs/current/interactive/sql-deallocate.html

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


Re: [pgbr-geral] Problema com muitas inserções

2008-07-08 Por tôpico Osvaldo Rosario Kussama
Wagner Bonfiglio escreveu:
>>
>> Mas é impossível dar sugestões decentes sem estar dentro do projeto.
> 

Leve em conta isto nas sugestões abaixo.


> 
> 2008/7/8 José Mello Júnior <[EMAIL PROTECTED]>:
>> Quando o usuário for dar a sua nota para determinado filme, crie o registro,
>> assim se não houver registro, considere simplesmente que o usuário não deu
>> nota, esta atitude diminuirá substancialemente a quantidade de registros na
>> tabela e trará a necessidade de insert para zero no momento de cadastro do
>> usuário.
>>
> 
> José, o problema são os cálculos. A intenção era ter todas as
> entradas, para na hora do cálculo, simplesmente mudar a nota que tinha
> antigamente para a nova nota calculada, e não somar o trabalho de
> calcular notas para diversos filmes e ainda fazer inserções no banco.
> Porém, visto que a inclusão no registro não está dando certo, o jeito
> vai ser repensar isso...
> 


Dando meu pitaco:
1. Me parece muito estranho que um usuário dê notas para 11.000 filmes 
(principalmente em um sistema web), ele não dá notas apenas para 
alguns filmes?

Se as notas forem para um grupo reduzido de filmes considere com 
carinho a sugestâo do José Mello Júnior. Para não mudar sua forma de 
cálculo creio que a substituição da tabela por uma visão (com OUTER 
JOIN) poderia amenizar o problema.

2. Atualmente quando você inclui um novo filme ele deve ser registrado 
para cada usário existente? Sem nota?

Em caso afirmativo considere novamente a utilização de visões com 
OUTER JOIN.

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


Re: [pgbr-geral] Base postgres

2008-07-03 Por tôpico Osvaldo Rosario Kussama
Márcio Elias escreveu:
> 
> Boa tarde lista...
>  
> soh uma dúvida... qual a finalidade da base criada na instalação do 
> postgresql (8.2.x ou superior) de nome postgres que aparece no 
> agrupamento de banco de dados sem nenhuma tabela jah tive casos de 
> essa base ser exluida e o postgresql continua funcionando porem esta 
> mostrando nos logs um erro dizendo que a base de dados postgres nao 
> existe. Afinal essa base de dados aparentemente vazia tem alguma 
> finalidade especifica? É necessária ao funcionamento do sistema?
>  


Complementando.

O porquê encontra-se nas Release Notes da versão 8.1:
http://www.postgresql.org/docs/current/interactive/release-8-1.html

"Make initdb create a new standard database called postgres, and 
convert utilities to use postgres rather than template1 for standard 
lookups (Dave)

In prior releases, template1 was used both as a default connection for 
utilities like createuser, and as a template for new databases. This 
caused CREATE DATABASE to sometimes fail, because a new database 
cannot be created if anyone else is in the template database. With 
this change, the default connection database is now postgres, meaning 
it is much less likely someone will be using template1 during CREATE 
DATABASE."

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


Re: [pgbr-geral] Base postgres

2008-07-03 Por tôpico Osvaldo Rosario Kussama
Márcio Elias escreveu:
> 
> Boa tarde lista...
>  
> soh uma dúvida... qual a finalidade da base criada na instalação do 
> postgresql (8.2.x ou superior) de nome postgres que aparece no 
> agrupamento de banco de dados sem nenhuma tabela jah tive casos de 
> essa base ser exluida e o postgresql continua funcionando porem esta 
> mostrando nos logs um erro dizendo que a base de dados postgres nao 
> existe. Afinal essa base de dados aparentemente vazia tem alguma 
> finalidade especifica? É necessária ao funcionamento do sistema?
>  


Do manual em:
http://www.postgresql.org/docs/current/interactive/manage-ag-templatedbs.html
"The postgres database is also created when a database cluster is 
initialized. This database is meant as a default database for users 
and applications to connect to. It is simply a copy of template1 and 
can be dropped and recreated if required."

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


Re: [pgbr-geral] ERRO de leitura

2008-07-03 Por tôpico Osvaldo Rosario Kussama
Brasil Software escreveu:
> Pessoal tenho um cliente que utiliza o postgresql 8.2 em uma maquina com 
> as seguinte configurções:
> Celeron 2.53
> 1GB de menoria
> HD 160
> Este computador é uma caixa de supermercado que fuciona como OFF LINE a 
> cada 5 minutos as informações  atualiza  o servidor  que é um HP  com  
> configurações bem superior  aos dos caixas.
> O problema é que de uma hora para outra comecou a aparecer o seguinte erro.
> 
> invalid page header in block of relation
> 



Faça uma verificação no hardware de sua máquina.
Provavelmente seu hd está com problemas.

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


Re: [pgbr-geral] Ainda Campos boleanos

2008-07-03 Por tôpico Osvaldo Rosario Kussama
Ribamar Sousa escreveu:
> 
> Então, agora de fato percebi que o psql (realmente, acho mais confiável 
> e acabo confundindo com o próprio PG Leandro), o psql é só um cliente e 
> pode exibir de uma forma, o pgadmin de outra e pelo visto qualquer uma 
> das formas de entrada pode ser vista na saída.
> 


E isto se aplica a diversas outras situações. Existe uma grande 
confusão entre a forma de armazenamento e a forma de exibição dos dados.
Por ex. as mensagens nesta lista que dizem algo do tipo:
"meu bd armazena as datas no formato -MM-DD, como faço para mudar 
a forma de armazenamento para DD/MM/?"
ou ainda:
"preciso armazenar o CNPJ como uma cadeia de caracteres pois ele 
possui zeros à esquerda e os separadores (. / -)".

Quanto à data creio que o assunto já foi bem batido e todos já sabem 
utilizar o datestyle e da função to_char().
Quanto ao cnpj não sei por que não armazená-lo um bigint e formatá-lo 
ao imprimir:
bdteste=# SELECT 
to_char(9876543123412::bigint,'09"."999"."999"/""-"99') as cnpj;
 cnpj
-
   09.876.543/1234-12

bdteste=# SELECT 
to_char(98765432123412::bigint,'99"."999"."999"/""-"99') as cnpj;
 cnpj
-
   98.765.432/1234-12

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


Re: [pgbr-geral] ordenação de array de inteiros

2008-06-30 Por tôpico Osvaldo Rosario Kussama
Rúben Lício escreveu:
> Boa tarde,
> 
> Tenho um array integer e preciso ordenar esse array para efetuar
> alguns calculos com esse resultado ordenada.
> Existe alguma função no PG para ordenar um array de forma ascendente?
> Caso não exista, alguem por acaso já tem uma SP feita para isso?
> 


Veja o módulo contrib/intarray em:
http://www.postgresql.org/docs/current/interactive/intarray.html

sort(int[], text dir)

Osvaldo

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


Re: [pgbr-geral] Sistema de Apoio a Decisão

2008-06-27 Por tôpico Osvaldo Rosario Kussama
sergio santos escreveu:
> Boa tarde pessoal
> 
> Estou desenvolvendo um SAD para Gerentes de TI.
> 
> Fiz este desenho E/R.
> A idéia e coletar dados transacionais e depois fazer um ETL para um Data 
> Warehouse.
> Segue o link abaixo do ER. Gostaria de ouvir as opiniões de vocês.
> Quem se interessar posso mandar a documentação completa.
> 
> www.temporadadeferias.com.br/BDRelacional.jpg 
> 
> 



Não entendi os relacionamentos entre:
tb_cadastro ; tb_empresa ; tb_emp_fornecedor
aparentemente tb_emp_fornecedor implementa o relacionamento n:n 
existente entre tb_cadastro e tb_empresa mas aí existe um 
relacionamento 1:n entre tb_empresa e tb_cadastro...

Status do orçamento não tem nada a ver com o orçamento?

Um departamento pode estar relacionado a várias empresas?

Para dizer a verdade não entendi direito a que se destina este modelo 
ao misturar produtos com currículos, orçamento etc.

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


Re: [pgbr-geral] Ferramentas para diagramas ER

2008-06-27 Por tôpico Osvaldo Rosario Kussama
Leonardo Cezar escreveu:
> 2008/6/27 Leandro DUTRA <[EMAIL PROTECTED]>:
> 
>> Domínios e tipos são o fundamental da modelagem de dados; embora não
>> completamente suportados pelo ISO SQL, há as aproximações DOMAINs e
>> TYPEs.  Sem o uso disso, nenhum modelo de dados é realmente completo e
>> bem administrável.
> 
> O problema não é a ferramenta em si, e sim o conceito *abstrato*
> utilizado (E/R)* para descrever estruturas muito mais especializadas.
> Esses _diagramas_ não deveriam ser negociados para propor uma solução
> em si. Ao invés, deveriam ser utilizados para mapear entidades e
> relacionamentos (como o nome propõe) e deixar a restrição para estudos
> mais evoluídas na área.
> 
> Mas virou confusão, onde tudo é confundido com diagramas E/R do MER.
> AFAIK (e não aprendi assim na faculade), um diagrama ER é composto
> fundamentalmente por não mais que cinco elementos (elipse, rectangulo,
> rectangulo duplo, linha, cardinalidade).
> 
> Com todo respeito ao trabalho do Prof. Chein, as "fazedoras" de
> software estão fazendo uma bagunça com seu estudo, e confundindo DDL
> reverso com DER.
> 
> Ouvi há algum tempo atras' falar sobre um tal de EER (enhaced ER) que
> imagino ser o tal do DER em formato de "tabelinhas" que tanto se vê
> pelo mercado.
> 
> Quanto a UML, tambem é outra especialização do MER, mas ganhou
> domínios (entenda-se tipos, onde uma classe é um tipo) e descreve
> especialização e generalização, coisa que o MER nem imaginava existir
> na época na qual foi oncebido.
> 
> [1] Chein, P; não achei literatura online, mas Chris Date cita.
> 


Creio que você procurou com o nome errado, é "Peter Pin-Shan Chen"
Veja:
http://bit.csc.lsu.edu/~chen/chen.html
http://en.wikipedia.org/wiki/Peter_Chen

Seu artigo "The entity-relationship model—toward a unified view of 
data" (de março/1976) pode ser encontrado em:
http://portal.acm.org/citation.cfm?id=320440&coll=ACM&dl=ACM&CFID=41048952&CFTOKEN=52848568&ret=1#Fulltext
e também em vários livros.

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


Re: [pgbr-geral] grant select

2008-06-26 Por tôpico Osvaldo Rosario Kussama
jota.comm escreveu:
> Olá,
> 
> Você pode fazer uma função para dar permissão as tabelas que você deseja.
> 
> Algo como:
> 
> -Percorrer toda a tabela pg_catalog onde o relkind='r' (indica que é uma 
> tabela) e atribuir um grant select on tabela to usuario
> 
> Assim você não precisa percorrer uma por uma.
> 
> Se sobrar um tempinho eu posto aqui a solução.
> 
> []s
> 
> 
> 2008/6/26 Mr J.L. <[EMAIL PROTECTED] >:
> 
> Pessoal,
> Para criar uma grant de select p/ um determinado usuario p/ todas
> tabelas do banco, tem como eu fazer sem definir as tabelas?
> tenho 20 tabelas, só consegui fazendo assim:
> 
> GRANT SELECT on table
> tabela1, tabela2,...,tabela20
> TO usuario;
> 
> nao teria algo que da pra fazer p/ todas tabelas?
> 
> Outra coisa que fiquei com duvida, ele ta podendo acessar algumas
> tabelas do sistema ex: pg_user,etc
> 
> teria como nao deixar acessar as tabelas do sistemas (todas).
> Resumindo, só quero q esse usuario faça select em um determinado
> banco, que nao veja as tabelas do sistema e mais nada .
> 


Procure a solução no histórico ou na net, por ex.:
http://kennii.wordpress.com/2007/09/21/postgres-grant-privileges-to-all-tables-in-a-database/

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


Re: [pgbr-geral] Concatenar vários campos com delimi tador

2008-06-24 Por tôpico Osvaldo Rosario Kussama
Yoshio escreveu:
> 2008/6/23 Emerson Casas Salvador <[EMAIL PROTECTED]>:
>> Yoshio escreveu:
>>> Olá pessoal.
>>> Como faço para concatenar vários campos (linha) delimitados com algum
>>> caracter em uma string dentro de uma trigger? O problema está no fato
>>> de não saber a quantidade de campos (nem os tipos) que seriam
>>> concatenados, pois a idéia é concatenar qualquer linha de qualquer
>>> tabela. Gostaria de fazer isto sem ter que fazer selects em tabelas
>>> catalogs nem usar loops. Existe alguma função para fazer isso?
>>>
>>> So para informar, a idéia é poder registrar as alterações nas tabelas
>>> como um histórico simples, indicando o se foi insert, update ou
>>> delete. Estava pensando em aumentar o nivel do log do postgre mas acho
>>> que iria ficar muito pesado. Estou aceitando idéias também. Quem puder
>>> ajudar, obrigado
>> ...Gostaria de fazer isto sem ter que fazer selects em tabelas catalogs
>> nem usar loops...
>> qual o problema em fazer selects em catalogs ou loops?
>>
>> acho que vc está procurando alguma coisa +- pronta, é isso?
> 
> Isso mesmo. Queria alguma coisa tipo:
> CONCATENA_CAMPOS(new.*, ';');
> O retorno seria alguma coisa assim:
> '123;Campo1;Campo2;Campo3...'
> 
> A função está com esta estrutura:
> IF TG_OP = 'DELETE' THEN
> INSERT INTO HISTORICO(Nome da tabela, Operacao, Dados) VALUES
> (TG_TABLE_NAME, 'D', CONCATENA_CAMPOS(old.*, ';'));
> RETURN old;
> ELSIF TG_OP = 'INSERT' THEN
> INSERT INTO HISTORICO(Nome da tabela, Operacao, Dados) VALUES
> (TG_TABLE_NAME, 'I', CONCATENA_CAMPOS(new.*, ';'));
> RETURN new;
> ELSIF TG_OP = 'UPDATE' THEN
> INSERT INTO HISTORICO(Nome da tabela, Operacao, Dados) VALUES
> (TG_TABLE_NAME, 'U', CONCATENA_CAMPOS(new.*, ';'));
> RETURN new;
> END IF;
> 
> E existisse essa função "CONCATENA_CAMPOS" ajudaria bastante, mas se
> não der nenhum problema em utilizar outros selects e loops, beleza.
> 


Apenas para esclarecer: se sua tabela contém campos de diferentes 
tipos qual é a saida esperada por você?

Por exemplo: se existe um campo int4 com conteudo 3459(dec) você 
deseja em sua saida 7AA3(hex) ou quer converter para um string?

Se desejar a saida em forma legível para os humanos você terá que 
formatar cada tipo de campo (date, float, bolean, timestamp etc) de 
seu registro. Veja:
http://www.postgresql.org/docs/current/interactive/functions-formatting.html

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


Re: [pgbr-geral] Ordem dos registros nas tabelas

2008-06-20 Por tôpico Osvaldo Rosario Kussama
Ribamar Sousa escreveu:
> 2008/6/20 William Leite Araújo <[EMAIL PROTECTED] 
> >:
> 
> 2008/6/19 Ribamar Sousa <[EMAIL PROTECTED] >:
> 
> (...)
> 
> Acredito que o texto do manual, e como também relatam em alguns
> livros, talvez precise ser mais claro.
> Sei que muita gente não procura testar estas coisas, mas o que
> eu entendi ao ler foi que ao executar simultâneos selects eu
> receberia os registros em ordem aleatória.
> 
>  
>  O que houve foi um equívoco em sua interpretação. Caso você
> execute simultâneos "SELECT's", pode ser que eles sejam retornados
> em ordem, mas não é garantido esse retorno sempre. Pode ocorrer
> troca de ordem, como de fato ocorre ao se alterar alguma coisa na tupla.
> 
> 
> Willian, sem querer ter razão na marra, mas apenas me justificando. Veja 
> o texto do manual:
> 
> "Quando a tabela é lida, as linhas aparecem em uma ordem aleatória, a 
> não ser que a classificação seja requisitada explicitamente."
> 
> Mas este longo debate foi muito proveitoso e percebo que a coisa não é 
> assim, pois caso tenha havido alguma alteração isso sim, alterará a 
> ordem. Mas acredito que o texto deveria citar que, caso não haja 
> alteração a ordem será sempre a mesma. Veja o parágrafo completo:
> 
> "Uma tabela em um banco de dados relacional é muito semelhante a uma 
> tabela no papel: é formada por linhas e colunas. O número e a ordem das 
> colunas são fixos, e cada coluna possui um nome. O número de linhas é 
> variável, refletindo a quantidade de dados armazenados em um determinado 
> instante. O padrão SQL não dá nenhuma garantia sobre a ordem das linhas 
> na tabela. Quando a tabela é lida, as linhas aparecem em uma ordem 
> aleatória, a não ser que a classificação seja requisitada 
> explicitamente. Esta parte é descrita no Capítulo 7 
> . Além disso, o SQL 
> não atribui identificadores únicos para as linhas e, portanto, é 
> possível existirem várias linhas totalmente idênticas na tabela. Isto é 
> uma conseqüência do modelo matemático subjacente ao SQL, mas geralmente 
> não é desejável. Mais adiante neste capítulo será mostrado como lidar 
> com esta questão."
> http://pgdocptbr.sourceforge.net/pg80/ddl.html#DDL-BASICS
>  
> 


Creio que o que você deseja é obtido acrescentando um ORDER BY 
random() ao final de seu SELECT.

Aí sim diferentes execuções retornarão com variação na ordem dos 
registros, mesmo que o banco não tenha sofrido qualquer alteração.

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


Re: [pgbr-geral] Manter conexão ativa usando ZEOS

2008-06-20 Por tôpico Osvaldo Rosario Kussama
Dickson Guedes escreveu:
> Agostinho Francisco Barbosa escreveu:
>> Boa noite, minha conexão com o BD cai após ficar algum tempo sem 
>> atividade, como posso resolver isso via programação em delphi usando ZEOS?
> 
> Apenas um detalhe, alguns firewalls possuem a caracteristica de 
> desconectar conexões ociosas que excedam o periodo de tempo maior que o 
> valor pré-determinado em sua configuração.
> 


Apenas reforçando o exposto pelo Dickson: o PostgreSQL não tem nenhum 
mecanismo do tipo "connection timeout". Procure a causa em outras 
partes de seu sistema (cliente, firewall, roteador, etc) pois alguém 
está enviando um sinal SIGTERM.

Osvaldo
___
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: WHERE campo = null nao funciona?

2008-06-20 Por tôpico Osvaldo Rosario Kussama
Rúben Lício escreveu:
> Boa tarde,
> 
> Tenho alguns SELECTs em uma base que devem retornar valores apenas se
> um campo timestamp não tiver dando algum, e também as vezes um campo
> char.
> Eu tento
> SELECT * FROM tb_teste WHERE campo_ts_teste = NULL;
> E isso não me retorna resultado (sim há resultados para ele devolver).
> Esse registro foi inserido usando o valor NULL para este campo.
> O mesmo acontece com um campo char, que contém ou NULL ou '*', já tentei
> SELECT * FROM tb_teste WHERE campo_char_teste = NULL
> SELECT * FROM tb_teste WHERE campo_char_teste != '*'
> Ambos não retornam nada nunca.
> 
> Como devo fazer para comparar campos com NULL no postgres??
> 


O operador = não se aplica a NULL.
Utilize campo_char_teste IS NULL (ou IS NOT NULL).

Outra alternativa, caso seja muito trabalhoso modificar todos os 
SELECT, é alterar no postgresql.conf a opção transform_null_equals, veja:
http://www.postgresql.org/docs/current/interactive/runtime-config-compatible.html#RUNTIME-CONFIG-COMPATIBLE-VERSION

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


Re: [pgbr-geral] Ordem dos registros nas tabelas

2008-06-20 Por tôpico Osvaldo Rosario Kussama
Ribamar Sousa escreveu:
> 
> Aqui acusa que não tenho foo.OID (minha versão? 8.2.9).
>  


Veja o parâmetro default_with_oids em seu postgresql.conf:
http://www.postgresql.org/docs/8.2/interactive/runtime-config-compatible.html#GUC-DEFAULT-WITH-OIDS
e também:
"If OIDS is not specified, the default setting depends upon the 
default_with_oids configuration parameter. (If the new table inherits 
from any tables that have OIDs, then OIDS=TRUE is forced even if the 
command says OIDS=FALSE.)
If OIDS=FALSE is specified or implied, the new table does not store 
OIDs and no OID will be assigned for a row inserted into it."
em WITH ( storage_parameter [= value] [, ... ] ) em:
http://www.postgresql.org/docs/8.2/interactive/sql-createtable.html

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


Re: [pgbr-geral] Res: Res: Res: Re: [RESOL VIDO] Problemas ao executar script sql de importação

2008-06-19 Por tôpico Osvaldo Rosario Kussama
Willian Jhonnes Lara dos Santos escreveu:
> - Mensagem original 
> 
> De: Emerson Casas Salvador <[EMAIL PROTECTED]>
> Para: Comunidade PostgreSQL Brasileira 
> Enviadas: Quinta-feira, 19 de Junho de 2008 16:49:29
> Assunto: Re: [pgbr-geral] Res:  Res: Re: [RESOLVIDO] Problemas ao executar 
> script sql de importação
> 
>> usa o vi, ou mesmo o tr no linux
> 
> Cara, pra isso eu uso o emacs ou mesmo o KWrite, mas como o Windows 
> interpreta a quebra de linha com o caracter nulo no fim da string mais LF + 
> CR, não sei como o script vai se comportar quando eu fizer a quebra de linha 
> no Linux.
> 
> Mas o problema não é o script, é a sintaxe da instrução COPY... Não a conheço 
> e a documentação é um tanto complexa (ou eu não estou tendo a capacidade de 
> compreendê-la...).
> 
> Se alguém puder postar um exemplo, ficarei grato...
> 


Para você ver um exemplo faça o seguinte:
- escolha uma tabela pequena de seu banco (com poucos registros),
- rode um:
pg_dump --data-only --format=plain --table=sua_tabela --file=arq_saida 
seu_bd
- abra o arq_saida com um editor e veja a utilização do COPY.

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


Re: [pgbr-geral] Ordem dos registros nas tabelas

2008-06-19 Por tôpico Osvaldo Rosario Kussama
Ribamar Sousa escreveu:
> 2008/6/19 Osvaldo Rosario Kussama <[EMAIL PROTECTED] 
> <mailto:[EMAIL PROTECTED]>>:
> 
> Ribamar Sousa escreveu:
>  > Olá!
>  >
>  > Já li em alguns livros e agora na documentação do PostgreSQL, que
> o SQL
>  > não garante a ordem em que os registros são retornados pelas
> consultas.
>  >
>  > http://pgdocptbr.sourceforge.net/pg80/ddl.html#DDL-BASICS
>  > ...
> 
> Atualize qualquer dos registros e rode novamente sua consulta.
> Compare os resultados.
> 
> Veja ctid em:
> http://www.postgresql.org/docs/current/interactive/ddl-system-columns.html
> 
> 
> Ao atualizar um registro ele passa a ocupar a última posição.
> Talvez eu não tenha interpretado corretamente. Deve ser o seguinte: não 
> se garante a ordem, mas não é simplesmente como eu estava testando: 
> executando vários selects seguidos e esperando em cada um uma ordem 
> diferente.
> Deve ser assim: não se garante a ordem, pois após atualizações a ordem 
> pode ser outra, é isso?
> 


Exato, qualquer atualização ou um vacuum full podem modificar a ordem 
física dos registros. Em um ambiente onde ocorrem transações 
simultâneas é "quase" como se fosse aleatório, na realidade não é 
aleatório mas é praticamente impossível garantir uma ordem num banco 
normal em produção.

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


Re: [pgbr-geral] Ordem dos registros nas tabelas

2008-06-19 Por tôpico Osvaldo Rosario Kussama
Ribamar Sousa escreveu:
> Olá!
> 
> Já li em alguns livros e agora na documentação do PostgreSQL, que o SQL 
> não garante a ordem em que os registros são retornados pelas consultas.
> 
> http://pgdocptbr.sourceforge.net/pg80/ddl.html#DDL-BASICS
> ...
> 
> 
>   5.1. Noções básicas de tabela
> 
> Uma tabela em um banco de dados relacional é muito semelhante a uma 
> tabela no papel: é formada por linhas e colunas. O número e a ordem das 
> colunas são fixos, e cada coluna possui um nome. O número de linhas é 
> variável, refletindo a quantidade de dados armazenados em um determinado 
> instante. O padrão SQL não dá nenhuma garantia sobre a ordem das linhas 
> na tabela. Quando a tabela é lida, as linhas aparecem em uma ordem 
> aleatória, a não ser que a classificação seja requisitada explicitamente.
> 
> Eu fui testar mas não consegui reproduzir esse comportamento.
> Quer a tabela tenha chave primária ou nenhum índice sempre os registros 
> retornam na mesma ordem e a ordem é a de inclusão dos registros.
> Pelo que se diz os registros retornam ora numa ordem ora noutra 
> aleatoriamente.
> Como vejo esse comportamento?
> 


Atualize qualquer dos registros e rode novamente sua consulta.
Compare os resultados.

Veja ctid em:
http://www.postgresql.org/docs/current/interactive/ddl-system-columns.html

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


Re: [pgbr-geral] Res: Re: [RESOLVIDO] Proble mas ao executar script sql de importação

2008-06-19 Por tôpico Osvaldo Rosario Kussama
Willian Jhonnes Lara dos Santos escreveu:
> 
> Importando por linha de comando (método que utilizei no MySQL), a importação 
> funcionou. A única coisa que me preocupou foi o desempenho. Levou quase 4 
> minutos (o MySQL fez em 46 segundos). Fico imaginando, na hora de implantar o 
> sistema, durante o processo de instalação, o usuário ficar olhando pra uma 
> janela de comando e ficar esperando o processo terminar.
> 
> Mesmo assim, existe alguma maneira de agilizar este processo, sem ser a cópia 
> do tablespace inteiro na hora de instalar a aplicação?
> 



Em seu script você está utilizando o comando INSERT ou COPY?
- o preferível é COPY, veja:
http://www.postgresql.org/docs/current/interactive/sql-copy.html

Se estiver utilizando INSERT, estão todos em uma única transação?
http://www.postgresql.org/docs/current/interactive/tutorial-transactions.html

Osvaldo
___
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 com outro select como campo de retorno

2008-06-12 Por tôpico Osvaldo Rosario Kussama
Rúben Lício escreveu:
> 
> Eu gostaria de fazer um select que entre os campos especificados tenha
> outro select. Até ai tudo bem, mas preciso filtar esse select no campo
> com um valor do outro select.
> Exemplo:
> 
> SELECT campo1, (SELECT campoX FROM tb WHERE campo = campo1 LIMIT 1) as campo2
> FROM tb2
> 
> O problema é que esse campo1 do WHERE do segundo select é o mesmo
> campo1 da lista do primeiro select. Como especifico isso?
> 


Tente:

SELECT tb2.campo1,
(SELECT campoX FROM tb
  WHERE tb.campo = tb2.campo1 LIMIT 1) as campo2
FROM tb2;

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


Re: [pgbr-geral] Script à prova de falhas.

2008-06-11 Por tôpico Osvaldo Rosario Kussama
Herick Marques escreveu:
> Ribamar Sousa escreveu:
>> 2008/6/11 Herick Marques <[EMAIL PROTECTED] 
>> >:
>>
>> Evandro Ricardo Silvestre escreveu:
>> > Herick Marques wrote:
>> >
>> Olá Evandro, obrigado pela ajuda, mas o problema continua.
>> Usei o script que vc me passou fiz a alteração necessária, mas ele não
>> executa no console do PG.
>> usei o seguinte script:
>> SELECT a.relname AS Tabela, b.attname AS Campo
>>  FROM pg_class a
>>  JOIN pg_attribute b ON (b.attrelid = a.relfilenode)
>>  WHERE  b.attstattarget = -1 AND
>> a.relname = 'allst' AND  b.attname = 'blocker';
>>  IF NOT FOUND THEN
>>ALTER TABLE allst ADD blocker BOOLEAN NOT NULL
>>  END IF;
>>
>> O console dá o seguinte erro:
>> ERROR: syntaxe error at or near "IF" SLQ state: 42601 Character: 218
>>
>> Sabe me dizer se eu preciso passar mais algum comando, tipo um
>> execute,
>> ou colocar o script dentro de um begin/end, etc?
>> Obrigado!
>>
>>
>> No alter table deve ser assim:
>>
>>ALTER TABLE allst ADD COLUMN blocker BOOLEAN NOT NULL
>>
>>   
> Amigo, o problema não ocorre no script que faz a criação/ alteração da 
> tabela, está ocorrendo na cláusula de verificação.

O IF não é um comando SQL.
Para os comandos SQL válidos veja:
http://www.postgresql.org/docs/current/interactive/sql-commands.html


> Esse Alter Table, tato da maneira como eu tinha colocado como dessa que 
> vc me passou funcionou, o problema continua sendo a verificação da 
> existência.
> Criar uma SP eu acho desnecessário pois esse script vai ser executado 
> poucas vezes, só quando as bases de clientes sofrerem atualização, e aí 
> está a razão de eu não querer que apareça mensagem de erro.

Se você quizer executar um comando restrito à PL/PgSQL então a criação 
de uma função não é *desnecessária*.

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

2008-06-11 Por tôpico Osvaldo Rosario Kussama
Willian Jhonnes Lara dos Santos escreveu:
> Boa tarde, amigos...
> 
> Criei uma tabela de auditoria em meu sistema, mas estou encontrando problemas 
> em compilar as triggers que disparam os logs. A função criada foi esta:
> 
> BEGIN
>INSERT INTO
>   "SIG001LOG"
>   (
>   "LOG_USR",
>   "LOG_TBL",
>   "LOG_DTE",
>   "LOG_HRE",
>   "LOG_EVT"
>   )
>VALUES
>   (
>   CURRENT_USER,
>   'SIG001PER', 
>   NOW(),
>   NOW(),
>   'ADICIONADA A PERMISSÃO PARA O USUÁRIO '||NEW.PER_USR||' ACESSAR 
> O FORMULÁRIO '||NEW.PER_FRM||' DO PROGRAMA '||NEW.PER_APP||' COM STATUS 
> '||NEW.PER_STS||'.'
>   );
>  RETURN NEW;
> END;
> 
> A instrução é a seguinte:
> 
> INSERT INTO
>SIG001PER
>(
>"PER_USR",
>"PER_APP",
>"PER_FRM",
>"PER_STS"
>)
> VALUES
>(
>'WILLIAN',
>'SIG/FOLHA',
>'UFOL002',
>1
>);
> 
> O erro retornado é: "O record NEW não tem um valor PER_USR."
> 
> Independentemente de ser executada antes ou depois da instrução, a trigger 
> retorna este erro.
> 
> Alguém tem alguma idéia doq seja???
> 


Olhe a definição da tabela SIG001PER. O PostgreSQL concluiu que não 
existe o campo "PER_USR".
Como você está usando identificadores entre aspas recomendo que veja 
no manual as regras específicas que se aplicam a este tipo de 
identificadores.
http://www.postgresql.org/docs/current/interactive/sql-syntax-lexical.html#SQL-SYNTAX-IDENTIFIERS

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


Re: [pgbr-geral] Período

2008-06-11 Por tôpico Osvaldo Rosario Kussama
Vinicius Santos - MSI escreveu:
> Eu estou fazendo um SELECT das minhas saídas, por exemplo: SELECT data, 
> sum(valor) FROM saidas GROUP BY data
> Porém nas datas que não teve saída, ele não me retorna nada, eu gostaria que 
> retornassem TODAS as datas, e nas que não teve saída, retornasse 0 no 
> valor
> 



Usei esta consulta para um problema semelhante:

SELECT s."Data", sum(coalesce(tab_data.valor,0)) AS "Valor"
FROM gen_datas(('2003-12-10'::date - '1 
month'::interval)::date,'2003-12-10'::date) AS s("Data")
  LEFT OUTER JOIN tab_data
   ON s."Data" = tab_data.data
GROUP BY s."Data"
ORDER BY s."Data" ASC;

A função gen_datas é a da outra mensagem enviada anteriormente.

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


Re: [pgbr-geral] Modelagem de Dados

2008-06-09 Por tôpico Osvaldo Rosario Kussama
Mateus escreveu:
> Alguem conhece alguma ferramenta de modelagem de dados free tipo 
> PowerDesigner.
> 
> Não achei nenhuma que faz DER so UML. Queria uma que trabalha-se com DER 
>   parecido com o PowerDesigner.
>


Dê uma olhada nesta:
http://www.sqlpower.ca/page/architect

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


Re: [pgbr-geral] Consulta

2008-06-09 Por tôpico Osvaldo Rosario Kussama
rodrigo escreveu:
> Bom dia a todos.
> 
> Tenho uma tabela onde guardo totais de leituras (tb00cons) ex:
> 
> prdtb000 - Código do Produto Ex. 1
> 
> nmetb000 - descrição Ex. EXTRATO UNIFICADO
> 
> mtvtb000 - Código do Motivo Devolução Ex. 2
> 
> nmvtb000 - Descrição Ex. NUMERO NÃO EXISTE
> 
> qtdtb000 - Quantidade Ex. 20
> 
> 
> 
> prdtb000 | nmetb000| mtvtb000 | nmvtb000  | qtdtb000 |
> 
> --
> 
> 1| EXTRATO CONSOLIDADO | 2| NÚMERO NÃO EXISTE | 100  |
> 
> 1| EXTRATO CONSOLIDADO | 3| FALECIDO  | 150  |
> 
> 2| DRC - CARTA AVISO   | 1| NÃO ENCONTRADO| 300  |
> 
> 3| EXTRATO UNIFICADO   | 2| NÚMERO NÃO EXISTE | 290  |
> 
> --
> 
> Preciso fazer um SELECT nessa tabela, que me retornasse os dados 
> agrupados por produto 'prdtb000' e na mesma linha, me retornasse os 
> motivos 'mtvtb000' referente ao produto. Ex.
> 
> 1  | EXTRATO CONSOLIDADO | 2 | NÚMERO NÃO EXISTE | 100 | 
> 3 | FALECIDO  | 150|
> 
> Gostaria de saber se tenho que criar (ou se existe) alguma função para 
> me trazer os dados neste formato.
> 


Veja os exemplos de User-Defined Aggregates em:
http://www.postgresql.org/docs/current/interactive/xaggr.html

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


[pgbr-geral] [OT] Firefox 3 Download Day

2008-06-06 Por tôpico Osvaldo Rosario Kussama
Ganhe uma Web melhor!

Baixe o Firefox 3 durante o Download Day.

Junte-se a nossa comunidade e a este esforço indo no site abaixo e
comprometendo-se a baixar o Firefox.

http://www.spreadfirefox.com/pt-BR/worldrecord/


Osvaldo


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


Re: [pgbr-geral] Like em campos Inteiros

2008-06-04 Por tôpico Osvaldo Rosario Kussama
Fernando Bossini escreveu:
> Opa!!!
>  
> SQL:
>  
> select cont_codi, cont_desc
> from conta
> where cont_codi like '%1%'
>  
>  
> ERRO NO PGADMIN:
> 
> ERROR:  operator does not exist: integer ~~ unknown
> LINE 3: where cont_codi like '%1%'
> ^
> HINT:  No operator matches the given name and argument type(s). You 
> might need to add explicit type casts.
> 
> ** Erro **
> 
> ERROR: operator does not exist: integer ~~ unknown
> SQL state: 42883
> Dica: No operator matches the given name and argument type(s). You might 
> need to add explicit type casts.
> Caracter: 56
> 
>  
> 
> Existe alguma forma de fazer esse sql? Um like no campo inteiro?
> 


Utilize cast explícito.
cont_codi::text like '%1%'

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


Re: [pgbr-geral] Como integro o PostgreSQL ao openoffice?

2008-06-03 Por tôpico Osvaldo Rosario Kussama
Emerson Casas Salvador escreveu:
> Leonardo Vilar escreveu:
>> como integro o banco de dados ao openoffice?
>>
> http://pt.wikibooks.org/wiki/PostgreSQL_Pr%C3%A1tico/Ferramentas/OpenOffice_Base
> 


Ou utilize o driver nativo postgresql SDBC:
http://dba.openoffice.org/drivers/postgresql/index.html

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


Re: [pgbr-geral] Dúvida sobre como passar um array p ara uma SP em pl/pgsql

2008-06-02 Por tôpico Osvaldo Rosario Kussama
Rúben Lício escreveu:
> Bom dia,
> 
> Estou tentando criar um SP no postgres que recebe um array como
> parametro, mas estou com problemas na hora de testar isso.
> A declaração da SP é:
> 
> CREATE OR REPLACE FUNCTION sp_teste(teste_array integer[])
> 
> Estou chamando essa SP como:
> 
> select sp_teste({1234, 4321});
> 
> isso gera um:
> 
> ERROR:  syntax error at or near "{"
> 
> Como posso fazer para passar um array a essa SP para testa-la??
> 


Tente:
SELECT sp_teste('{1234, 4321}'::int[]);

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


Re: [pgbr-geral] backup ignorando uma tabela

2008-05-29 Por tôpico Osvaldo Rosario Kussama
[EMAIL PROTECTED] escreveu:
> Como eu faço um backup ignorando uma tabela..
>  


Veja a opção -T table (ou --exclude-table=table).
Versões 8.2+

Osvaldo



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


Re: [pgbr-geral] Efeito da variável ON_ERROR_ROL LBACK

2008-05-29 Por tôpico Osvaldo Rosario Kussama
Álvaro Guimarães escreveu:
> Meu backup é gerado com pg_dump -Fc que no manual ta falando que é uma 
> forma comprimida de backup. Então no caso o -Fc tá gerando backups com 
> COPY. Seria isso né?
> E será que tem como fazer com que o COPY não aborte a transação inteira?
> 


O significado da opção -FC do pg_dump é: "Gera um arquivo 
personalizado adequado para servir de entrada para o pg_restore. Este 
é o formato mais flexível, porque permite a reordenação da restauração 
dos dados, assim como das definições dos objetos. Além disso, este 
formato é comprimido por padrão.". Isto é, um arquivo comprimido em 
contraponto a um arquivo texto-puro.

Para utilizar a saida do pg_dump como entrada do psql você deve 
utilizar formato texto-puro, isto é, o pg_dump (ou pg_dumpall) com a 
opção --format=p (ou -Fp).

O padrão do pg_dump é gerar comandos COPY. Para gerar com INSERT você 
tem que utilizar a opção --inserts (ou -d).

No post original a opção desejada é, efetivamente:
ON_ERROR_ROLLBACK on

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


Re: [pgbr-geral] merge no postgresql

2008-05-28 Por tôpico Osvaldo Rosario Kussama
Mr J.L. escreveu:
> 
>É possivel fazer "MERGE" semelhante ao oracle no postgresql? (p/ ele 
> verificar se deveria fazer o insert ou um update)
> 


O PostgreSQL não implementou tal comando (pelo menos até a versão 8.3).
Em
http://www.postgresql.org/docs/current/interactive/plpgsql-control-structures.html#PLPGSQL-ERROR-TRAPPING
você encontra o exemplo 38-1 que é uma função que faz exatamente isso.

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


Re: [pgbr-geral] LATIN1 no PostgreSQL Ubuntu en_us

2008-05-28 Por tôpico Osvaldo Rosario Kussama
Thiago Risso escreveu:
> 2008/5/28 jota. comm <[EMAIL PROTECTED]>:
>> Olá, pessoal
>>
>> Fiquei confuso em algumas coisas, mas vamos lá:
>>
>> Quando o seu cluster é inicializado e nesta inicialização você específica a
>> codificação e a localização que são coisas diferentes, o primeiro está
>> voltado para a codificação do banco e o segundo influencia na ordenação.
>> Quando você cria um banco de dados e não específica ele utiliza a
>> codificação padrão do cluster, porém você pode criar bancos de dados com
>> outras codificações, basta especificar o parâmetro -E pelo createdb ou pelo
>> parêmetro encoding pelo create database. Com isso, eu posso ter banco de
>> dados no mesmo cluster com várias codificações, por exemplo, bancos em UTF8,
>> LATIN1, SQL_ASCII.
> 
> 
> Ao ler este trecho eu que fiquei confuso então fui a constatação
>  Só é possível criar um cluster para a codificação a qual o seu SO
> tenha suporte (meio óbvio, mas..) ... Ao tentar criar no ubuntu mesmo,
> com o package da 8.3 instalado, um cluster LATIN1 (iso-8859-1) temos :
> 
> trisso:~$ sudo pg_createcluster -e LATIN1 -d /home/trisso/test 8.3
> cluster-8.3-2
> [sudo] password for trisso:
> Creating new cluster (configuration:
> /etc/postgresql/8.3/cluster-8.3-2, data: /home/trisso/test)...
> initdb: codificação não corresponde
> A codificação que você escolheu (LATIN1) e a codificação que a
> configuração regional
> selecionada utiliza (UTF8) não tem correspondência. Isto pode conduzir
> a um comportamento inesperado em funções de processamento de cadeia de
> caracteres.
> Execute novamente o initdb e não especifique uma codificação explicitamente
> ou escolha uma outra combinação
> 
> 


Repare que documentação da versão 8.3 foi introduzido o seguinte 
parágrafo:
"An important restriction, however, is that each database character 
set must be compatible with the server's LC_CTYPE setting. When 
LC_CTYPE is C or POSIX, any character set is allowed, but for other 
settings of LC_CTYPE there is only one character set that will work 
correctly. Since the LC_CTYPE setting is frozen by initdb, the 
apparent flexibility to use different encodings in different databases 
of a cluster is more theoretical than real, except when you select C 
or POSIX locale (thus disabling any real locale awareness)."
http://www.postgresql.org/docs/current/interactive/multibyte.html#MULTIBYTE-CHARSET-SUPPORTED

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


Re: [pgbr-geral] Fw: Problema com Trigger

2008-05-27 Por tôpico Osvaldo Rosario Kussama
Seta Digital - Suporte escreveu:
>  
> Boa Tarde...
>  
> Estou com um problema em uma trigger, porem o problema e somente com um 
> cliente... a trigger e a seguinte:
>  
>  
> CREATE OR REPLACE FUNCTION lastupdate()
>   RETURNS "trigger" AS
> $BODY$
> BEGIN
>  NEW.LastUpdate=Now();
> RETURN NULL;
> END;$BODY$
>   LANGUAGE 'plpgsql' VOLATILE;
>  
> O problema e que neste cliente eu nao consigo alterar nada (update) na 
> tabela que possui essa trigger o que pode estar acontecendo???
> Nos Outros clientes esta tudo funcionando... somente em um cliente que 
> nao esta dando certo
> 



Provavelmente é devido ao "RETURN NULL;".
Veja em:
http://pgdocptbr.sourceforge.net/pg80/plpgsql-trigger.html
"Os gatilhos no nível de linha disparados BEFORE (antes) podem 
retornar nulo, para sinalizar ao gerenciador do gatilho para pular o 
restante da operação para esta linha (ou seja, os gatilhos posteriores 
não serão disparados, e não ocorrerá o INSERT/UPDATE/DELETE para esta 
linha."

Use RETURN NEW

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


Re: [pgbr-geral] Dúvida sobre Trigger

2008-05-23 Por tôpico Osvaldo Rosario Kussama
Carlos Madsen escreveu:
> Olá pessoal, estou com o seguinte problema tenho uma tabela chamada 
> "livro" e tenho de armazenar todas as alterações que esta tabela sobre 
> em uma tabela "log", daí pensei em fazer uma trigger para ser chamada 
> antes do update, até ai tudo bem, mas o problema é que tenho de 
> armazenar também o login do usuário atual, coluna que não existe em 
> "livro". Tentei fazer algo do gênero mas não fui feliz:
> 
> 
> CREATE OR REPLACE FUNCTION altera_livro()
> 
> RETURNS "trigger" AS
> 
> $BODY$
> 
> begin
> 
> insert log (login,data,autor) values (NEW.login,current_date,NEW.autor); 
> -- +- assim
> 
> 
> NEW.login=null; --para não afetar o update
> 
> return NEW;
> 
> end;
> 
> $BODY$
> 
> LANGUAGE 'plpgsql' VOLATILE;
> 
> 
> Chamado no update:
> 
> update livro set
> 
> login='carlos', -- essa coluna não existe na tabela livro !!
> 
> titulo='Dom Casmurro',
> 
> autor='Machado de Assis' where chave='654';
> 
> 
> Alguém tem alguma idéia se algo do gênero é possível?
> 


Veja "Example 38-3. A PL/pgSQL Trigger Procedure For Auditing" em:
http://www.postgresql.org/docs/current/interactive/plpgsql-trigger.html

e "current_user" em:
http://www.postgresql.org/docs/current/interactive/functions-info.html

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


Re: [pgbr-geral] RES: RES: RES: RES: RES: Ajuda em Select

2008-05-23 Por tôpico Osvaldo Rosario Kussama
Saulo Morais Lara escreveu:
> Osvaldo, arrumei um livro de BD e logo vou estar bem se deus quiser.
> Obrigado, vo testar.
> Vc pode me ajudar em mais uma coisa. Estou pelejando e não consegui.
> Tenho os seguintes dados:
> 
> bordero
> ---
> Numero: 001
> Valor: 100,00
> Comissao: 10,00
> 
> Parcelas
> 
> Numero: 001
> Parcela: 1
> Valor: 50,00
> Numero: 001
> Parcela: 2
> Valor: 50,00
> 
> Se faço um select assim:
> Select sum(parcela.valor) as valor, sum(borderô.comissao) as comissão from
> borderô inner join parcelas on borderô.numero = parcela.numero
> Como tenho duas parcelas do borderô 1, vai me retornar o valor da comissão
> duplicado. Deu pra entender. Acho que vo precisar dum subselect.
> Pode me auxiliar? Obrigado.
> 


Realmente este não é o caso para se utilizar junção.
Como você mesmo já percebeu é o caso para se utilizar subselect.

Tente:
SELECT borderô.numero, borderô.comissao AS comissão, (SELECT 
sum(parcela.valor) AS valor FROM parcelas WHERE parcela.numero = 
borderô.numero) FROM borderô ORDER BY borderô.numero;

Veja "4.2.9. Scalar Subqueries" em:
http://www.postgresql.org/docs/current/interactive/sql-expressions.html#SQL-SYNTAX-SCALAR-SUBQUERIES

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


Re: [pgbr-geral] RES: RES: RES: RES: Ajuda em Select

2008-05-23 Por tôpico Osvaldo Rosario Kussama
Saulo Morais Lara escreveu:
> Sim
> 
> -Mensagem original-
> De: [EMAIL PROTECTED]
> [mailto:[EMAIL PROTECTED] Em nome de Leandro
> DUTRA
> Enviada em: quarta-feira, 21 de maio de 2008 17:49
> Para: Comunidade PostgreSQL Brasileira
> Assunto: Re: [pgbr-geral] RES: RES: RES: Ajuda em Select
> 
> 2008/5/21 Saulo Morais Lara <[EMAIL PROTECTED]>:
>> Vamos ver se explico melhor. Esta consulta pegará a ultima compra de cada
>> cliente, e de qto em qto tempo ele compra, a partir da data do pedido.
>> Por exemplo, 1 cliente tem 2 pedidos, um com data de 10/05/2008 e outro
> com
>> 20/05/2008. O prazo de uma compra pra outra foi de 10 dias.
>> Entao saira: Cliente: Fulano, Ultima compra: 20/05/2008, Frequencia: 10
> 
> Você quer uma média?
> 


Isto está com cara dever de casa mas vamos lá:

-- Média de dias entre pedidos
SELECT p3.pedclicod, AVG(p3.dias)
   FROM (SELECT p1.pedclicod, (p1.pddata - MAX(p2.peddata)) AS dias
   FROM pedidos p1 JOIN pedidos p2 ON (p1.pedclicod = 
p2.pedclicod AND p1.peddata > p2.peddata)
   GROUP BY p1.pedclicod) p3
   GROUP BY p3.pedclicod
   ORDER BY p3.pedclicod;

Você tem que prestar atenção em duas condições de contorno que não 
entram no cálculo da média acima:

-- Clientes sem pedidos registrados
SELECT clicod, clinome
   FROM cliente LEFT OUTER JOIN pedidos
ON (clicod = pedclicod)
   WHERE pedclicod IS NULL;


-- Clientes com um único pedido registrado
SELECT clicod, clinome
   FROM cliente JOIN pedidos
ON (clicod = pedclicod)
   GROUP BY clicod, clinome
   HAVING count(*) = 1
   ORDER BY clicod;

Osvaldo

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


Re: [pgbr-geral] RES: Ajuda em Select

2008-05-21 Por tôpico Osvaldo Rosario Kussama
Saulo Morais Lara escreveu:
> Pode me da detalhes do livro Leandro. Estou precisando mto aprimorar meu SQL.
> 
> São 3 tabelas:
> Cliente
> Pedido
> Dados_do_pedido
> 
> -Mensagem original-
> De: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] Em nome de Leandro DUTRA
> Enviada em: quarta-feira, 21 de maio de 2008 14:17
> Para: Comunidade PostgreSQL Brasileira
> Assunto: Re: [pgbr-geral] Ajuda em Select
> 
> 2008/5/21 Saulo Morais Lara <[EMAIL PROTECTED]>:
>> Preciso fazer uma consulta pela freqüência de compras (em dias), de cada
>> cliente.
>>
>> De qto em qto tempo ele costuma comprar.
>>
>> Alguem pode me dar o caminho das pedras?
> 
> Como estão organizados os dados?
> 
> Enquanto isso, sugiro o livro do Date…
> 


Como o Leandro já falou você precisa dar mais detalhes para tentarmos 
ajudá-lo.

O que significa "De qto em qto tempo ele costuma comprar"? A média 
aritmética dos intervalos entre as compras? Outra coisa?

Em cada pedido existe a data do pedido anterior? Em suma: quais os 
atributos de cada uma das tabelas envolvidas.


Quanto ao Date, veja:
http://www.campus.com.br/script/CpsMontaFrame.asp?pStrCodSessao=D0631C18-6AD0-413B-A3B4-564397A8573E&pIntCodProduto=0&pIntCodParceiro=0

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


Re: [pgbr-geral] Pesquisa MVC

2008-05-21 Por tôpico Osvaldo Rosario Kussama
Pablo Sánchez escreveu:
> Acho que o assunto é off na lista de PG...
> 
> 2008/5/21 Marcos Fabrício Corso <[EMAIL PROTECTED]>:
>> olá pessoal
>> preciso fazer uma pesquisa sobre mvc e gostaria da opinião do grupo
>> a idéia é escrever sobre mvc e suas tendências para o futuro
>> o que vocês acham ?



A menos que tenha ocorrido um erro de digitação e ele queria dizer 
MVCC (neste caso não é off).
São coisas bem diferentes, veja:
MVCC - Multiversion concurrency control
http://en.wikipedia.org/wiki/Multiversion_concurrency_control
http://www.postgresql.org/docs/current/interactive/mvcc-intro.html
e
MVC - Model-view-controller
http://en.wikipedia.org/wiki/Model-view-controller

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


Re: [pgbr-geral] Text para Timestamp !!??

2008-05-21 Por tôpico Osvaldo Rosario Kussama
jota.comm escreveu:
> 
> Outra forma poderia ser:
> 
> select '2008-05-21 09:35:21.287121'::timestamp;
> 
> Porém, a forma que o Dickson mostrou é padrão SQL enquanto a minha não, 
> mas estão ai duas soluções.
> 
> []s
> 
> 2008/5/21 Dickson Guedes <[EMAIL PROTECTED] 
> >:
> 
> Carlos Madsen escreveu:
>  > Olá pessoal, vocês têm alguma idéia de como se converte um text em
>  > timestamp?!
> 
> teste=# SELECT CAST('2007-11-08 08:48:58.267329' as timestamp);
>  timestamp
> 
>  2007-11-08 08:48:58.267329
> (1 registro)
> 
> 
> Por acaso seria isso que voce queria Carlos?
> 


Além das opções já apresentadas você pode utilizar a função 
to_timestamp que evita eventuais problemas na interpretação da data 
pois você especifica em qual formato ela se encontra. Veja:
http://www.postgresql.org/docs/current/interactive/functions-formatting.html

bdteste=# SELECT to_timestamp('07/08/09 13:45:20', 'DD/MM/YY HH24:MI:SS');
   to_timestamp

  2009-08-07 13:45:20-03
(1 registro)

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


Re: [pgbr-geral] Criação de tabela no PostGree

2008-05-14 Por tôpico Osvaldo Rosario Kussama
Leandro DUTRA escreveu:
> 2008/5/14 Osvaldo Rosario Kussama <[EMAIL PROTECTED]>:
>> "USING INDEX TABLESPACE tablespace
> 
> Maravilha!  Coisa nova da 8.2?
> 
> 

Não, é da 8.0

Osvaldo

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


Re: [pgbr-geral] Criação de tabela no PostGree

2008-05-14 Por tôpico Osvaldo Rosario Kussama
Leandro DUTRA escreveu:
> 2008/5/14 jota. comm <[EMAIL PROTECTED]>:
>> As constraints ficam junto com a tabela na tabelspace que você definiu.
> 
> Não vou lembrar da sintaxe exata, mas de fato é um ponto fraco do
> PostgreSQL.  Algo como:
> 
> SET DEFAULT TABLESPACE ;
> 
> CREATE TABLE ...;
> 
> SET DEFAULT TABLESPACE ;
> 
> ALTER TABLE  ADD CONSTRAINT ...;
> 


Veja em:
http://www.postgresql.org/docs/8.3/interactive/sql-createtable.html
"USING INDEX TABLESPACE tablespace

 This clause allows selection of the tablespace in which the index 
associated with a UNIQUE or PRIMARY KEY constraint will be created. If 
not specified, default_tablespace is consulted, or temp_tablespaces if 
the table is temporary."

portanto:
constraint PK_ancCodigo primary key (ancCodigo)
USING INDEX TABLESPACE tbs_indices

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


Re: [pgbr-geral] Dúvidas em como montar Função q ue retorne cálculos e multiplos regitros.

2008-05-14 Por tôpico Osvaldo Rosario Kussama
Evandro Ricardo Silvestre escreveu:
> Rubens José Rodrigues wrote:
>> Pessoal,
>>
>> Até achei na internet algo que explicasse como criar funções mas
>> sinceramente não consegui e não entendi, vou passar o cenário e depois a
>> necessidade :
>>
>> Cenário :
>>
>> PG :=> PostgreSQL 8.2.4 on i686-pc-linux-gnu, compiled by GCC gcc (GCC)
>> 3.4.3 20041212 (Red Hat 3.4.3-9.EL4)
>>
>>
>> Cenário :
>>
>> TABELA A  TABELA B
>> CODUSUARIOSEQ
>> NOMEUSUARIO   CODUSUARIO REF TABELA A (CODUSUARIO)
>>   DATA
>>   DESCRICAOSERVICO
>>   VALOR
>>
>>
>> Necessidade :
>>
>> Criar uma function passando como parâmetro de entrada o período (x,y)
>> fizesse um sum nos valores entre o período x e y e retornasse :
>>
>> Exemplo de retorno :
>>
>> CODUSUARIO  |  NOME  |  VALOR
>> 001 RUBENS   1.00
>> 002JOSE 1.10
>> 003RODRIGUES1.20
>>   
> No seu caso é necessário criar um TYPE, assim por exemplo:
> 
> CREATE TYPE Meu_Tipo AS
>(codusuario character varying(3),
> nome character varying(200),
> valor numeric(20,2));
> 
> Depois crie a stored procedure que irá retornar da seguinte maneira:
> 
> CREATE OR REPLACE FUNCTION sp_teste()
>   RETURNS SETOF Meu_Tipo AS
> 
> Atente para o RETURNS SETOF.
> 
> Para retornar mais de um registro, basta utilizar o RETURN NEXT.
> 
> Expliquei meio por cima, tenta fazer, se não conseguir ou tiver duvidas 
> reporte na lista novamente que continuamos te ajudando.
> 


Só para dar o serviço completo:

CREATE FUNCTION sua_funcao(inicio date, final date) RETURNS SETOF 
seu_tipo AS $$
SELECT tab_a.codusuario, tab_a.nome, sum(valor)
  FROM tab_a JOIN tab_b USING(codusuario)
  WHERE tab_b.data BETWEEN $1 AND $2
  GROUP BY codusuario, nome
  ORDER BY codusuario;
$$ LANGUAGE SQL;

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


Re: [pgbr-geral] log de banco

2008-05-07 Por tôpico Osvaldo Rosario Kussama
Brasil Software escreveu:
> Brasil Software wrote:
>> Olá amigos tenho uma função que grava log do usuario, quando implementei 
>>o fonte para grava os campos alterados da um erro naq seguinte 
>> linha.
>>
>> SQL02 = 'SELECT new.nome INTO valornovo';
>> EXECUTE SQL02;
> Não é permitido fazer um INTO dentro de um EXECUTE.

Existe uma sutileza aqui.
Realmente um
EXECUTE 'SELECT ... INTO' não é suportado mas um
EXECUTE 'SELECT ...' INTO é.
Reparem a posição do ' (isto é a string que está sendo executada), não 
é um SELECT INTO mas sim um EXECUTE '..' INTO.
Vejam:
http://www.postgresql.org/docs/8.3/interactive/plpgsql-statements.html#PLPGSQL-STATEMENTS-EXECUTING-DYN


> Leia a mensagem de erro, ela deixa bem claro isso.
> Você poderia fazer isso que deseja sem jogar para uma string e
> executá-la ou da melhor forma: valornovo := new.nome;
> 
> Att
> 
> Evandro
> 
> Na verdade este fonte e dinamico "SQL02 = 'SELECT new.'|| campo || ' 
> INTO' valornovo'" para que todas as tabelas utilizem esta função.;
> 

Osvaldo

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


Re: [pgbr-geral] Generalizar nome de campo

2008-05-02 Por tôpico Osvaldo Rosario Kussama
Carlos Antonio Pereira escreveu:

> Estou precisando criar uma função parecida com o seguinte:
> 
> function atualiza_dados(campo)
> 
>   update dados set campo = valor
> 
> ou seja, preciso passar o nome do campo como parametro Isso é possivel?
> 


Veja o comando EXECUTE em:
http://www.postgresql.org/docs/8.3/interactive/plpgsql-statements.html#PLPGSQL-STATEMENTS-EXECUTING-DYN

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


Re: [pgbr-geral] Como juntar dois bancos de dados

2008-05-02 Por tôpico Osvaldo Rosario Kussama
Avelino Brun escreveu:
> Sr. Osvaldo!
> O que pretendo é com um comando simples trazer os dados da filial para a 
> matriz, desconsiderando os dados que já existirem na tabela.
> É claro que tenho o banco de dados bem organizado com indices e tudo o mais.
> O que pretendo é um comando único que me traga o conteúdo todo da filial 
> para a matriz.
> Se algum registro já existir não precisa trazer. E nem quero ficar fazendo 
> testes.
> Simples, trazer todos os clientes da filial, trazer todos os fornecedores da 
> filial, todas duplicatas, todos os pagamentos e assim por diante, mas com um 
> comando único.
> 
> Se ainda não entendem o que quero dizer coloco o seguinte:
> Tenho dois bancos de dados, um na matriz(matriz), outro na filial(filial).
> Quero trabalhar apenas com um banco de dados(geral).
> Como faço para que num banco de dados contenha todos os dados da matriz e 
> filial, mas com uma instrução única?
> 



Se você *não* estiver utilizando sequências em seus bancos de dados 
pode tentar o seguinte:

*Faça back-up de seu banco matriz.*

Execute no banco de dados da filial:
pg_dump --data-only --inserts --file=nome_do_arquivo --format=plain 
bd_filial

Verifique se é necessário utilizar a opção: --encoding=encoding

Verifique se o conteudo do arquivo nome_do_arquivo é realmente o esperado.

Execute no banco de dados da matriz:
psql --dbname db_matriz --file nome_do_arquivo

Emitirá erro para cada um dos inserts de registros duplicados.

Verifique se tudo está de acordo com o esperado, se não estiver 
restaure o back-up.

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


Re: [pgbr-geral] Como juntar dois bancos de dados

2008-05-02 Por tôpico Osvaldo Rosario Kussama
Avelino Brun escreveu:
> Sr. Osvaldo!
> O que pretendo é com um comando simples trazer os dados da filial para a 
> matriz, desconsiderando os dados que já existirem na tabela.
> É claro que tenho o banco de dados bem organizado com indices e tudo o mais.
> O que pretendo é um comando único que me traga o conteúdo todo da filial 
> para a matriz.
> Se algum registro já existir não precisa trazer. E nem quero ficar fazendo 
> testes.
> Simples, trazer todos os clientes da filial, trazer todos os fornecedores da 
> filial, todas duplicatas, todos os pagamentos e assim por diante, mas com um 
> comando único.
> 
> Se ainda não entendem o que quero dizer coloco o seguinte:
> Tenho dois bancos de dados, um na matriz(matriz), outro na filial(filial).
> Quero trabalhar apenas com um banco de dados(geral).
> Como faço para que num banco de dados contenha todos os dados da matriz e 
> filial, mas com uma instrução única?
> 



Que seja de meu conhecimento não existe tal comando.

Talvez alguma outra pessoa da lista possa fornecer o caminho das pedras.

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


Re: [pgbr-geral] Como juntar dois bancos de dados

2008-05-02 Por tôpico Osvaldo Rosario Kussama
Avelino Brun escreveu:
> Sr. Fabio, obrigado pelas respostas.
> O que pretendo é o segundo caso citado por vc, ou seja:
> Tenho dois dominios diferentes como se fossem matriz e filial.
> Quero juntar os dados em um dominio só, no caso todos os dados da filial 
> importar para a matriz como clientes, fornecedores...
> As tabelas são iguais, só preciso trazer o conteúdo da filial para dentro da 
> matriz de todas as tabelas. Ocorre que alguns registros são iguais e neste 
> caso não importa, mas dá erro e acaba não trazendo nada.
> Usei estas duas formas:
> pg_dump -U postgres -at tabela_origem -h host_origem banco | psql -h 
> host_destino banco -U postgres
> .
> psql -h ip_do_banco -U postgres nome_do_banco < 
> nome_do_banco_a_ser_migrado.sql
> 
> Atenciosamente
> Avelino Brun
> - Original Message - 
> From: "Fábio Telles Rodriguez" <[EMAIL PROTECTED]>
> To: "Comunidade PostgreSQL Brasileira" 
> Sent: Friday, May 02, 2008 9:11 AM
> Subject: Re: [pgbr-geral] Como juntar dois bancos de dados
> 
> 
> 2008/5/1 Avelino Brun <[EMAIL PROTECTED]>:
>> Fábio, obrigado pela dica.
>>   Fiz o teste, porém se tiver um registro duplicado não faz nada.
>>  Tem alguma instrução que permita gravar os registros que estão corretos?
>>  Usei desta forma a volta do backup
>>  psql -h ip_do_banco -U postgres nome_do_banco <
>>  nome_do_banco_a_ser_migrado.sql
>>
> 
> Caro Avelino. Você tem que definir melhor o seu problema para que nós
> possamos te ajudar efetivamente. Veja que você não explicou exatamente
> o que você está querendo juntar.
> 
> * Você pode estar querendo juntar 2 bancos de dados que possuem
> objetos diferentes, um com tabelas da contabilidade e outro com
> tabelas de RH. Neste caso, você só precisa criar esquemas diferentes
> no mesmo banco de dados e importar os objetos nos seus respectivos
> esquemas.
> * Você pode estar querendo juntar 2 bancos de dados que possuem os
> mesmos ojetos mas possuem dados separados, como dois clientes
> diferentes ou duas filiais da mesma empresa. Aqui o caso é
> completamente diferente, pois você terá que importar os dados em
> esquemas distintos e depois adicionar os dados de cada tabela em outra
> com um
> "INSERT INTO tabela_x SELECT * FROM tabela_y WHERE campo_pk NOT IN
> (SELECT campo_pk FROM tabela_x)"
> 
> Veja se o que você precisa se enquadra em algum dos dois casos antes
> de mais nada. Até agora não consegui descobrir exatatamente o que você
> precisa.
> 


Você precisa definir melhor o que deseja.
Em primeiro lugar você utiliza o verbo "juntar" que lembra junção que 
é uma operação muito bem definida mas, pelo que você disse 
posteriormente, não é o que deseja.

Me parece que você deseja mesclar duas tabelas que tem a mesma definição.
Você precisa definir o que são "registros iguais":
- todo o conteúdo é igual?
- apenas a chave é igual? qual chave?

Depois você precisa decidir o que fazer quando você encontra dois 
registros iguais:
- ignorar os dois;
- utilizar sempre o do banco 1;
- utilizar sempre o do banco 2;
- utilizar qualquer um dos dois;
- quer escolher caso a caso qual deve permanecer;
- nenhuma das alternativas anteriores.

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


Re: [pgbr-geral] Auxilio na indicação de Raid (o u não) e configuração do servidor.

2008-04-25 Por tôpico Osvaldo Rosario Kussama
Rubens José Rodrigues escreveu:
> Colegas Boa Tarde
> 
> Migraremos nosso atual servidor para o seguinte equipamento :
> 
> a) Intel Xeon E7310 Quad-Core de 1.60 GHZ (quatro processadores EM64T)
>16 GB Ram 667 MHZ
>5 discos de 500 GB SAS 15K RPM
> 
> b) A versão de nosso PG atual é PostgreSQL 8.2.4 on i686-pc-linux-gnu,
> compiled by GCC gcc (GCC) 3.4.3 20041212 (Red Hat 3.4.3-9.EL4)
> 
> c) Nossa base atual possui 289 GB e usamos como OLTP
> 
> d) No servidor atual criei 4 tablespaces em discos diferentes sendo que dois
> deles estão as tabelas com maior numero de inserções, alterações, exclusões,
> nos outros dois separamos os índices e outras tabelas "menos" requisitadas.
> 
> e) O banco chega a ter simultaneamente 150 requisições e mais ou menos
> 600.000 transacoes diárias. 
> 
> 
> 
> Minha dúvida é :
> 
> a) O que indicam em substituição ao RHEL?
> 
> b) A migração para o PG 8.3 é tranqüila?

O poblema que mais vejo ser colocado nas listas é decorrente da 
retirada de algumas conversões implícitas ("Non-character data types 
are no longer automatically cast to TEXT"). Se suas aplicações fazem 
uso dessas conversões então você tem que introduzir conversões 
explícitas em cada um desses comandos (comparações, concatenações etc).
A quantidade de trabalho vai depender de suas aplicações utilizarem de 
modo mais ou menos intenso tais conversões implícitas.
É fundamental rodar suas aplicações com a nova versão em ambiente de 
testes.


> 
> c) Deveríamos pensar em algum tipo de RAID? 
> 
> d) Indicariam algum tipo de configuração para este cenário?
> 


Osvaldo
___
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 com exceção de quebra de l inha

2008-04-16 Por tôpico Osvaldo Rosario Kussama
Diorgenes Felipe Grzesiuk escreveu:
> 
> Preciso fazer um select normal que me traga os dados de uma tabela,
> mas no campo titulo existem alguns registros que contem o titulo com
> quebra de linha no final. E na hora de fazer um select nesse registro
> estou tendo dificuldades...
> 
> Ex:
> 
> titulo = descricao do titulo\n
> 
> select titulo from tabela where titulo = 'descricao do titulo';
> 
> Preciso garantir que mesmo que o registro tenho quebra de linha no
> final do seu texto, eu consiga pegar a informação na condição do
> where
> 


Tente:
SELECT titulo FROM tabela WHERE titulo ~* E'descricao do titulo\n*$';

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


Re: [pgbr-geral] ERROR: operator does not exist: character varying = integer

2008-04-16 Por tôpico Osvaldo Rosario Kussama
Marco Merlin escreveu:
> 
> Migrei da versão 8.2.6 para a 8.3.1. meu SO é o windows 2003 server e 
> estou usando o encoding UTF8, quando inicio minha aplicação, o seguinte 
> erro é exibido.
> 
> |ERROR: operator does not exist: character varying = integer|
> 


Das Release Notes da versão 8.3:
"E.2.2.1. General
 *  Non-character data types are no longer automatically cast 
to TEXT (Peter, Tom)"

Sugestão: utilize cast explícito para fazer aconversão desejada.

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


Re: [pgbr-geral] Curso a distância de PostgreSQL

2008-04-11 Por tôpico Osvaldo Rosario Kussama
Paulo escreveu:
> Onde, horario, conteudo do curso ?

Onde: em sua máquina. É um curso à distância.
Horário: o que melhor lhe convier, creio que 1 hora por dia é 
suficiente. Este curso tem 2 semanas de duração.
Conteúdo: estará disponível a partir do dia 14.abr mas, certamente, 
cobrirá o básico do PostgreSQL.

Atenção: NÃO FORNECE CERTIFICADO (pelo menos para os que não são 
funcionários públicos)

Veja "Perguntas Frequentes" em:
http://comunidade.cdtc.org.br/


> 
> - Original Message - 
> From: "Leandro DUTRA" <[EMAIL PROTECTED]>
> To: "Comunidade PostgreSQL Brasileira" 
> Sent: Friday, April 11, 2008 4:10 PM
> Subject: Re: [pgbr-geral] Curso a distância de PostgreSQL
> 
> 
> 2008/4/11, Osvaldo Rosario Kussama <[EMAIL PROTECTED]>:
>> O Centro de Difusão de Tecnologia e Conhecimento iniciará um curso de
>>  PostgreSQL, aberto a comunidade, no próximo dia 14.abr.2008 (duração
>>  de 2 semanas).
> 
> Onde?
> 

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


[pgbr-geral] Curso a distância de PostgreSQL

2008-04-11 Por tôpico Osvaldo Rosario Kussama
O Centro de Difusão de Tecnologia e Conhecimento iniciará um curso de
PostgreSQL, aberto a comunidade, no próximo dia 14.abr.2008 (duração
de 2 semanas).

Quanto ao nível de abordagem os cursos oferecidos pelo CDTC são
introdutórios.

Inscrições em:
http://comunidade.cdtc.org.br/

Osvaldo

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


Re: [pgbr-geral] parâmetro para logar queries lentas

2008-04-10 Por tôpico Osvaldo Rosario Kussama
icjunior07 escreveu:
> 
> Nesta semana eu havia lido no fórum um tópico falando sobre alguns parâmetros 
> que acusavam quais queries
> estariam lentas no servidor para poder fazer análise de índices, estas 
> coisas, mas não estava marcando qual
> seria este parâmetro. Eu dei uma procurada mas não encontrei.
> Será que alguém tem os nomes destes parâmetros ou algum link para isso?
> 


Provavelmente você está se referindo ao "log_min_duration_statement" 
em 18.7. Error Reporting and Logging / 18.7.2. When To Log
http://www.postgresql.org/docs/8.3/interactive/runtime-config-logging.html#RUNTIME-CONFIG-LOGGING-WHEN

Lembre-se que serão listadas todas as queries que ultrapassarem o 
tempo especifícado, estando ou não com algum problema de otimização.

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


Re: [pgbr-geral] Otimizar Consulta

2008-04-10 Por tôpico Osvaldo Rosario Kussama
Evandro Ricardo Silvestre escreveu:
> ..:: Rodrigo (-_-) Machado ::.. wrote:
>> Bom dia pessoal, nao sei se posso postar este tipo de topico na lista, 
>> mas ca estou eu.
>> Sou bem iniciando no mundo SQL, e preciso otimizar esta consulta.
>>
>> select c_cpd, sum(n_cant) from ( 
>> select c_cpd, sum(n_cant) as n_cant from movie
>> where c_sucursal>='001' and c_sucursal<='001'
>> group by c_cpd
>> union all
>> select c_cpd, sum(n_cant)*-1 as n_cant from movis
>> where c_sucursal>='001' and c_sucursal<='001'
>> group by c_cpd
>> ) as movi
>> group by c_cpd
>> order by c_cpd
> Não sei se entendi direito, mas ai vai uma dica:
> 
> select movie.c_cpd, sum(movie.n_cant + (movis.n_cant)*-1) as n_cant 
> from movie
>JOIN movis ON (movis.c_cpd = movie.c_cpd)
> where movie.c_sucursal>='001' and movie.c_sucursal<='001'
> group by movie.c_cpd
> 
> Apenas é necessário validar se o join que montei é valido para seu 
> escopo, olhando a estrutura do seu select acredito que seja.
> Isso fica bem mais rapido e bem mais simples.
> 


Creio que o correto seria FULL OUTER JOIN no lugar da (INNER) JOIN.
Poderia também simplificar para: sum(movie.n_cant - movis.n_cant)

SELECT coalesce(movie.c_cpd, movis.c_cpd) AS c_cpd,
sum(movie.n_cant - movis.n_cant) AS n_cant
FROM movie FULL OUTER JOIN movis ON (movis.c_cpd = movie.c_cpd)
GROUP BY 1
ORDER BY 1

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


Re: [pgbr-geral] Comando CASE - PG 8.3.1 - Windows

2008-04-10 Por tôpico Osvaldo Rosario Kussama
Celso Cardoso escreveu:
> Bom dia pessoal.
> Sempre utilizei o comando CASE, porém, como estou utilizando o PG 8.3.1
> rodando com ODBC, deparei-me com algo curioso quando o campo em questão
> é do formato NUMERIC.
> Tenho o seguinte comando:
>  
> EXEC SQL
> UPDATE PRODUTO SET PROD_CUSTONOVO = CASE WHEN :PROD_CUSTONOVOW
> = 0 THEN NULL ELSE :PROD_CUSTONOVOW END
> WHERE  PROD_CODIGO= :PROD_CODIGOW
> END-EXEC
>  
> ERROR:  invalid input syntax for integer: "+0018.25"
>  
> Quero que, caso o campo a gravar que é o PROD_CUSTONOVOW seja ZERO, que
> grave NULL na tabela de PRODUTOS.
> O que ocorre é que, como este campo é um NUMERIC(10:2), o comando dá
> erro. Não que dê erro usando o PGADMIN, mas dá erro na minha aplicacao
> que roda sob ODBC. Peguei o erro quando acionei o LOG do Banco e
> percebi que ele coloca ASPAS SIMPLES no campo, ou seja, tratando-o como
> se fosse um String.
>  
> 
> ..COMANDO QUE O PG RECEBE (PEGO PELO LOG)
>  
> UPDATE PRODUTO SET PROD_CUSTONOVO=CASE WHEN '+0018.25'=0 THEN NULL
> ELSE '+0018.25' END WHERE PROD_CODIGO=3
> ERROR:  invalid input syntax for integer: "+0018.25"
>  
> Se este comando CASE é executado com campos CHAR, INT, etc..  não dá 
> erro. Porém, se o campo é um NUMERIC, dá este erro: ERROR:  invalid 
> input syntax for integer:
>  
> Voces tem algo a comentar sobre este erro?
>  


Tente utilizar o cast.
WHEN cast(:PROD_CUSTONOVOW AS NUMERIC(10:2)) = 0 THEN NULL

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


Re: [pgbr-geral] LENTIDÃO EM STORED PROCEDURE

2008-04-04 Por tôpico Osvaldo Rosario Kussama
Claudio Rogerio Carvalho Filho escreveu:
> Estou com problema nessa consulta. Já sei que o erro é na linha em 
> negrito, a rotina esta MUITO LENTA. Observem que eu não sei como fazer 
> um sql dentro de uma função, dai me utilizei de um FOR.
> 
> 
> 
> ALGUEM PODERIA ME AJUDAR A FAZER ESTA ROTINA FICAR MAIS RAPIDA?
> 
> 
> 
> CREATE OR REPLACE FUNCTION func_tem_atos_digitados(xmesref bpchar, 
> xcontrole integer)
>   RETURNS boolean AS
> $BODY$
> declare
>   tbARQEXA RECORD;
> begin
>   FOR tbARQEXA IN select * from arqexa where mesref = xmesref and 
> controle = xcontrole limit 1  LOOP END LOOP;
> 
>   if (not found) then
> return false;
>   else
>return true;
>   end if;
> end;
> $BODY$
>   LANGUAGE 'plpgsql' VOLATILE;
> ALTER FUNCTION func_tem_atos_digitados(xmesref bpchar, xcontrole 
> integer) OWNER TO postgres;
> 


Faça-a mais simples:

CREATE OR REPLACE FUNCTION func_tem_atos_digitados(xmesref bpchar, 
xcontrole integer)
   RETURNS boolean AS
$$
SELECT EXISTS(SELECT 1 FROM arqexa
   WHERE mesref = $1 AND controle = $2);
$$
LANGUAGE SQL;

Osvaldo
PS. Se arqexa for um tabela com muitos registros existem índices nos 
campos mesref e controle? Estatísticas atualizadas?
___
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: [ANNOUNCE] == Postgres Weekly News - April 01 2008 ==]

2008-04-01 Por tôpico Osvaldo Rosario Kussama
Ribamar Sousa escreveu:
> O que isso significa Osvaldo?
> 
> 2008/4/1, Osvaldo Rosario Kussama <[EMAIL PROTECTED]>:
>>
>>   Mensagem original 
>>  Assunto: [ANNOUNCE] == Postgres Weekly News - April 01 2008 ==
>>  Data: Tue, 1 Apr 2008 10:14:56 -0700
>>  De: David Fetter <[EMAIL PROTECTED]>
>>  Para: PostgreSQL Announce <[EMAIL PROTECTED]>
>>
>>  == Postgres Weekly News - April 01 2008 ==
>>
>>  The PostgreSQL project has ended.  Thanks to the world-wide community
>>  for participating.
>>


O mesmo que o fim do autovaccum proposto pelo Leonardo Cezar em 
http://planeta.postgresql.org.br/

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


[pgbr-geral] [Fwd: [ANNOUNCE] == Postgres Weekly News - April 01 2008 ==]

2008-04-01 Por tôpico Osvaldo Rosario Kussama


 Mensagem original 
Assunto: [ANNOUNCE] == Postgres Weekly News - April 01 2008 ==
Data: Tue, 1 Apr 2008 10:14:56 -0700
De: David Fetter <[EMAIL PROTECTED]>
Para: PostgreSQL Announce <[EMAIL PROTECTED]>

== Postgres Weekly News - April 01 2008 ==

The PostgreSQL project has ended.  Thanks to the world-wide community
for participating.


---(end of broadcast)---
-To unsubscribe from this list, send an email to:

[EMAIL PROTECTED]

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


Re: [pgbr-geral] [OFF-TOPIC] IBM investe na EnterpriseDB

2008-03-28 Por tôpico Osvaldo Rosario Kussama
Fellipe Henrique escreveu:
> Gente, sou novo nisso, mas o EnterpriseDB Postgre é o mesmo que o 
> PostgreSQL ?
> 


De http://www.enterprisedb.com/products/postgres_plus.do
"Postgres Plus is an easy-to-use lightning-fast and massively scalable 
open source database for today's Web 2.0 and next generation 
applications. *Built on PostgreSQL, the world's most advanced open 
source database*, Postgres Plus is an open source, pre-configured 
binary distribution that simplifies enterprise deployment, eliminating 
the need to manually assemble and integrate software components from a 
variety of web locations."

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


Re: [pgbr-geral] Recuperando dados de uma tabela

2008-03-28 Por tôpico Osvaldo Rosario Kussama
Emerson - Senda escreveu:
> 
> Alguém aqui já conseguiu recuperar dados que foram excluidos 
> acidentalmente em uma tabela?
> 


Sim.
Use pg_restore.

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


  1   2   3   4   >