== Notícias Semanais PostgreSQL — 13 de novembro de 2006 ==

Foi liberado o PostgreSQL 8.2 β3.  Testai-o!  :-)

Simon RIGGS começou uma discussão na lista -hackers sobre como abordar o 
problema das ‘tabelas
quentes’.  Ele também propôs um projeto.  A discußão continua.

Lorenzo ALBERTON montou uma ‘página de dicas’ (/cheat sheet/) para o PostgreSQL,
http://www.alberton.info/postgresql_cheat_sheet.html


== PostgreSQL Product News ==

Nairo, http://www.nairo.eu./, é um sistema de jogos para navegadores da Teia 
que roda sobre Apache,
PHP4 e PostgreSQL 8.1.x ou posterior.  Esse projeto NairoGMS (Sistema Gestor de 
Jogos Nairo, /Nairo
Game Management System/) foi projetado para ajudar as pessoas a criarem seus 
próprios jogos para a
Teia.  Veja atualizações no sítio PgFoundry: 
http://pgfoundry.org/projects/nairogms/

Lançado o Navicat PostgreSQL 7.2.8 para MS Windows: http://pgsql.navicat.com/

Liberada a versão candidata 2 do pgAdmin III v1.6 (/Release Candidate 2/):
http://www.pgadmin.org/download/

Lançado o MicroOLAP PostgresDAC 2.3.6: 
http://microolap.com/products/connectivity/postgresdac/ 

Liberado o β do Continuent.org's Sequoia 3.0:
http://www.continuent.com/index.php?option=com_content&task=view&id=348&Itemid=88


== Empregos PostgreSQL em novembro ==

http://archives.postgresql.org/pgsql-jobs/2006-11/threads.php


== PostgreSQL Local ==

Tudo foi global esta semana.


== PostgreSQL no Noticiário ==

Planeta PostgreSQL: http://www.planetpostgresql.org/

General Bits, arquivos e, ocasionalmente, novos artigos: 
http://www.varlena.com/GeneralBits/

As Notícias Semanais PostgreSQL foram compiladas para você esta semana por 
David FETTER e
Dave PAGE.  Traduzido por Leandro GFC DUTRA.


== Remendos Aplicados ==

Por Tom LANE:

- Suprime alguns avisos de ‘variável não inicializada’ emitidos pelo gcc 
somente em -O3 ou superior
  (provavelmente porque coloca mais coisas em linha).  Pela reclamaçõa de Mark 
MIELKE.

- Conserto de pg_get_serial_sequence(), que podia responder incorretamente com 
o nome de um índice
  numa coluna definida sobre o tipo serial, em vez do nome da seqüência 
associada.  Efeito colateral
  das recentes mudanças nas dependências do tipo serial.  Do erro #2732 de 
Basil EVSEENKO.

- Limpeza dalgumas referências que descreviam %p incorretamente como um caminho 
completo, por Simon
  RIGGS.

- Melhoria da formatação de descrições de argumento de PQexecParams, por Theo 
KRAMER.

- Em create_function.sgml, enfatiza que funções imutáveis e estáveis não podem 
modificar a base de
  dados.  xfunc.sgml já era bastante categórico a esse respeito, mas não custa 
esclarecer aqui
  também.

- Corrige erros na coluna key_column_usage.position_in_unique_constraint 
recentemente adicionada ao
  information_schema (uma adição do ISO SQL:2003).  O código original falhava 
se uma coluna
  referenciada participava em mais de uma entrada constante de pg_constraint.  
Além disso, também
  não funcionava se uma chave estrangeira baseava-se diretamente num índice 
único sem frescuras
  sintáticas de restrição de integridade.  Esse caso está fora da especificação 
ISO SQL, mas o PG
  sempre o suportou, então é razoável que nosso information_schema lide com 
isso também.  Do erro
  #2750, relatado por Stephen HABERMAN.

- Corrige set_joinrel_size_estimates() para estimar tamanhos de junções 
externas (OUTER JOIN) mais
  precisamente: temos de distinguir entre os efeitos da cláusula ON da própria 
junção e os efeitos
  das cláusulas internas.  Deixar de fazê-lo foi uma gambiarra antiga, mas está 
na hora de ser mais
  esperto.  Do exemplo de Thomas HALLGREN.

- Muda os substitutos de renomeação e desligamento do MS Windows para que 
vençam em 30 segundos em
  vez de retentar indefinidamente.  Também modifica xlog.c para que, se falhar 
ao renomear um
  segmento de xlog antigo para uma posição futura, desligue o segmento.  De 
