(Parte 9 de 13)

O primeiro argumento poderá ser uma expressão qualquer, constante ou identificador, que possa ser tratado como alfanumérico.

v.1.08 Notas da Versão Firebird 1.5 08 fevereiro 2004 Página 32

<pos> deve resultar em um inteiro. <pos> tem índice inicial 1, como outras declarações SQL. Nem <pos> nem <tam> podem ser parâmetros de Querys.

Como <pos> e <tam> são posições de byte, o identificador pode ser um blob binário, ou um blob sub_type 1 tipo texto, desde que o set de caracteres definido utilize um byte por caractere. A função não trata, no momento, blobs de texto com sets de caracteres Chineses (2 byte/caractere) ou Unicode (3 bytes/caractere no máximo). Para um argumento do tipo alfanumérico (ao contrário de um blob), a função suporta qualquer set de caracteres.

Disponível em SQL e DSQL.

WHERE

UPDATE ATABLE SET COLUMNB = SUBSTRING(COLUMNB FROM 4 FOR 9)

Consulte também a seção de “Funções Externas” (UDFs) e seguinte, para detalhes de alterações e adições à biblioteca de UDF padrão.

(1.5) Aperfeiçoamento do Marcador de Comentário de uma Linha Dmitry Yemanov

Os comentários de uma linha podem ser utilizados em qualquer posição, não apenas no início da linha. Assim, na versão 1.5, o marcador "--" pode ser utilizado para comentar a linha no final de uma declaração num script, stored procedure, trigger ou declaração DSQL. Assim, pode ser utilizado para comentar partes não desejadas de uma declaração. Todos os caracteres a partir do marcador ‘—‘ até o fim da linha (CR ou LF) serão ignorados.

Para uso em “scripts”, DSQL, “stored procedures” e “triggers”.

Exemplo -- Este é um comentário

Este novo marcador pode ser utilizado para comentar uma simples linha de código num “script”, numa declaração DDL/DML, “stored procedure” ou “trigger”.

A lógica para ignorar caracteres é a seguinte:

1. Ignorar os caracteres “--” se este par de caracteres for o primeiro depois de um indicador de Fim de Linha (LF em Linux/Unix, CRLF em Windows) 2. Continuar a ignorar os caracteres até o próximo indicador de fim-de-linha (EOL)

Esta lógica não prevista para ser aplicada juntamente com blocos de comentário lógico ( /* um comentário */ ). Em outras palavras, não use os marcadores “--” dentro de um bloco de comentário, e não utilize marcadores de bloco em uma linha que contenha marcadores “--”.

v.1.08 Notas da Versão Firebird 1.5 08 fevereiro 2004 Página 3

SESSÕES ISQL INTERATIVAS: Tenha em mente o seguinte quando trabalhar numa sessão ISQL interativa : O ISQL aceita particionar uma declaração em segmentos contínuos, mostrando a mensagem CON> até que seja recebido o caractere de terminação (normalmente ;). Se for digitado “--” no início de uma linha de continuação, a lógica de ignorar será mantida até encontrar a marcação de fim-de-linha (EOL) na tela ou arquivo de saída se pressionado ENTER. Uma fonte potencial de erros é contar que a linha seguinte também será ignorada.

O problema com o ISQL acontece porque ele tem seus comandos específicos que precisam ser tratados apenas pelo próprio ISQL. Se eles não forem identificados devido a uma colocação incorreta de "--", então serão encaminhados ao servidor. Obviamente, o servidor não entenderá os comandos do ISQL SET e SHOW e portanto eles serão rejeitados.

(1.0) Alter Trigger não mais incrementa o “Contador de Alterações” na Tabela

Quando o contador das alterações de meta dados de uma tabela qualquer atinge o valor máximo de 255, a base de dados fica indisponível. Uma operação de “Backup/Restore” é necessária para zerar o contador e para disponibilizar novamente a base de dados. A intenção desta funcionalidade é forçar limpezas da base de dados sempre que a sua estrutura tiver sofrido muitas alterações, e não para inibir o uso de recursos do servidor.

Anteriormente, cada vez que um trigger fosse definido como ATIVE/INATIVE através de uma operação ALTER TRIGGER, o contador de alterações da tabela associada era incrementado. Assim, a o uso da ativação e desativação de triggers como recurso normal de operação era afetado, porque este uso faria o contador crescer rapidamente.

Novas Palavras Reservadas

As seguintes palavras do Firebird devem ser adicionadas à lista de Palavras Reservadas publicadas para o Interbase 6.0.1.

BIGINT (1.5)CASE (1.5)CURRENT_CONNECTION (1.5) CURRENT_ROLE CURRENT_TRANSACTION (1.5) CURRENT_USER RECREATE ROW_COUNT (1.5) RELEASE SAVEPOINT

As seguintes palavras estão reservadas para o futuro:

