Clique aqui para ler esse artigo em PDF.
Novidades do Firebird 1.5
Nos últimos meses o Firebird teve presença constante na mídia on-line: recentemente ficou em segundo lugar em uma pesquisa “Qual o seu banco de dados preferido?” realizada nos fóruns do site LinuxQuestions.org (http://www.linuxquestions.org/questions/showthread.php?s=&threadid=116360), com diferença de apenas 2 votos para o primeiro lugar, que acabou ficando com o MySQL. Os outros bancos que participaram da pesquisa foram o Postgres, Sybase, Berkeley DB, Oracle e DB2. A guerra de nomes promovida pelo Mozilla e pelo Firebird também contribuiu para colocar o banco de dados na mídia, e teve um final feliz com a mudança do nome do browser Mozilla Firebird para Mozilla FireFox, deixando o uso do nome Firebird livre para o banco de dados. O site da O’reilly, famosa editora de livros da área de informática, promoveu uma pesquisa sobre qual seria o banco de dados preferido dos seus visitantes e o Firebird/InterBase ficou em primeiro lugar. Tudo isso mostra que o Firebird está ampliando rapidamente seu espaço no disputado mundo dos SGDBs!
O lançamento da versão 1.5 promete manter o FB sob os olhares da mídia especializada por mais algum tempo. Essa versão é um marco na história do Firebird, pois é a primeira versão em que o banco dá sinais claros de independência do seu progenitor, o InterBase. Apesar da versão 1.0 ter apresentado várias características que já o diferenciavam do InterBase, ela ainda mantinha uma vínculo muito forte com o IB, usando inclusive os mesmos nomes de arquivos, chaves de registro no Windows, etc.
O Firebird 1.5 começou a ser desenvolvido há vários meses atrás e deveria ser apenas uma versão de consolidação, apresentando pela primeira vez a base de código convertida de C para C++. No entanto, foram tantas as novidades incorporadas nessa versão que a tornam praticamente uma “major version”.
Nesse artigo estarei apresentando as principais novidades disponíveis no FB 1.5. A listagem completa de todos os recursos, alterações e correções de bugs pode ser encontrada no release notes do Firebird. O link para download do Release Notes em português do Brasil pode ser obtido em http://www.sqlmagazine.com.br/apostilas/Firebird1.5_RNBR.zip. As novidades apresentadas aqui são específicas do Firebird e não podem ser encontradas em nenhuma das versões do InterBase disponíveis no momento.
Nota - História
O Firebird é um banco gratuito e Open Source que teve sua origem no código do Borland InterBase 6.0. Após a liberação do código do IB 6.0 como um produto Open Source, a Borland decidiu lançar as versões posteriores do IB sob o modelo comercial (software fechado e pago). Inconformados com essa atitude, muitos usuários e pessoas envolvidas com o InterBase se juntaram e criaram o Firebird, com a determinação de dar continuidade à um banco de dados que fosse gratuito e com código aberto.
Novidades
Mudanças nos nomes dos arquivos
O Firebird 1.0 utilizava os mesmos nomes de arquivos que o seu progenitor, o InterBase. O Firebird 1.5 trouxe novos nomes para esses arquivos, marcando sua identidade nos mesmos. A tabela 1 mostra os principais arquivos renomeados. A lista completa está no release notes do FB 1.5.
Nome no FB 1.0 |
Nome no FB 1.5 |
Descrição |
isc4.gdb |
security.fdb |
Banco de dados de segurança |
ibserver.exe |
fbserver.exe |
Servidor Firebird |
interbase.msg |
firebird.msg |
Mensagens de erro, etc. |
interbase.log |
firebird.log |
Log do servidor e cliente |
isc_config |
firebird.conf |
Arquivo de configurações do servidor no Linux |
Ibconfig |
firebird.conf |
Arquivo de configurações do servidor no Windows |
gds32.dll |
fbclient.dll |
Biblioteca cliente do Firebird no Windows |
libgds.so |
libfbclient.so / libfbembed.so |
Biblioteca cliente do Firebird no Linux |
Tabela 1. Arquivos renomeados no Firebird 1.5
Comandos CASE, COALESCE e NULLIF
O comando CASE permite retornar um valor baseado nas condições definidas. A introdução desse comando permitiu a implementação de duas outras funções: COALESCE e NULLIF. COALESCE retorna o primeiro valor não nulo de uma seqüência de valores passados como parâmetros. NULLIF recebe dois parâmetros de entrada e retorna NULL caso os valores dos 2 parâmetros sejam iguais; caso os valores sejam diferentes, o valor do primeiro parâmetro é retornado. Internamente COALESCE e NULLIF são convertidos em um CASE.
A listagem 1 mostra a utilização do CASE em um select para substituir o código utilizado no campo método_pagto (que representa o tipo de pagamento realizado em uma venda) pela sua respectiva descrição.
Na listagem 2 usamos a função coalesce para obter, em ordem de preferência, o nome fantasia de uma empresa, ou a razão social ou, caso nenhum desses esteja disponível, o string ‘Sem Nome’. A função nullif utilizada no update faz com que o campo estoque da tabela produtos fique nulo caso o valor atual dele seja 0.
SELECT v.Nota_Fiscal, v.total,
CASE v.metodo_pagto
WHEN 'V' THEN 'A vista'
WHEN 'P' THEN 'Parcelado'
WHEN 'C' THEN 'Cartão de crédito'
WHEN 'D' THEN 'Cheque Pré-datado'
ELSE 'Tipo desconhecido ''' || v.metodo_pagto || ''''
END
FROM Vendas