acordo com a discussão
  sobre o erro #2712, no qual ficou claro que o MS Windows consegue lidar com o 
desligamento dum
  arquivo aberto, mas não com sua renomeação.

- Modifica aset.c para controlar explicitamente o tamanho pretendido de 
alocação de bloco.  O código
  anterior baseava-se no tamanho efetivamente alocado do último bloco, o que 
fazia com que se
  comportasse estranhamente se a primeira alocação em determinado contexto 
fosse maior que
  ALLOC_CHUNK_LIMIT: alocações subseqüentes baseariam-se nisso e não na série 
pretendida de tamanhos
  de bloco.  Visto durante o estudo dum problema de desperdício de memória por  
Tatsuo ISHII.

- Ajuste de accumArrayResult() para duplicar o tamanho de seus vetores de 
trabalho quando se precisa
  de mais espaço, em vez de incrementá-los por uma quantidade fixa; o método 
antigo desperdiça muito
  espaço e tempo quanto o tamanho final é grande.  Por reclamação de Tatsuo 
ISHII.

- Conserta problemas de desempenho em replace_text(), replace_text_regexp(), e
  text_to_array(): todos têm mau comportamento O(N^2) em seqüênicas de entrada 
longas sob
  codificações multi-byte, por percorrerem repetidamente o texto de entrada 
para identificar
  sub-seqüências cujas posições e comprimentos foram computadas em caracteres 
em vez de octetos.
  Corrigindo controlando a posição inicial do momento como um ponteiro caracter 
além de uma contagem
  de caracters.  Também evita algumas operações palloc desnecessárias.  
text_to_array() também
  vazava chamadas internas de memória (/memory intracall/) por falhas de pfree 
de seqüências
  temporárias.  Por reclamação de Tatsuo Ishii.

- Consertar o erro #2694 a respeito de um ARRAY[] cujas entradas são subvetores 
vazios.  De acordo
  com a discussão, se todas as entradas são vetores vazios, o resultado tem de 
ser um vetor vazio
  também, enquanto uma mistura de vetores vazios ou não deveria dar (e sempre 
dava) um erro.  No
  código histórico (/back branches/), o comportamento era estrito: qualquer 
entrada NULL
  imediatamente retornava uma saída NULL; então deixei o comportamento como 
estava.  HEAD
  simplesmente ignorava os subvetores NULL, o que não parecia razoável.  Por 
falta de idéia melhor,
  agora trata subvetores NULL exatamente como os vazios.

- Remove código de depuração específico para MS Windows; parece que o problema 
do fopen() não usar
  FILE_SHARE_DELETE era de fato o problema que procurávamos, dada a falta de 
reclamações recentes.

- Atualizar as notas de lançamento, preparando para o candidato 1 (RC1).

- Reverte para o método pré-8.2 de persquisar pela libm, quer dizer, sempre a 
incluir se vincula com
  sucesso.  Parece arriscado demais pressupor que funções padrão como pow() não 
sejam casos
  especiais no compilador.  Dum relatório de Andreas LANGE de que a compilação 
falha no cc do Sun
  Solaris com -fast.  Mesmo que não a consideremos uma opção suportada, 
preocupo-me que problemas
  similares apareçam com outros compiladores.

- Livra-se de dependências desnecessárias em DataDir: onde possível, o 
/backend/ deve basear-se em
  sua configuração de diretório de trabalho.  Também policia o estilo de 
mensagens em
  contrib/adminpack.

- Implementa a correção da recuperação até o momento (/PiT recovery/) 
retroativamente para a versão
  8.1.  Pode-se dizer que isso deveria ser corrigido na 8.0 também, mas 
precisaria de muito mais
  código porque a 8.0 não percorre pg_database convenientemente na 