As seguintes palavras estavam reservadas no Firebird 1.0, mas já não o são no Firebird 1.5:

v.1.08 Notas da Versão Firebird 1.5 08 fevereiro 2004 Página 34

As seguintes palavras não-reservadas são reconhecidas pelo Firebird 1.5, se utilizadas nos seus respectivos contextos estruturais:

Estas palavras novas no InterBase 6.5 e 7 (não reservadas no Firebird) devem também ser tratadas como reservadas, para manter a compatibilidade:

Funcionalidades no ISQL

Capacidade de ““readline”” na shel do isql

Mark O'Donohue Suporte ao histórico de comandos (como o readline do Unix) foi adicionado a interface do ISQL. Agora, as teclas Acima e Abaixo podem ser usadas para navegar pelos comandos já submetidos na sessão ISQL.

Funções Definidas pelo Usuário (UDF’s)

No ib_udf rpad (instring, tam, car) Juan Guerrero

Preenche a string fornecida, através da adição do caractere padchar até a string resultante ter o tamanho tam. A string de entrada poderá ter no máximo 32766 bytes. Tam não poderá exceder 32765 bytes.

Declaração DECLARE EXTERNAL FUNCTION rpad CSTRING(80), INTEGER, CSTRING(1) RETURNS CSTRING(80) FREE_IT ENTRY_POINT 'IB_UDF_rpad' MODULE_NAME 'ib_udf'; lpad (instring, tam, car) Juan Guerrero

Preenche a string fornecida, através da aposição do caractere car até a string resultante ter o tamanho tam. A string de entrada poderá ter no máximo 32766 bytes. Tam não poderá exceder 32765 bytes.

Declaração DECLARE EXTERNAL FUNCTION lpad CSTRING(80), INTEGER, CSTRING(1) v.1.08 Notas da Versão Firebird 1.5 08 fevereiro 2004 Página 35

RETURNS CSTRING(80) FREE_IT ENTRY_POINT 'IB_UDF_lpad' MODULE_NAME 'ib_udf'; log (x, y) Paul Vinkenoog

Esta função possuía um erro muito antigo, em que os argumentos x e y estavam invertidos. Deveria devolver o logaritmo base x de y, mas de fato devolvia o log base y de x. Foi corrigido. Se a função era utilizada previamente nas suas aplicações, VERIFIQUE O SEU CÓDIGO! Ou os resultados obtidos eram incorretos, ou os valores estavam deliberadamente trocados para que fossem obtidos os resultados corretos.

Em fb_udf

1. As funções *NVL e *NULLIF foram mantidas para manter compatibilidade com versões anteriores, mas estão obsoletas em razão da introdução das novas funções internas CASE, COALESCE e NULLIF. 2. Note que a fbudf não consegue processar campos string com um tamanho maior do que 32Kb - 1 bytes. Esta limitação poderá causar efeitos colaterais quando strings são concatenados antes de serem passadas como argumentos as UDFs. Se a soma dos campos ultrapassar o limite, o comportamento será indefinido. A função poderá devolver resultados sem sentido ou o código do fbudf poderá executar uma operação ilegal. 3. Em um Banco de Dados portado que tenha sido criado com o Firebird 1.0.x, e em que tenham sido declaradas as funções fbudf truncate e round, estas declarações não serão funcionais para o Firebird 1.5 porque as posições de entrada foram alteradas. Será preciso fazer um DROP das funções e uma nova declaração das mesmas a partir do fbudf.sql script do diretório de UDF da versão 1.5.

v.1.08 Notas da Versão Firebird 1.5 08 fevereiro 2004 Página 36

Novo Arquivo de Configuração – firebird.conf

O Diretório Raiz do Firebird

O diretório raiz de instalação do Firebird é utilizado de diversas formas, durante a instalação, e também como atributo para rotinas do servidor, parâmetros de configuração e de clientes. Como existem várias formas de indicar ao servidor onde encontrar o valor para este atributo, programadores e administradores de sistema devem conhecer a lógica de precedência que o servidor observa na partida, para a determiná-lo corretamente.

Win32 Superserver e Classic (tanto o servidor como o cliente): 1) Variável de ambiente FIREBIRD 2) Parâmetro RootDiretory no firebird.conf 3) Registro:

HKLM\SOFTWARE\ SOFTWARE\Firebird Projet\Firebird Server\Instances\DefaultInstance verificando a chave RootDiretory. 4) O diretório um nível acima ao do executável do servidor.

Win32 Embedded (Servidor Embutido): 1) Variável de ambiente FIREBIRD 2) Parâmetro RootDiretory no firebird.conf 3) O diretório onde fbembed.dll (renomeado fbclient.dll) está localizado.

Linux Classic: 1) Variável de ambiente FIREBIRD 2) Parâmetro RootDiretory no firebird.conf 3) Caminho padrão de instalação (/opt/firebird)

(Parte 9 de 13)

Comentários