== 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 discussã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 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ção 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 d’algumas 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 re-tentar 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üências 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 
caractere além de uma contagem
  de caracteres.  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 sub-vetores NULL, o que não parecia razoável.  Por 
falta de idéia melhor,
  agora trata sub-vetores 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 pesquisar 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
potencial 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