inicialização.  A solução manual
  para o problema é possível na 8.0 (é só remover os arquivos pg_internal.init 
antes de começar a
  aplicar os registros de refazer (/write-ahead logs replay/), o que parece 
suficiente.

- Corrige riscos recentemente identificados de recuperação até o momento; a 
cópia de segurança usada
  pode conter arquivos de inicialização de relcache vencidos 
(pg_internal.init), e não há mecanismo
  para atualizá-los durante a aplicação dos registros de refazer.  A solução 
mais fácil seria
  simplesmente remover os arquivos init no fim da inicialização, e deixar que o 
primeiro processo
  iniciado em cada base de dados tome conta de reconstruir os arquivos de 
inicialização.  Simon
  RIGGS e Tom LANE.

- Conserta problemas recentemente analisados com o manejo do congelamento de 
XID, particularmente em
  cenários de recuperação até o momento.  Agora incluímos nos registros de 
refazer a substituição
  dos XIDs velhos com FrozenTransactionId, para que essa substituição 
propaga-se garantidamente para
  as bases de dados escravas via recuperação até o momento.  Além disso, em vez 
de basear-se na
  preservação dos bits de dica, pc_clog não é truncado até que todas as 
instâncias dum XID tenham
  sido reconhecidamente substituídas com FrozenTransactionId.  Acrescenta novas 
variáveis GUC e
  pg_autovacuum as colunas para permitir a gestão da política de congelamento, 
para que os usuários
  possam balancear o tamanho do pc_clog e a quantidade de trabalho de 
congelamento a se fazer.
  Revisa o código já existente que força o autovacuum de tabelas próximas do 
ponto de virada para
  torná-lo mais robusto; também revisa a lógica de autovacuum para que o vacuum 
anti-virada ocorra
  por tabela em vez de por base de dados.  Forçado o initdb por causa de 
mudanças nos catálogos de
  pg_class, pg_database, e pg_autovacuum.  Heikki LINNAKANGAS, Simon RIGGS, e 
Tom LANE.


Por Neil Conway:

- No código GIN, conserta alguns erros em comentários.

- Edição do capítulo sobre catálogo de sistema.  Especificamente, coloca em 
maiúsculas
  consistentemente o conteúdo da coluna ‘Descrição’ mas não inclui um ponto 
final, segundo a
  convenção no resto dos documentos.  TAmbém remove a coluna ‘Referência’ do 
catálogo quando não há
  colunas referentes, para concisão.  Várias outras correções de SGML e 
gramática.

- Melhorias menores na descrição de  archive_timeout.

- Limpeza menor de código pgcrypto: para UDFs declaradas estritas, a 
conferência de se os argumentos
  de função são NULL é desperdício.

- Dois erros tipográficos no README do tsearch2.

- Corrige um vazamento de memória do psql: vazávamos umas poucas conexões 
PGresult se ocorresse um
  erro de conexão ao executar uma das consultas para ‘\d <tabela>’.  Não era 
sério, mas valia a pena
  corrigir.  Remendo de Brendan JURD.

- Remove um comentário de 15 anos atrás questionando comportamento que agora é 
bem aceito:
  referenciar um parâmetro indefinido deve resultar em erro, não NULL.

- Correção menor de autenticação LDAP: se ocorre um erro, precisamos liberar a 
conexão LDAP
  manualmente via ldap_unbind().  Isso não é um problema importante na prática 
porque um erro
  normalmente causa o encerramento do processo, mas podemos limpar corretamente 
sem muitos
  problemas.  En passant, corrige um erro nas instruções do snprintf(): o 
parâmetro ‘tamanho’
  refere-se à memória temporária (/buffer/) de destino, incluindo o espaço para 
o terminador NUL.
  Também, dependendo do valor de NAMEDATALEN, o código velho podia permitir um 
transbordamento de
  memória temporária (/buffer overflow/).


Por Michael MESKES:

- No ecpg, um remendo do Peter HARRIS para liberar estruturas auto_mem na 
conexão.


Por Peter SIGAEV:

- Novo README para tsearch2.


== Remendos rejeitados ==

Ninguém ficou desapontado esta semana :-)


== Remendos pendentes ==

Andrew DUNSTAN submeteu um remendo, e um sucedâneo, que foram projetados para 
contornar um problema
pontecial quando módulos carregados por PL/PerlU ficam visíveis para código 
PL/Perl.

Brendan JURD mandou um remendo que diferencia gatilhos ativados dos desativados 
no \d do psql.

Heikki LINNAKANGAS mandou um remendo para o 8.3 que otimiza acesso de leitura a 
tabelas agrupadas
(/CLUSTERed/) com colunas estreitas.

Brendan JURD mandou um remendo que muda o remendo do Guillaume LELARGE para 
usar IYYY e IDDD para
formatos respectivamente de ano e semana ISO.

Magnus HAGANDER mandou um remendo que atualiza as perguntas-e-respostas do 
mingw FAQ para a situação
atual.



---------------------------(fim da transmissão)---------------------------

-- 
Leandro Guimarães Faria Corcete DUTRA <[EMAIL PROTECTED]>
http://orolix.com.br./
+55 (11) 2122 0302
Join the FSF: http://www.fsf.org/register_form?referrer=4686

Attachment: signature.asc
Description: Esta é uma parte de mensagem assinada digitalmente

_______________________________________________
pgbr-dev mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-dev

Responder a