Firebird\u2122 Vers\u00e3o 1.5
Notas da Vers\u00e3o v.1.5
0 8 d e Fev erei ro d e 2 0 0 4 \u2013 Vers\u00e3o 1 . 0 8
Conte\u00fado Not as Gerai s Par\u00e2met ros firebird. conf (cont inua\u00e7\u00e3 ! Espec\u00edficos Wi ndows Novas Funcional idades Compat ibi lidade com Vers\u00f5es Anter ior es ! Espa\u00e7o de Or dena\u00e7\u00e3o ! Compat ibi lidade Aper fei \u00e7oamento da Li nguagem ! Ti pos de Campos Al ias de Ar quivos de BD ! Met a dados ! Conex\u00e3o usando um al ias ! DSQL ! Nomeando bases de dados no Wi ndows ! PSQL Equi pe de Desenvolvi ment o do Fi rebird ! Fi rebird 1. 0. x Notas de Instal a\u00e7\u00e3o Novas Palavras Reser vadas ! Wi ndows 32-bi t Funcional idades ISQL ! Li nux/ UNIX Fun\u00e7\u00f5es Defini das pelo Usu\u00e1rio ! (USDoFla s)r is ! na bi bl iot eca ib_udf ! MacOS X ! na bi bl iot eca fbudf ! Fr eeBSD Novo Ar quivo de Conf igura\u00e7\u00e3o\u2014ire Inf f or m bird a\u00e7 . conf \u00e3o Adici onal ! Par\u00e2m et ros rel acionados com o Si stFe m a erramentas e Dr ivers ! Relat ivos aos Recursos Document a\u00e7\u00e3o ! Relat ivos \u00e0s Comuni ca\u00e7\u00f5E ersros Corrigi dos ! Espec\u00ed ficos POSIX
Notas Gerais O Servi dor de Banco de dados Fi rebird\u2122foi desenvolvi do por um gr upo independente de pr a partir do c\u00f3di go fonte or igi nal do Int er Base\u2122que foi di sponi bi lizado pela Borland sob Publ ic Li cense v. 1. 0\u201d , em 25 de Julho de 2000.
O desenvolvi ment o do c\u00f3di go do Fi rebird 2 come\u00e7ou antes mesmo do t\u00e9r mi no d pr imeira vers\u00e3o do Fi rebird 1, com a adapta\u00e7\u00e3o do c\u00f3di go or igi nal de C para C geral . O Fi rebird 1. 5 \u00e9 o pr imeiro lan\u00e7amento do c\u00f3di go do Fi rebird 2. \u00c9 um p pr ogramador es e para todo o pr oj et o Fi rebird, mas ai nda n\u00e3o \u00e9 um fim. Si multaneam
v.1. 08 Not as da Vers\u00e3o Fi rebi rd 1. 5
08 fevereiro 2004
P\u00e1gina 1
lan\u00e7ament o da vers\u00e3o 1. 5, novas al ter a\u00e7\u00f5es est\u00e3o sendo cont in desenvolvi ment o do Fi rebird 2. A manuten\u00e7\u00e3o do Fi rebird 1. 0. x pr ossegue normalment e \u2013 as corre\u00e7\u00f5e impor tantes do Fi rebird 1. 5 for am transportadas para a vers\u00e3o 1. 0.
Oss E veeiiss d Exxeeccuutt\u00e1 \u00e1 doo F vFirireebbirirdd11..5 5
Os execut \u00e1vei s do Fi rebird podem ser obtidos no sit e da Web: ht t p: / / sourcefor ge.net/ pr oj et / showf iles.php?gr oup_id=9028
Deessccrri\u00e7 \u00f5 ess d o ddoo F i\u00e7 dee V V\u00f5 eeerrss\u00e3 \u00e3 Firireoebbirirdd11..5 5
Wi n32: "WI-V1. 5. 0. nnnn Fi rebird 1. 5" Li nux: "LI-V1. 5. 0. nnnn Fi rebird 1. 5" E assim por adiante, sendo nnnn o n\u00famero da compila\u00e7\u00e3o. Vej a a Se\u00e7\u00e3o de Document a\u00e7\u00e3o para obter inf or ma\u00e7\u00e3o sobre a document a
Novas Funcionalidades
Noovvoo cc\u00f3 dig \u00e3 o \u00f3 igoo,, m mdeellhhoorr oottim imizizaa\u00e7 \u00e7 \u00e3 o
Esta vers\u00e3o foi desenvolvi da a partir da transposi\u00e7\u00e3o do c\u00f3di go or igi nal em ini ci ado em 2000 por Mi ke Nordell. Al \u00e9m do pr ocesso cont\u00ednuo de revis\u00e3o, limp foi desenvolvi do um novo gerenci ador de mem\u00f3ria, e for am introduzidas novas fun\u00e7\u00 Ai nda durante o desenvolvi ment o da vers\u00e3o 1. 5, o \u201c SQL Quer y Optimi zer\u201d rece melhorias e corre\u00e7\u00f5es, implementadas por Ar no Br ickman e outros, resul tando em g perfor mance de 30 a 60 % e mesmo mais em al guns casos.
Arrqquuititeettuurraa
Duas novi dades impor tantes nas pl at af or mas Wi ndows s\u00e3o os ser vi dores \u201cCl assic\u201d e o
!
!
N\u00e3o existia uma vers\u00e3o do modelo \u201c Cl assic\u201d para wi ndows ut ilizar m\u00faltipl os pr ocessador es, al go que ai nda n\u00e3o \u00e9 supor tado de for ma \u201c SuperServer\u201d para Wi ndows. Embora ut iliz\u00e1vel, a vers\u00e3o do modo como experiment al .
\u201c Embedded Server\u201d (ou ser vi dor embutido) \u00e9 uma DLL que int eg conex\u00e3o e um ser vi dor \u201c SuperServer\u201d para permi tir a constru\u00e7\u00e3o r\ mono usu\u00e1rio e transport\u00e1vei s.
V\u00e1rias e impor tantes extens\u00f5es for am adici onadas \u00e0 linguagem desde a vers\u00e3 expr ess\u00f5es condici onai s do SQL-92 CASE, COALESCE e NULLIF. Para inf or ma\u00e7\u00f5e outras extens\u00f5es \u00e0 linguagem, ref ira-se ao cap\u00edtul o Extens\u00f5es \u00e0 Li ng
M\u00f3 duulo a \u00f3 loss IInndssttaallaaddooss ee S Seegguurraann\u00e7 \u00e7 a
Se voc\u00ea est\u00e1 familiar izado com o Fi rebird 1. 0. x, vai notar v\u00e1rias di fer en\u00e7a nas regras para o seu acesso e local iza\u00e7\u00e3o. Em segui da dest acar emos al gumas dest a para inf or ma\u00e7\u00f5es detal hadas sobre a instal a\u00e7\u00e3o, estrut ur a em di sco e co respect ivas se\u00e7\u00f5es.
v.1. 08 Not as da Vers\u00e3o Fi rebi rd 1. 5
08 fevereiro 2004
P\u00e1gina 2
1. A maior parte dos m\u00f3dulos e constantes mudaram de nome. Na maior parte dos casos, o nomes possuem al guma variante da palavra \u201c firebird\u201d ou do pr ef ixo \u201c fb\u201 API faz agor a parte da bi bl ioteca compar tilhada \u201cfbclient.dl l\u201d no Wi ndows e \u201clib outras pl at af or mas. A exce\u00e7\u00e3o a esta regra \u00e9 o banco de dados de segur an\u00 chamava-se \u201cisc4.gdb\u201d , e agor a foi renomeado para \u201csecur ity. fdb\u20 2. Os ar quivos exter nos utilizados pelo ser vi dor (bi bl iotecas UDF, filtros BLOBs, bi bl iotecas de se caracter es, tabel as exter nas) est\u00e3o agor a suj ei tas a n\u00edveis de pr ote\u00e7\u00e3 em al guns casos, s\u00e3o por padr \u00e3o di fer entes dos ut ilizados nas vers\u00f5es 1. 0 3. O novo ar quivo de conf igura\u00e7\u00e3o do ser vi dor firebird. conf substitui os anter ior es ib e isc_conf ig (outras pl at af or mas), e cont \u00e9m mais op\u00e7\u00f5es de conf igura\u00e7 or gani za\u00e7\u00e3o e document a\u00e7\u00e3o int egrada. 4. Possibi lidade de cr iar apel idos para as bases de dados na vers\u00e3o 1. 5. Agor a \u00e9 permi opci onal ment e, ocul tar a local iza\u00e7\u00e3o de uma base de dados atribuindo-lhe um ape A local iza\u00e7\u00e3o or igi nal dos ar quivos encont ra-se em outro ar quivo, al iases.conf . O p desta fun\u00e7\u00e3o \u00e9 pr ot eger a local iza\u00e7\u00e3o f\u00edsica dos ar qu 5. Por padr \u00e3o (e por pr \u00e1tica) nos Servi dores Wi ndows utiliza-se o usu\u00e1rio \u201c o pr ograma que instal a o Fi rebird como ser vi \u00e7o na ini ci al iza\u00e7\u00e3o do sistema. Isto p vulnerabilidade de segur an\u00e7a, pois deixa uma porta aber ta para acesso a toda a m\u00e1qu 1. 5 do instal ador (instsvc.exe) acei ta usu\u00e1rios espec\u00edficos do wi ndows para a inst \u00c9 al tamente recomend\u00e1vel que se cr ie um usu\u00e1rio Fi rebird para este pr op\u00f3 nova funci onal idade se o seu ser vi dor estiver de al guma for ma conect ado \u00e0 int er n
\u201c Trrim dee C imm min ing Tg\u201d \u201d Caam mpdpooss V Vaarrcchhaarr eem m pprroottooccoollooss rreem moottooss
Foi t er mi nado o t rabal ho de implement ar est a fun\u00e7\u00e3o no cl iente 1. 5, e agor a os cam transfer idos \u201cright-trimmed\u201d pela rede (i.e. , os caracter es de \u201cespa\u00e7os\u20 t ransmi t idos), ocupando apenas o n\u00famero de caracter es ut ilizados mais 2 byt es. NOTA: Como \u00e9 o cl iente quem sol ici ta ao ser vi dor a execu\u00e7\u00e3o do \u201c trim\u201d 1. 5 (fbclient.dl l ou libf bclient.so) far \u00e1 o trim, mesmo quando conect ado a um ser vi dor de vers\u0 anter ior \u00e0 1. 5. Uma vers\u00e3o anter ior do cl iente n\u00e3o obter \u00e1 o \u201c trimmin ser vi dor 1. 5 ou post er ior .
Seem nttic lttip \u00f5 ess m\u00e2 \u00e2 icaa ddeenT Trrig igggeerrssp paarraaM M\u00fa \u00fa ipla lass aal\u00e7 \u00e7 \u00f5 e
Agor a voc\u00ea pode escr ever em uma \u00fanica \u201c Befor e\u201d ou \u201c Af ter \u201d di fer entes oper a\u00e7\u00f5es de tabel a : \u201cinser t\u201d, \u201dupdate\u201d ou \u201dde el abor a\u00e7\u00e3o e a manuten\u00e7\u00e3o de Tr igger s sem el imi nar a possibi lidade de e para cada fase.
Meellhhoorria coonnssttrraaiinncttss\u201d ia nnaa nnoom meennccllaattuurraaddee \u201c \u201c \u201d
Os \u00edndices que for \u00e7am a int egridade podem agor a possui r um nome defini do pelo usu\u00 At en\u00e7\u00e3o ! Se ut ilizada esta funci onal idade, o banco de dados n\u00e3o ser \u00e1 mais co com o Int er Base\u00ae.
N\u00fa meerroom \u00e1 xiim nddiicceess p \u00fa mm \u00e1 mooddeex\u00ed \u00ed po norr TTaabbeellaa ffooii aauum meennttaaddoo
Agor a - t anto na vers\u00e3o 1. 0 como nesta vers\u00e3o \u2014 o n\u00famero m\u00e1xi mo de \u0 para 256.
v.1. 08 Not as da Vers\u00e3o Fi rebi rd 1. 5
08 fevereiro 2004
P\u00e1gina 3
“PPeessssiim misisttic ic lloocckkin ingg””
Para os casos rar os em que for pr eciso aplicar um bl oqueio pessimi st a, esta versão adici ona uma n sintaxe para impor um bl oqueio de lei tur a em linhas enquanto el as são mani puladas pelo cl iente. U este recur so com muito cuidado.
“C Caacchhee ddee C Coonneexxããoo”” ààbbaassee ddee ddaaddooss d dee S Seegguurraannççaa
A conexão à base de dados de segur ança é mant ida em cache na versão SS. Isto é, o secur ity. fdb é carregado em memória quando a pr imeira conexão é fei ta, e é mantido em memória enquanto ho conexões cl ientes at ivas.
Meellhhoorreess m meennssaaggeen nss d dee eerrrroo
Sempre que possível, as mensagens que repor tam er ros de SQL são agor a mais detal hadas. É impo ressal tar que podem ocor rer mensagens estranhas se for em ut ilizados ar quivos int er base. msg ou firebird. msg de versões anter ior es.
Seerrvviiççooss A APPII nnaa vveerrssããoo C Cllaassssiicc ddoo L Lin inuuxx
Está di sponível o supor te limi tado para os Servi ços API para a versão do Cl assic Server em Li nux. Servi ços di sponíveis são os de gbak (backup/ restor e) e gf ix (validar base de dados, shutdown/ o et c). Os demais (gstat , registros do ser vi dor, et c. ) não for am testados e pr ovavel ment e permane não funci onai s.
Alltteerraaççõõeess n naass b bib ibliliootteeccaass d doo C Clliieen nttee Clientes Windows
A bi bl ioteca cl iente foi renomeada para fbclient.dl l. Todos os ut ilitár ios do ser vi dor (gbak, gf ix, e ut ilizam apenas esta bi bl iot eca. Conect e as novas aplicações di ret amente pela fbclient.dl l, sem necessidade da gds32.dl l (Recomendado). Para manter a compatibi lidade com as aplicações exist entes, é possível gerar uma cópi a da bi b fbclient.dl l com o nome de gds32.dl l usando o novo utilitár io ‘instcl ient.exe’. Para instruções mais detal hadas veja a seçãodeinstal ação e asnotasmais recentesdadi stribuição Wi ndows doFi rebird Clientes Linux
A bi bl iot eca cl iente do Super Server chama-se agor a “libf bclient.so”. Para compat ibi lidade com aplicações existentes, é instal ado um symlink “ libgds.so” que aponta para libfbclient.so. A bi bl ioteca local para aplicações embedded que se conect am ao ser vi dor Cl assic foi renomeada para libf bembed.so.
Arrqquuiv ivooss ee M Móódduulo loss rreennoom meeaaddooss Pl at af or ma
Todas
Módu lo
Variávei s de Ambi ente
Fi rebird 1 . 0
Fi rebird 1 . 5
Notas especi ai s
INTERBASE
FIREBIRD
Di ret ór io rai z de instal ação
INTERBASE_LOCK FIREBIRD_LOCK Local do ar quivo de Lock INTERBASE_MSG FIREBIRD_MSG
Local do ar quivo de Mensagem
INTERBASE_TMP FIREBIRD_TMP Di ret ór io ut ilizado como espaço para Sort
v.1. 08 Not as da Versão Fi rebi rd 1. 5
08 fevereiro 2004
Página 4
Pl at af or ma
Todas
Módu lo
Fi rebird 1 . 0
Fi rebird 1 . 5
Todas
Base de Dados Isc4.gdb secur ity.fdb de Segurança Ar quivo de Int er base. msg firebird. msg Mensagens Ar quivo de Log int er base. log firebird. log
Todas
Versão de ODS
Li nux
Bi nário do Gds_i net_ser ver Cl assic ser ver Gerenci ador ib_lock_mgr de lock Cl assic Cont rol e ibmgr .bi n Superser ver Bi nário ibser ver Superser ver Ar quivo de isc_conf ig Conf iguração Bi bl iot eca Li bgds.so Cl iente
Todas
Li nux Li nux Li nux Li nux Li nux
Li nux
Wi ndows Wi ndows Wi ndows
10
10. 1
Syml ink para N/ A Bi bl iot eca cl iente para Compat ibi lidade Guar di an ibguard. exe Bi nário Superser ver Bi nário Cl assic
fb_inet _ser ver
Notas especi ai s
Novo ODS (10. 1). Não pr ovoca nenhuma incompat ibi lidade com versões anter ior es de ODS mas a versão mesmo assim não é at ualizada automat icament e. Tanto o Fi rebird 1. 0 como o 1. 5 supor tam BD’s de ODS 10.0 e 10.1. Porém, a oper ação de backup/restor e é ai nda o pr ocediment o recomendado para mi gr ar BD’s para uma versão di fer ente do ser vi dor.
fb_lock_mgr fbmgr .bi n fbser ver firebird. conf libf bclient.so Cl iente remot o “ Thread-saf e” e cl iente TCP/IP local loopback para Superser ver libfbembed.so Cl iente local (mono usuário, não “ thr ead-saf e” ) para Cl assic libgds.so
fbguard. exe
ibser ver.exe
fbser ver.exe
N/ A
fb_inet_ser ver.eConexões locai s Wi ndows não di sponíveis. TCP/ IP, NetBEUI xe OK. Suporte a SMP.
v.1. 08 Not as da Versão Fi rebi rd 1. 5
08 fevereiro 2004
Não t em s uport e a SMP.
Página 5
Pl at af or ma
Módu lo
Fi rebird 1 . 0
Fi rebird 1 . 5
Notas especi ai s
gds32.dl l
fbclient.dl l
Os ut ilitár ios do ser vi dor de versão 1. 5, e todas as novas aplicações, apenasnecessitam da fbclient.dl l. Veja as notas a segui r sobre compat ibi lidade do gds32.dl l para aplicações antigas.
Wi ndows
Bi bl iot eca Cl iente
Wi ndows
Bi bl iot eca N/ A gds32.dl l Cl iente para compat ibi lidade Ar quivo de ibconfig firebird. conf Conf iguração Local IPCport Int er BaseAPI Fi rebirdAPI
Wi ndows Wi ndows
Com as conf igurações padr ões não é possível estabel ecer conexões locai s com a versão anter ior da bi bl iot eca cl iente (gds32.dl l). Se necessár io, o ser vi dor pode ser conf igurado para usar o nome antigo do mapa IPC, vi a firebird. conf . R di ret ór io é ar mazenado no Wi ndows “ Regi s t r y key”HKLM\SOFTWARE\HKLM\SOFTWAO E\ Fi rebirdPr oje parâmet ro "DefaultInstance". Borland\ Int er Base ct\Fi rebirdServ i.e. , não existe mais a chave Padr ão er \Inst ances "CurrentVersion", e a chave "Root Di ret or y" foi substituída por "DefaultInstance". No Wi ndows os novos nomes dos ser vi ços são “ Fi rebird Guar di an – Default Inst ance” e “ Fi rebird Se DefaultInstance” .
v.1. 08 Not as da Versão Fi rebi rd 1. 5
08 fevereiro 2004
Página 6
Compatibilidade
EssttrruuttuurraaE Em mD Dis isccoo ((O Onn--D Disiskk ssttrruuccttuurree-- O OD DSS))
A Estrut ur a Em Di sco do Fi rebird 1. 5 foi designada como 10. 1. Esta pequena at ualização do ODS fo necessár ia pelos segui nt es motivos : - Tr ês novos índices nas t abel as de sist ema - Pequenas al ter ações no BLR de dois t rigger s de sist ema - Melhorias na codi ficação do RDB$TRIGGER_TYPE. Al gumas outras novas funci onal idades que requerem al ter ações na ODS for am adiadas para a v At é lá, ser á possível transportar di ret amente bases de dados Fi rebird 1. 0. x. Tenha uma cópi a t das bases Fi rebird 1. 0. x ant es de t ransfer i-las para um ser vi dor 1. 5.
Baassee ddee D Daaddooss IInntteerrB Baassee™ ™
Caso quei ra “ br incar ” com o Fi rebird usando uma base de dados Inter Base, e pr etenda rever ter a b para o Inter base mais t ar de, faça um backup utilizando a versão correspondente do gbak do Inter Para começar a trabal har com o Fi rebird 1. 5, utilize o gbak deste para fazer o restor e do seu backup. O “ Oper at ions Guide” da Document ação do Int er Base® 6. 0 beta cont ém a sint axe dos coman ut ilitár io gbak para backup e restor e.
As bases de dados do IB 7. x e pr ovavel ment e do IB 6. 5 poderão trabal har incor ret amente depois d mi gr adas para o FB 1. 5 vi a backup/ restor e, se al gumas das novas funci onal idades específicas do IB tiverem sido ut ilizadas.
Looccaall ee N Noom meess d dee A Arrqquuiv ivoo
Nesta versão, uma quantidade substanci al de ar quivos foi renomeada, fruto do trabal ho da subst de nomes herdados pelo Int er Base® 6. Leia a secção de Local e Nomes de Ar quivos para obter a descr ições e al gumas recomendações.
Exxeeccuuççããoo S Siim muultltâânneeaa ddee S Seerrvviiddoorreess
As al ter ações ef et uadas nos nomes dos obj et os de sist ema permi tem que o Fi rebird 1. 5 sej a inst ut ilizado numa máquina que possua o Int er Base ou o Fi rebird 1. 0. x instal ado. No Wi ndows, o FB ai nda usa outra chave de registro. Se o ser vi dor for conf igurado para usar outras portas de rede, é possível execut ar várias instânci as do ser vi dor simultaneament e, ou execut ar a versão 1. 5 ao concor rent ement e com o IB ou o FB 1. 0. x.
Voollttaannddoo aaoo F Firireebbirirdd11..0 0..xx
Devi do ao enor me número de er ros resol vi dos, o compor tamento da base de dados pode variar fei to um “ downgr ade” de uma base v. 1. 5 para v. 1. 0. x. Concret amente, caso sej am cr iadas cha pr imárias, únicas ou est rangeiras como “ const rai nt s” , os valor es padr ões dos nomes dos índic incompat íveis com a v. 1. 0. x. Serão publ icados ar quivos README detal hando estes casos, na me que el es ocor rer em.
Coom mppaattib ibililiiddaaddeess eem m LLin inuuxx
Devi do a um hi stór ico de pr oblemas envolvendo o compilador GNU C++, as versões de Li nux do Fi re 1. 5 requerem versões gl ibc super ior es às que er am usadas anter ior ment e. Ist o faz com que, inf el izmente, estej amos num período em que é di fíci l pr ever que di stribuições Li nux poderão instal
v.1. 08 Not as da Versão Fi rebi rd 1. 5
08 fevereiro 2004
Página 7
executar a versão 1. 5. O quadro abai xo pode ser usado como ref er ênci a. Porém, agradecemos tod inf or mações que possam ser for neci das. Por favor , compar tilhe a sua experiênci a com estas e outra di stribuições linux no for um firebird-devel. Di stribu ição Red Hat
Mand rak e Su SE
Nível
Cl assi c
Su perser ver
7. x
Não
Não
8. 0
Sm i
Sm i
9. 0
Sm i
Sm i
8. x
Não
Não
9. 0, 9. 1, 9. 2
Sm i
Sm i
7. 3
Sm i – pacotes de instal açãD o esconhecido libgcc-3. 2-44.i586. rpm & libst dc++-3. 2- 44.i586. rpm ant es de inst al ar o Fi rebird 1. 5. Sm i 8. 0 Sm i (8. 1 Desconhecido)
8. 0, 8. 1
v.1. 08 Not as da Versão Fi rebi rd 1. 5
08 fevereiro 2004
Página 8
Extensões à Linguagem
TIIPPO OSS D DE EC CA AM MPPO OSS (1.5) Novos tipos de Campos SQL Nativos
BIGINT Ti po numérico int ei ro de 64 bi ts, compat ível SQL99, sinalizado e de escala zero. Di sponível apenas di al et o 3. Ex emp lo (s) i)
DECLARE VARIABLE VAR1 BIGINT;
ii)
CREATE TABLE TABLE1 (FIELD1 BIGINT);
MEETTA AD DA AD DO OS S (1.5) Melhorias a “named constraints” Dmit r y Yemanov
Os índices que for çam “ named constrai nt s” podem agor a ter um nome at ribuído, com ident ifica defini dos pelo usuário. Em versões anter ior es, embora fosse possível at ribuir um nome a “constrai nt s” do tipo PRIMARY, FOREIGN KEY e UNIQUE, o ident ificador do índice gerado automat icament e er a defini do pelo sist p. ex. RDB$FOREIGN13 e não podi a ser al ter ado. Esta cont inua a ser a regra quando esta nova funci onal idade não é ut ilizada. Porém, for am adici onadas extensões à linguagem para permi tir que : a) um índice gerado automat icament e pelo sist ema receber automat icament e como ident ificador o mesmo nome que a “ constrai nt ” que el e for ça. b) um índice que for ça uma “ const rai nt ” , com ou sem nome, possua el e mesmo um nome at ribuíd por um ident ificador e opci onal ment e ser construído em or dem descendente. NOTA: Não é ai nda possível ut ilizar um índice pr é-existente. Sin tax e
... [ADD] CONSTRAINT [
] [USING [ASC[ENDING] | DESC[ENDING]] INDEX ]
Av i so: Tem que garant ir que os índices “ for ei gn key” e “ pr imary key” usam o mesmo tipo de or denação (DESC | ASC). Ex empl os i) “Named constrai nt ” e at ribuição denomeao índice v.1. 08 Not as da Versão Fi rebi rd 1. 5
08 fevereiro 2004
Página 9
CREATE TABLE ATEST ( ID BIGINT NOT NULL, DATA VARCHAR(10)); COMMIT;
A decl ar ação segui nt e irá cr iar uma “ pr imary key constrai nt ” com o nome PK_ATEST e um índ descendente, com o nome IDX_PK_ATEST: ALTER TABLE ATEST ADD CONSTRAINT PK_ATEST PRIMARY KEY(ID) USING DESC INDEX IDX_PK_ATEST; COMMIT;
ii) Uma al ter nativaa i) ser ia: CREATE TABLE ATEST ( ID BIGINT NOT NULL, DATA VARCHAR(10), CONSTRAINT PK_ATEST PRIMARY KEY(ID) USING DESC INDEX IDX_PK_ATEST;
iii)
Esta decl ar ação cr ia a t abel a ATEST com uma pr imary key PK_ATEST. O índice corresponden ter á o mesmo nome: PK_ATEST.
CREATE TABLE ATEST ( ID BIGINT NOT NULL, DATA VARCHAR(10), CONSTRAINT PK_ATEST PRIMARY KEY(ID));
(1.5) Triggers de Multi Ações Dmit r y Yemanov
Os Tr igger s for am melhorados para permi tir o uso condici onal em várias oper ações. Sin tax e CREATE TRIGGER nome FOR tabela [ATIVE | INATIVE] {BEFORE | AFTER} [POSITION número] AS Corpo_do_Trigger
::= [OR [OR ] ] ::= {INSERT | UPDATE| DELETE} Ex empl os i)
CREATE TRIGGER TRIGGER1 FOR TABLE1 [ATIVE]BEFOREINSERTORUPDATEAS...;
ii)
CREATE TRIGGER TRIGGER2 FOR TABLE2 [ATIVE] AFTER INSERT OR UPDATE OR DELETE AS ...;
v.1. 08 Not as da Versão Fi rebi rd 1. 5
08 fevereiro 2004
Página 10
Al t er ação do ODS
O campo RDB$TRIGGER_TYPE (rel ação RDB$TRIGGERS) foi estendi do para permi tir estas oper açõ trigger s complexas. Se desejar obter mais detal hes, lei a o document o readme. universal _t rigger s.tx di ret ór io / doc/ sql .extensions na ár vore CVS do Fi rebird. Nota (s): 1. Tr igger s deapenasuma açãosãotot al ment e compat íveis aonível deODS com o FB1. 0. 2. O t ipo de RDB$TRIGGER_TYPE depende da sua or dem, i.e. , BEFORE INSERT OR UPDATE e BEFOR UPDATEORINSERT ser ão codi ficados de for ma di fer ente, embora compar tilhem a mesma semântic e sej am execut ados exat amente da mesma for ma. 3. As variávei s de cont exto OLD e NEW estão di sponíveis em trigger s de múltipl a ação. Se a ope que di sparar o trigger for incompatível com o seu uso (por exempl o, OLD numa oper ação de INSERT), todos os campos nesse cont exto ser ão trat ados como NULL. A tentat iva de at ribuir valor a uma variável num cont ext o invál ido irá pr ovocar uma exceção. 4. Foram cr iadas novas variávei s de cont exto - INSERTING/ UPDATING/ DELETING – que podem se ut ilizadas para verificar a oper ação em tempo de execução. (Veja mais adiante) (1.5) RECREATE VIEW
Exat amente o mesmo que CREATE VIEW se a vi ew ai nda não existir. Se el a j á existir, RECREATE V irá tentar destrui -la antes de cr iar um novo objet o. RECREATE VIEW irá fal har se o objet o estiver em uso. Ut iliza a mesma sint axe que CREATE VIEW. (1.5) CREATE OR ALTER {TRIGGER | PROCEDURE }
Esta decl ar ação irá cr iar um novo trigger ou pr ocedur e (se ai nda não existirem) ou al ter á-lo (caso j á exist am) e voltar a recompi lá-lo. A sint axe CREATE OR ALTER pr eser va as dependênci as e perm existentes. A sint axe é a mesma de CREATE TRIGGER | CREATE PROCEDURE, respect ivament e, exceto a decl ar aç “ OR ALTER” . (1.5) NULLs em “unique constraints” e índices Dmit r y Yemanov
Agor a é possível aplicar uma “ constrai nt” UNIQUE ou um índice UNIQUE a colunas que não possuam “ constrai nt ” NOT NULL, em acor do com o SQL-99. Tenha cuidado com a ut ilização desta nova funci onal idade se pl anej a rever ter a sua base de dados para Fi rebird 1. 0. x ou qual quer versão do Int er base. < definição de constraint ou definição de índice > ::= < especificação única > ( < lista de colunas únicas - LCU > ) < especificação única > ::= {{[constraint-name]UNIQUE | UNIQUE INDEX nome-índice]} | [constraint-name] PRIMARY KEY}
v.1. 08 Not as da Versão Fi rebi rd 1. 5
08 fevereiro 2004
Página 11
Onde < list a de colunas únicas > pode cont er uma ou mais colunas sem o at ributo NOT NUL especi ficação única > ut ilizada for UNIQUE OR UNIQUE INDEX. Note que t odas as colunas qu de uma chave pr imária ai nda pr ecisam ser decl ar adas como NOT NULL. A constrai nt permi te a existênci a somente daquel as linhas que ret or nem como verdadeiras as cond de pr ocur a (i) or (ii) , segui ndo a segui nt e lógica : i)
Se a < especi ficação única > for PRIMARY KEY, então a condição de pr ocur a deverá ser :
UNIQUE ( SELECT LCU FROM TN ) AND ( LCU ) IS NOT NULL
ii)
De outra for ma, a < condição de pr ocur a > deverá ser :
UNIQUE ( SELECT LCU FROM TN )
Nest e caso, a condição única não ser á verdadeira se ( SELECT LCU FROM TN ) ret or nar duas linhas e que os correspondentes segment os não nulos sej am iguai s. A “ constrai nt “ permi te a existênci a somente das linhas onde a já mencionada < condição de pr ocu sej a aval iada como verdadeira. Em um < UNIQUE INDEX > ou sobre uma constrai nt UNIQUE, dois conj untos de valor es de colunas ser á considerado di st int o, e assim legít imos se : a) Ambos os conj untos cont ém apenas nulos, ou b) Há pelo menos um par de valor es onde um dos valor es correspondentes é di fer ente de nulo e o outro é ou nulo ou um valor não nulo di fer ente. Ex empl os UNIQUE const rai nt : CREATE TABLE t (a INTEGER, b INTEGER, CONSTRAINT pk UNIQUE (a, b)); ou UNIQUE index: CREATE TABLE t (a INTEGER, b INTEGER); COMMIT; CREATE UNIQUE INDEX uqx ON t (a, b) ; COMMIT; INSERT INTO t VALUES (NULL, NULL); / * ok, nulos permi tidos */ INSERT INTO t VALUES (1, 2); / * assim como não nulos */ INSERT INTO t VALUES (1, NULL); / * e combinações */ INSERT INTO t VALUES (NULL, NULL); / * ok, pares nulos são consideredos di st int os */ mas INSERT INTO t VALUES (1, NULL); / * incor ret o porque os segment os não nulos correspondent es são */
Ou sej a, uma constrai nt PRIMARY KEY não permi te nulos enquanto uma constrai nt UNIQUE ou um UNIQUE INDEX permi te quantidades ar bi trár ias de nulos. Para resul tados multi-colunados de ( S UCL FROM TN ), as regras comuns de nulo se aplicam , i.e. (1, NULL) é di stinto de (NULL, 1) e um (NULL, NULL) é di stint o de qual quer outro (NULL, NULL).
v.1. 08 Not as da Versão Fi rebi rd 1. 5
08 fevereiro 2004
Página 12
DSSQ QLL (1.5) Expressões e variáveis como argumentos de procedure Dmit r y Yemanov
Chamadas a EXECUTE PROCEDURE Pr ocName() e SELECT FROM Pr ocName() agor a permi t em como ar gume variávei s locai s (em PSQL) e expr essões (em DSQL e PSQL). (1.5) Novas construções para Expressões Condicionais Ar no Br inkman
a) CASE
Permi t e que o resul t ado de uma coluna sej a det er mi nado com base na aval iação de um conj unt o d condições excl usivas.
Sin tax e ::= |
::= NULLIF { } ... ::= | ::= CASE . .. [ ] END ::=
CASE . .. [ ] END
::= WHEN THEN ::= WHEN THEN ::= ::= ELSE ::= | NULL ::= Ex empl os
i)
simples
v.1. 08 Not as da Versão Fi rebi rd 1. 5
08 fevereiro 2004
Página 13
SELECT o.ID, o.Description, CASE o.Status WHEN 1 THEN 'Confirmado' WHEN 2 THEN 'Em produção' WHEN 3 THEN 'Disponível' WHEN 4 THEN 'Enviado' ELSE 'Status Desconhecido: ''' || o.Status || '''' END FROM Orders o;
ii)
condici onal
SELECT o.ID, o.Description, CASE WHEN (o.Status IS NULL) THEN 'Novo' WHEN (o.Status = 1) THEN 'Confirmado' WHEN (o.Status = 3) THEN 'Em produção' WHEN (o.Status = 4) THEN 'Disponivel' WHEN (o.Status = 5) THEN 'Enviado' ELSE 'Status Desconhecido: ''' || o.Status || '''' END FROM Orders o;
b) COALESCE
Permi te que o valor de uma coluna sej a defini do por um sér ie de expr essões, onde a pr imeira de expr essões que resul te em um valor não nulo (NOT NULL) ser á o valor ret or nado. Formato ::= | COALESCE { }... Regras de Sin t ax e i) COALESCE (V1, V2) equi vale à segui nt e expr essão : CASE WHEN V1 IS NOT NULL THEN V1 ELSE V2 END ii) COALESCE (V1, V2,..., Vn), para n >= 3, é equi valente a um : CASE WHEN V1 IS NOT NULL THEN V1 ELSE COALESCE (V2,...,Vn) END Ex emplos SELECT PROJ_NAME AS NomeDoProjeto, COALESCE(e.FULL_NAME,'[> Não Atribuído <]') AS Funcionario FROM PROJET p LEFT JOIN EMPLOYEE e ON (e.EMP_NO = p.TEAM_LEADER); SELECT COALESCE(Phone,MobilePhone,'Desconhecido') AS Telefone FROM Relations
v.1. 08 Not as da Versão Fi rebi rd 1. 5
08 fevereiro 2004
Página 14
a) NULLIF
Retor na NULL para uma expr essão se el a resul tar no valor especi ficado, caso cont rár io ret or na o pr valor da expr essão. Formato ::= NULLIF : CASE WHEN V1 = V2 THEN NULL ELSE V1 END Ex empl o UPDATE PRODUTOS SET STOCK = NULLIF(STOCK,0)
(1.5) “SAVEPOINTs” compatíveis com SQL99 Nickolay Samof at ov
SAVEPOINTs defini dos pelo usuário (também conhecidos como “ nest ed t ransact ions” ) di sponi bi liza método conveniente para tratar er ros de lógica sem a necessidade de fazer um rol lback da transa como um t odo. Di sponível apenas em DSQL. Ut ilize uma decl ar ação SAVEPOINT para ident ificar um pont o de transação, ao qual ser á possív ret or nar at ravés de um “ Rollback” parci al . SAVEPOINT ;
especi fica o nome do SAVEPOINT que ser á estabel ecido. Depois de cr iado um SA você pode cont inuar o pr ocessamento, execut ar um commit ou um rol lback de toda a transação, o ai nda um rol lback at é o SAVEPOINT. Os nomes dos SAVEPOINT devem que ser únicos no cont exto de uma transação. Se um segund SAVEPOINT for estabel ecido com o mesmo ident ificador, o pr imeiro ser á sobreposto. ROLLBACK [WORK] TO [SAVEPOINT] ;
Est a decl ar ação execut a as segui nt es oper ações: - Rollback das al ter ações execut adasnatransaçãoapóso SAVEPOINT - Dest rói todososSAVEPOINTs cr iadosapóseste SAVEPOINT. Este SAVEPOINT é mant ido, para qu você possa fazer um rol lback para o mesmo SAVEPOINT múltipl asvezes. OsSAVEPOINTs anter ior a este também ser ão mant idos. - Li bera todos os locks obtidos implíci ta e expl ici tamente após o SAVEPOINT. Outras transaçõ tenham requerido acesso a linhas que estavam pr ot egidas pelas al ter ações ef et uadas após a cr iação do SAVEPOINT ter ão que cont inuar aguardando que a transação ter mi ne, por commit rol lback. Outras transações, que não tivessem requerido ai nda estas linhas, poderão requerer e acessa-las imedi at amente. Not a: est e compor t ament o pode ser al t er ado em fut ur as versões.
v.1. 08 Not as da Versão Fi rebi rd 1. 5
08 fevereiro 2004
Página 15
O “ undo log” do SAVEPOINT pode consumir uma gr ande quantidade de memória do ser vi dor, pr incipalment e se for em fei tas modi ficações sobre os mesmos registros múltipl as vezes na mesma transação. Ut ilize a decl ar ação RELEASE SAVEPOINT para liberar os recur sos consumidos para a manutenção do SAVEPOINT. RELEASE SAVEPOINT [ONLY];
A decl ar ação RELEASE SAVEPOINT destrói o SAVEPOINT do cont exto da transação menos que especi fique ONLY, todos os SAVEPOINTs cr iados desde o SAVEPOINT se também destruídos. Ex empl os de ut iliz ação de SAVEPOINTs create table test (id integer); commit; insert into test values (1); commit; insert into test values (2); SAVEPOINT y; delete from test; select * from test; -- não devolve nenhuma linha rollback to y; select * from test; -- devolve duas linhas rollback; select * from test; -- devolve uma linha
SAVEPOINTs int er nos Porpadr ão, oServi dorestabel eceum SAVEPOINTdesistemaautomát ico paracadatransação para possibi litar o seu ROLLBACK. Quando seexecut aum ROLLBACK, todasasal ter açõesef et uadasna transaçãosãodesfei tasut ilizando-seesteSAVEPOINTde transação, eposter ior ment eéef et uado o COMMITdamesma. Estalógicapermi tereduziraquantidade de “ garbage collection” or igi nadapor transações “ rol led back” .
Quando o volume de dados al ter ados a partir do SAVEPOINT de uma transação é demasiado gr ande (10^4-10^6 registros af et ados) o Servi dor libera o SAVEPOINT da transação, e ut iliza o mecani sm para, se necessár io, execut ar um RollBack da transação. Se for pr evista uma gr ande quantidade de al ter ações dentro de uma transação, pode se utilizar o TPB flag isc_tpb_no_auto para desabilitar o SAVEPOINT aut omát ico de t ransação. SAVEPOINTs e PSQL Implementar SAVEPOINTs defini dos pelo usuário em PSQL al ter a as regras de at omici dade para as decl ar ações, inclui ndo as decl ar ações de chamadas a pr ocedur es. O Fi rebird di sponi bi liza o tratam de exceções em PSQL para rever ter al ter ações ef et uadas em St or ed Pr ocedur es e Tr igger s. Cada decl ar ação SQL/ PSQL execut ada é assegur ada por um SAVEPOINT int er no automát ico, onde ou to decl ar ação é execut ada com sucesso, ou TODAS as al ter ações ef et uadas por el a são “ rol led back” uma exceção ocor re. Cada bl oco de trat amento de exceções PSQL está também incluído em um sist automát ico de SAVEPOINT. (1.5) Locking Explicito Nickolay Samof at ov
v.1. 08 Not as da Versão Fi rebi rd 1. 5
08 fevereiro 2004
Página 16
O uso da cl áusul a adici onal WITH LOCK of er ece uma capaci dade limi tada de lock pessimi sta exp para um uso cuidadoso e em condições em que a quantidade de linhas af et adas sej a a) extremam pequena (ideal ment e apenas uma) e b) cont rol ada com pr ecisão a partir do códi go da aplic NOTA: É rar o que sej a necessár io o uso de lock pessimi sta no Fi rebird, e esta funci onal idade de bem compreendida antes que seu uso sej a considerado. Sin tax e SELECT ... FROM [WHERE ...] [FOR UPDATE [OF ...]] WITH LOCK;
Se a cl áusul a WITH LOCK for bem sucedida, ser á estabel ecido um lock nas linhas sel ecionadas que impedirá que outras transações obtenham acessos de escr ita a qual quer uma delas, ou de suas dependentes, at é o fim da transação. Se a cl áusul a FOR UPDATEfor utilizada, o lock ser á aplicado a t odas as linhas, uma a uma, tão logo a linha seja transfer ida para o cache do ser vi dor. Assim, é possível que um lock que tenha sido bem sucedido ao ser requerido, fal he subsequent emente, quando for fei ta uma tentat iva de carregar um linha sobre a qual já tenha sido obtido um lock por uma outra transação. É essenci al que se compreenda os ef ei tos do isol amento de uma t ransação, assim como outros dos se at ributos, antes de se implementar um mecani smo de lock expl ici to em uma aplicação.
SELECT... WITH LOCK está di sponível em DSQL e PSQL. Pode ser bem sucedido apenas no pr imeiro nível de um SELECT de uma só tabel a. Não está di sponível para uma sub-quer y, nem em j oi ns. Não p ser utilizado com o oper ador DISTINCT, ou com uma cl áusul a GROUP BY, nem com qual quer outro t de agregação. Não pode ser ut ilizado a partir de uma vi ew, nem com uma tabel a exter na, ou no resul tado de uma st or ed pr ocedur e sel ecionável . Compreenden do a Cl au su l a WITH LOCK
O Servi dor considera cada registro cont ido numa decl ar ação lock expl íci ta, devolvendo ou a sua recente versão “ commited” , qual quer que sej a o estado da base de dados no moment o em que a decl ar ação foi submetida, ou uma exceção. O compor tamento do “ Wait” e a notificação de conf lito de lock depender ão dos parâmet ros transação especi ficados no bl oco TPB. Modo TPB
Compor t ament o
isc_tpb_consistency
Locks expl íci t os são el imi nados por locks implíci t os ou expl íci t os da t abel a e são ignor ados.
v.1. 08 Not as da Versão Fi rebi rd 1. 5
08 fevereiro 2004
Página 17
Modo TPB
Compor t ament o
isc_t pb_concurrency
Se um registro é modi ficado por al guma transação que foi “committed” depois que a transação, que está tentado adquirir o lock expl ici to, começou, ou al guma transação at iva modi ficou o registro, uma exceção de conflito fl ocor re imedi at ament e.
+ isc_t pb_nowai t isc_t pb_concurrency + isc_tpb_wai t
Se um registro é modi ficado por al guma transação que foi “committed” depois que a t ransação que est á t ent ando adquirir o lock expl ici t o começou, uma exceção de conf lito é imedi at amente ret or nada. Se uma t ransação at iva mant ém um lock do regist ro (at ravés de um lock expl ici t o ou de um lock normal de escr it a) , a t ransação, que requereu o lock expl ici t o, aguarda pela sua resol ução e, após o seu t ér mi no, t ent a novamente obt er o lock do registro. Assim, se a transação que bl oqueava o registro fizer o “commit” de uma versão modi ficada do regist ro, uma exceção de conflit fl o ser á recebida.
isc_t pb_r ead_committedSe uma t ransação at iva bl oqueia o regist ro (at ravés de um lock expl ici t o ou de u + isc_t pb_nowai t
lock normal de escr ita) , uma exceção de conf lito ocor re imedi at amente.
isc_t pb_r ead_committedSe uma transação ativa bl oqueia o registro (vi a um lock expl ici to ou por um lock + isc_tpb_wai t
normal otimi sta de escr ita) , a transação, que requereu o lock expl ici to, aguarda pela sua resol ução, e após o seu t ér mi no, t ent a novament e obt er o lock do regist ro. Nunca acont ecer á uma exceção de conf lit o nest e modo de TPB.
Quando um comando UPDATEencontra um regist ro bl oqueado por outra t ransação, el e ou recebe u exceção de conf lito, ou aguarda que a transação que possui o bl oqueio ter mi ne, dependendo do m TPB. O Compor tamento do Servi dor ser á o mesmo que ser ia caso o registro já tivesse sido modi ficado pela transação que estabel eceu o bl oqueio. Nenhum códi go de er ro especi ficado ser á ret or nado po conf lit os de lock envolvendo locks expl íci tos ou pessimi stas. O Servi dor garante que todos os registros recebidos por comando de bl oqueio específico estão ef et ivament e bl oqueados e que ef et ivament e todos os parâmet ros da cl áusul a “wher e” for am aval iados, desde que a condição de pr ocur a não dependa de outras tabel as, vi a j oi ns, subquer ie Garante ai nda que as linhas que não sat isfazem a condição WHERE não ser ão bl oqueadas pela transação. Porém, não pode garantir que não existam linhas que, embora sat isfaçam a cl áusul a “ wher e”, já estivessem bl oqueadas. Esta situação pode acontecer caso al guma outra transação e paral el o t enha execut ado um “ commit” durante o curso de execução do comando de bl oqu O Servi dor bl oqueia as linhas na al tur a do “ fet ch” . Este mecani smo tem conseqüências impor ta caso sej am bl oqueadas várias linhas de uma só vez. Muitos métodos de acesso ao Fi rebird, por pa ut ilizam pr ocessos de obtenção de linhas at ravés de pacotes de al gumas cent enas a cada acesso (“ buffer ed fet ches” ). A maior parte dos componentes de acesso a dados não devolverá as linhas cont idas no úl t imo pacot e onde t enha ocor rido um er ro. A decl ar ação FOR UPDATE of er ece uma t écni ca que pr evine a ut ilização de “ buffer ed fet ches” , a opção OF para at ivar UPDATEs posici onai s. Al t er nat ivament e, pode ser conf igurar nos componentes de acesso o tamanho do buffer de “ fetch” para 1. Isto permi tirá qu linha ef etivamente bl oqueada sej a pr ocessada, antes que a pr óxima linha sej a obtida e bl oquead
v.1. 08 Not as da Versão Fi rebi rd 1. 5
08 fevereiro 2004
Página 18
que um eventual er ro sej a devi dament e trat ado, sem a necessidade de se ef et uar um “ rol lback transação.
O Rollback de um SAVEPOINT implíci to ou expl ici to libera os bl oqueios de registros que tenham sid adquiridos nesse SAVEPOINT, mas não notifica outras transações que possam estar aguardando esta liberação. As aplicações não devem basear-se neste compor tamento, pois é pr ovável que el e sej modi ficado no fut ur o. Embora os locks expl íci tos possam ser ut ilizados para pr evenir ou pr ocessar er ros de conflito fl sp comuns, o volume de er ros de deadlock irá aument ar a menos que se estabel eça uma estrat égia cuidadosa e rigorosamente cont rol ada. A maior parte das aplicações não deveriam pr ecisar usa expl íci tos. Os pr incipais obj et ivos dos locks expl ici tos são (1) evitar custosos pr ocessamentos d gr ande volume de er ros de conflito fl s de at ualização, em aplicações de gr ande carga de pr ocessa (2) mant er a int egridade de obj et os mapeados em uma base de dados rel acional , em ambi ente cl ust er s. Se o seu uso de locks expl íci t os est ive for a dest as duas cat egor ias, ent ão a for ma usad corret a para execut ar essa t ar ef a no Fi rebird.
O lock expl íci to é uma “ Funcional idade Avançada” , não a use inadequadamente ! Embora sol uç obtidas at ravés do seu uso sej am impor tantes para web sites que lidam com mi lhares de escr itas concor rentes, ou para aplicações ERP/ CRM em uso em gr andes empr esas, a maior parte das aplic não pr ecisam oper ar nestas condições. Ex empl os
i) (simples)
SELECT * FROM DOCUMENT WHERE ID=? WITH LOCK
ii) (múltipl as linhas, pr ocessamento com cursor DSQL um-por-um)
SELECT * FROM DOCUMENT WHERE PARENT_ID=? FOR UPDATE WITH LOCK
(1.5) Melhorias no tratamento de agregados Ar no Br inkman
Or igi nalment e, o agrupamento er a permi tido apenas por colunas nomeadas. No Fi rebird 1. 0, j á e possível o agrupamento por uma expr essão UDF. Na versão 1. 5, várias extensões for am impleme para permi tir a pr ocessamento de funções agregadas na cl áusul a GROUP BY, que permi te agor a o posição da coluna na cl áusul a (a posição base-1 da esquer da para a di rei ta, como na cl áusul a OR BY), ou por uma variedade de expr essões. NOTA: Nem t odas as expr essões são permi t idas dent ro de uma cl aúsul a GROUP BY. Por exempl o, a concat enação não é ai nda permi t ida. Sin t ax e do Gr ou p By SELECT ... FROM .... [GROUP BY lista_group_by] lista_group_by: item_group_by [,lista_group_by]; item_group_by: nome_coluna | grau (ordinal) | udf | função_group_by;
v.1. 08 Not as da Versão Fi rebi rd 1. 5
08 fevereiro 2004
Página 19
função_group_by : função_valor_numérico | função_valor_texto | expressão_case ; função_valor_numérico
: EXTRACT '(' parte_timestamp FROM valor ')';
função_valor_texto
: SUBSTRING '(' valor FROM posição_inteiro ')' | SUBSTRING '(' valor FROM posição_inteiro FOR inteiro
')'
| KW_UPPER '(' valor ')' ;
O item_gr oup_by não pode ser uma ref er ênci a a uma função agregada (inclui ndo qual quer uma q estej a local izada dent ro da expr essão) do mesmo cont exto. HAVING A cl áusul a HAVING apenas permi te funções agregadas ou expr essões válidas que façam parte da GROUP BY. Anter ior mente er a permi tido utilizar colunas que não faziam parte da cl áusul a GROU ut ilizar expr essões não-válidas. ORDER BY No cont exto de um comando agregado, a cl áusul a ORDER BY permi te apenas expr essões válidas q sej am funções agregadas ou partes de expr essões que estej am na cl áusul a GROUP BY. Antigame permi t ido usar expr essões não-válidas. Fu nções Agregadas em “ su bqu er ies” É agor a possível ut ilizar em “ subquer ies” uma função agregada ou expr essão cont ida numa cl áusu GROUP BY. Ex empl os
SELECT r.RDB$RELATION_NAME, MAX(r.RDB$FIELD_POSITION), (SELECT r2.RDB$FIELD_NAME FROM RDB$RELATION_FIELDS r2 WHERE r2.RDB$RELATION_NAME = r.RDB$RELATION_NAME and r2.RDB$FIELD_POSITION = MAX(r.RDB$FIELD_POSITION)) FROM RDB$RELATION_FIELDS r GROUP BY 1 SELECT rf.RDB$RELATION_NAME AS "Relationname", (SELECT r.RDB$RELATION_ID FROM RDB$RELATIONS r WHERE r.RDB$RELATION_NAME = rf.RDB$RELATION_NAME) AS "ID", COUNT(*) AS "Fields" FROM RDB$RELATION_FIELDS rf
v.1. 08 Not as da Versão Fi rebi rd 1. 5
08 fevereiro 2004
Página 20
GROUP BY rf.RDB$RELATION_NAME
Mi st ur an do fu n ções agregadas de di fer en t es cont ex t os As funções agregadas de di fer entes cont extos podem ser ut ilizadas dent ro de uma expr essão. Ex empl o
SELECT r.RDB$RELATION_NAME, MAX(i.RDB$STATISTICS) AS "Max1", (SELECT COUNT(*) || ' - ' || MAX(i.RDB$STATISTICS) FROM RDB$RELATION_FIELDS rf WHERE rf.RDB$RELATION_NAME = r.RDB$RELATION_NAME) AS "Max2" FROM RDB$RELATIONS r JOIN RDB$INDICES i on (i.RDB$RELATION_NAME = r.RDB$RELATION_NAME) GROUP BY r.RDB$RELATION_NAME HAVING MIN(i.RDB$STATISTICS) <> MAX(i.RDB$STATISTICS)
Nota! Esta quer y ret or na valor es no FB1. 0, mas el es são incor ret os! Su bqueries são su por tadas nu ma Fu nção Agregada O uso de um “ singlet on sel ect” (que devolve apenas uma linha) numa função agregada é agor a supor tado. Ex empl o
SELECT r.RDB$RELATION_NAME, SUM((SELECT COUNT(*) FROM RDB$RELATION_FIELDS rf WHERE rf.RDB$RELATION_NAME = r.RDB$RELATION_NAME)) FROM RDB$RELATIONS r JOIN RDB$INDICES i on (i.RDB$RELATION_NAME = r.RDB$RELATION_NAME) GROUP BY r.RDB$RELATION_NAME
Fu nções agregadas “ Nest ed” A ut ilização de uma função agregada dent ro de outra função agregada (nested) é possível se a fun agregada int er na for de um cont exto inf er ior (ver exempl o) . Gr au de Gr ou p By (or di nal) A ut ilização do número do gr au da coluna de ret or no na cl áusul a ‘ GROUP BY’ “ reproduz” a expr essã lista do sel ect (à semel hança da cl áusul a ORDER BY). Isto faz com que, se o gr au se ref er e a uma subquer y, esta subquer y sej a execut ada pelo menos duas vezes.
v.1. 08 Not as da Versão Fi rebi rd 1. 5
08 fevereiro 2004
Página 21
(1.5) A Cláusula ORDER BY pode especificar expressões e localização dos NULL’s Nickolay Samof at ov
A cl áusul a ORDER BY permi t e que se especi fique qual quer expr essão válida para or denar os re da Quer y. Se a expr essão consistir de um número, el e ser á inter pr etado como o gr au da coluna pr eviament e. A or dem dos nulos no resul tado pode ser defini da utilizando-se a cl áusul a de posici onamento dos nulo Os resul tados podem ser or denados de for ma que os nulos sejam posici onados antes (NULLS FIRST) o depois (NULLS LAST) dos valor es não nulos. Quando nada é especi ficado, a posição dos nulos é NULL LAST. Sin tax e SELECT ... FROM .... ORDER BY order_list ....; order_list : order_item [, order_list]; order_item : [order_diretion] [nulls_placement] order_diretion : ASC | DESC; nulls_placement : NULLS FIRST | NULLS LAST;
Restrições • Se for especi ficado NULLS FIRST, nenhum índice ser á ut ilizado na or denação. • Os resul tados da or denação de valor es ret or nados por uma UDF ou St or ed Pr ocedur e ser ão imprevisíveis se os valor es ret or nados não puderem ser ut ilizados para deter mi nar a sequê lógica de or denação. • O número de vezes que uma UDF ou St or ed Pr ocedur e ser á acessado é indet er mi nado, não impor tando se a or denação é especi ficada pela expr essão pr opriamente ou por um número representando a expr essão na list a de colunas do SQL. • Uma cl áusul a de or denação aplicada a uma quer y com union pode ut ilizar soment e o número de gr au (posici onamento) para se ref er ir às colunas de or denação. Ex empl os
i)
SELECT * FROM MSG ORDER BY PROCESS_TIME DESC NULLS FIRST
ii)
SELECT FIRST 10 * FROM DOCUMENT ORDER BY STRLEN(DESCRIPTION) DESC
iii)
SELECT DOC_NUMBER, DOC_DATE FROM PAYORDER UNION ALL SELECT DOC_NUMBER, DOC_DATA FROM BUDGORDER ORDER BY 2 DESC NULLS LAST, 1 ASC NULLS FIRST
PS SQ QLL ((L Lin ingguuaaggeem m SSQ QLL ppaarraauussoo eem m SSttoorreedd pprroocceedduurreess ee ttrrig igggeerrss)) (1.5) EXECUTE STATEMENT Alex Peshkov
v.1. 08 Not as da Versão Fi rebi rd 1. 5
08 fevereiro 2004
Página 22
Extensão ao PSQL que pr ocessa uma st ring que cont ém uma decl ar ação SQL válida e a execut a como se esta tivesse sido submetida ao DSQL. Di sponível em trigger s e st or ed pr ocedur es. A Sn i t axe pode ter três variantes. Sin t ax e 1 Execut a como uma decl ar ação SQL que não devolve dados, por exempl o INSERT, UPDATE, DELETE, EXECUTE PROCEDURE ou qual quer decl ar ação DDL exceto CREATE/ DROP DATABASE. EXECUTE STATEMENT ;
Ex empl o CREATE PROCEDURE ExemploDinamico1 (Pname VARCHAR(100)) AS DECLARE VARIABLE Sql VARCHAR(1024); DECLARE VARIABLE Par INT; BEGIN SELECT MIN(SomeField) FROM SomeTable INTO :Par; Sql = ’EXECUTE PROCEDURE ’ || Pname || ’(’; Sql = Sql || CAST(Par AS VARCHAR(20)) || ’)’; EXECUTE STATEMENT Sql; END
Sin t ax e 2 Execut a como um comando SQL, que devolve apenas uma linha. Soment e SELECTs que devolvam apenas uma única linha (“ singlet on” ) podem ser ut ilizados com esta sint axe. EXECUTE STATEMENT INTO :var1, […, :varn] ;
Ex emplo CREATE PROCEDURE ExemploDinamico2 (TableName VARCHAR(100)) AS DECLARE VARIABLE Par INT; BEGIN EXECUTE STATEMENT ’SELECT MAX(CheckField) FROM ’ || TableName INTO :Par; IF (Par > 100) THEN EXCEPTION Ex_Overflow ’Overflow in ’ || TableName; END
Sin t ax e 3 Execut a como um comando SQL, devolvendo várias linhas. Qual quer oper ador SELECT pode se ut ilizado nesta variante. FOR EXECUTE STATEMENT INTO :var1, …, :varn DO ;
Ex empl o CREATE PROCEDURE DynamicSampleThree ( TextField VARCHAR(100), TableName VARCHAR(100)) RETURNING_VALUES (Line VARCHAR(32000)) AS
v.1. 08 Not as da Versão Fi rebi rd 1. 5
08 fevereiro 2004
Página 23
DECLARE VARIABLE OneLine VARCHAR(100); BEGIN Line = ’’; FOR EXECUTE STATEMENT ’SELECT ’ || TextField || ’ FROM ’ || TableName INTO :OneLine DO IF (OneLine IS NOT NULL) THEN Line = Line || OneLine || ’ ’; SUSPEND; END
Notas adici on ai s ao uso de EXECUTE STATEMENT
A string DSQL do ‘ EXECUTE STATEMENT’ não pode conter nenhum parâmetro em qual quer uma d for mas de sint axe. Todas as substitui ções de variávei s para o seu for mato fixo devem ser ef et uadas ant es de se pr ocessar a decl ar ação EXECUTE STATEMENT. Esta funci onal idade deve ser ut ilizada com caut el a, e após um exame cuidadoso de todos os fat or e Deve se obser var como regra a utilização de um EXECUTE STATEMENT apenas quando outros mét não são possíveis, ou quando a perfor mance do EXECUTE STATMENT for a mais acei tável . A decl ar ação EXECUTE STATEMENT é potenci al ment e insegur a nas segui nt es condições: 1. Não existe for ma de verificar a sint axe corret a da decl ar ação cont ida na string. 2. Não são fei t as verificações de dependênci a que possam garantir que t abel a ou colunas reque não tenham sido destruídas. 3. As oper ações ser ão mais lent as porque o comando cont ido t er á que ser pr epar ado a cada execuç 4. Os valor es devolvi dos são verificados e restritos para cada tipo de dado, para evitar resul tado imprevisíveis de conver são. Por exempl o, a string ‘ 1234’ ser ia conver tida para um int ei ro, 1 mas ‘ abc’ gerar ia um er ro de conver são. 5. Se a St or ed Pr ocedur e tiver pr ivi légios especi ai s sobre al guns objet os, a decl ar ação di nâmi ca submetida na string do EXECUTE STATEMENT não os herdará. Os pr ivi légios ser ão restritos ao at ribuídos ao usuário que execut ar a St or ed Pr ocedur e. (1.5) Novas variáveis de contexto Dmit r y Yemanov
CURRENT_CONNECTION
e
CURRENT_TRANSACTION
Cada uma destas novas variávei s de contexto devolve um identificador de sistema da conexão ativa e da transação corrente, respect ivament e. O tipo devolvi do é INTEGER. Di sponível em PSQL e DSQL. Como estes valor es são ar mazenados no cabeçalho do banco de dados, os seus valor es ser ão zerado cada “ RESTORE” da base de dados. Sin tax e
CURRENT_CONNECTION CURRENT_TRANSACTION
v.1. 08 Not as da Versão Fi rebi rd 1. 5
08 fevereiro 2004
Página 24
Ex emplos SELECT CURRENT_CONNECTION FROM RDB$DATABASE; NEW.TXN_ID = CURRENT_TRANSACTION; EXECUTE PROCEDURE P_LOGIN(CURRENT_CONNECTION);
ROW_COUNT
Retor na um intei ro, com o número de linhas af etadas pela úl tima decl ar ação DML. Di sponível em no cont exto de uma trigger ou stor ed pr ocedur e. Na implementação at ual, ret or na zero para uma decl ar ação SELECT.
Sin tax e ROW_COUNT
Ex empl o UPDATE TABLE1 SET FIELD1 = 0 WHERE ID = :ID; IF (ROW_COUNT = 0) THEN INSERT INTO TABLE1 (ID, FIELD1) VALUES (:ID, 0);
Nota: esta funci onal idade não pode ser ut ilizada para verificar a quantidade de linhas af et adas po decl ar ação EXECUTE STATEMENT. S QL CO D E e G DS CO D E
Cada variável de cont exto devolve um número int ei ro que corresponde ao códi go de er ro da exc ativa. Di sponível em PSQL, dentro do contexto de um bl oco de tratamento de exceção. Fora do b ambas ret or nam zero. A variável GDSCODE devolve uma representação numérica do códi go de er ro GDS (ISC), ie, ‘ 3355443 irá devolver 335544349.
Um bl oco de exceção 'WHEN SQLCODE' ou ‘ WHEN ANY’ irá receber um valor di fer ente de zero para a variável SQLCODE e devolver zero para GDSCODE. Apenas um bl oco ‘ WHEN GDSCODE’ irá receber u valor di fer ente de zero para a variável GDSCODE (e devolverá zero em SQLCODE). Se uma exceção cr iada pelo usuário ocor rer , ambas as variávei s SQLCODE e GDSCODE ter ão valor zero, independent emente do t ipo de bl oco de exceção. Sin tax e SQLCODE GDSCODE
Ex emplo
BEGIN ... WHEN SQLCODE -802 THEN EXCEPTION E_EXCEPTION_1; WHEN SQLCODE -803 THEN
v.1. 08 Not as da Versão Fi rebi rd 1. 5
08 fevereiro 2004
Página 25
EXCEPTION E_EXCEPTION_2; WHEN ANY DO EXECUTE PROCEDURE P_ANY_EXCEPTION(SQLCODE); END
Veja ai nda Melhorias no trat amento de exceções, mais a frente, e o README.except ion_handl ing no firebird2/ doc/ sql .extensions da ár vore CVS do Fi rebird.
document
INSERTING UPDATING DELETIN G
Estas t rês expr essões pseudo bool eanas podem ser ut ilizadas para t estar ou deter mi nar qual a o de DML que está ocor rendo. Di sponível em PSQL, apenas em trigger s. Pr oj etadas para uso no c de t rigger s universai s (ver METADATA mais adiant e). Sin tax e INSERTING UPDATING DELETING
Ex empl o
IF (INSERTING OR DELETING) THEN NEW.ID = GEN_ID(G_GENERATOR_1, 1);
(1.5) Melhorias no Tratamento de Excepções em PSQL Dmit r y Yemanov
A Sn i t axe comum para uma decl ar ação EXCEPTION em PSQL é: EXCEPTION {[nome] | [valor]};
As melhorias na versão 1. 5 permi tem: 1) Defini r uma mensagem para uma exceção em tempo de execução. 2) Pr ovocar novament e (“ re-rai se” ) uma exceção dent ro do cont exto do bl oco da exceção. 3) Obter um er ro numérico da exceção t rat ada. 1) Mensagen s de Ex ceção em “ Ru n-time” Sin tax e
EXCEPTION ;
Ex empl os i)
EXCEPTION E_EXCEPTION_1 'Erro!';
ii)
v.1. 08 Not as da Versão Fi rebi rd 1. 5
08 fevereiro 2004
Página 26
EXCEPTION E_EXCEPTION_2 'Tipo errado para o registro com o ID=' || new.ID;
2) Di sparan do novament e u ma ex ceção Nota – não tem qual quer ef ei to for a de um bl oco de exceção. Sin tax e
EXCEPTION;
Ex empl os i)
BEGIN ... WHEN SQLCODE -802 THEN EXCEPTION E_ARITH_EXCEPT; WHEN SQLCODE -802 THEN EXCEPTION E_KEY_VIOLATION; WHEN ANY THEN EXCEPTION; END
ii)
WHEN ANY DO BEGIN INSERT INTO ERROR_LOG (...) VALUES (SQLCODE, ...); EXCEPTION; END
3) Códi gos de Er ro em Temp o de Ex ecução Ver SQLCODE / GDSCODE (acima). (1.5) Declarações LEAVE | BREAK
Inter rompe o pr ocessamento de um loop, transfer indo o pr ocessamento para a decl ar ação após o E que delimi ta o loop. Di sponível apenas para estrut ur as WHILE, FOR SELECT e FOR EXECUTE; qu outro uso gerar á um er ro de compilação. O uso da cl áusul a SQL-99 LEAVE deverá ter pr ef er ênci a so o BREAK exist ente. Di sponível t anto em trigger s como em st or ed pr ocedur es. Sin tax e
BEGIN ; IF () THEN LEAVE; ; END
NOTA: LEAVE | BREAK e EXIT podem agor a ser ut ilizados em trigger s Declarações válidas de PLAN podem ser incluídas em Triggers I gnacio J . Or t ega
At é o moment o, um trigger que cont ivesse uma decl ar ação PLAN ser ia rej ei tado pelo compilad Agor a, uma decl ar ação válida de PLAN pode ser incluída e ut ilizada.
v.1. 08 Not as da Versão Fi rebi rd 1. 5
08 fevereiro 2004
Página 27
(1.5) Blocos BEGIN..END vazios Dmit r y Yemanov
Bl ocos BEGIN. .END vazi os são agor a acei tos em módulos PSQL. Por exempl o, pode-se agor a escr eve módulos “ stub” como: CREATE TRIGGER BI_ATABLE FOR ATABLE ATIVE BEFORE INSERT POSITION 0 AS BEGIN END ^
(1.5) Declarar e definir variáveis locais numa única declaração Claudio Valder r ama
Sm i plificação da sint axe para permi tir que variávei s locai s possam ser decl ar adas e ini ci al izadas e uma única decl ar ação. Sin tax e
DECLARE [VARIABLE] nome [{'=' | DEFAULT} valor];
Ex empl o
DECLARE my_var INTEGER = 123;
(1.0) SELECT [FIRST ()] [SKIP ()] (1.5) SELECT FIRST pode agora ter zero como argumento
O FB 1. 5 acei ta zero como ar gument o de FIRST. O resul tado ser á uma t abel a vazi a. Retor na as pr imeiras M linhas do resul tado da sel eção. A cl áusul a opci onal SKIP faz com que as pr imeiras N linhas sejam ignor adas, retor nando um conjunto de M linhas, a partir da linha N + 1. Na for ma mais simples, m e n são intei ros mas qual quer expr essão Fi rebird cujo resul tado seja um intei ro pode ser utilizada. Um identificador que represente um valor intei ro pode ser usado no em GDML, mas não em SQL ou DSQL. O parêntesis é obrigatór io para os ar gument os das expr essões e opci onal nos outros casos. Podem também ter sua defini ção variável , por exempl o, SKIP ? * FROM ATABLE ret or nará todos os registros após descartar as n linhas ini ci ai s, onde n ser á defini do através da variável "?". SELECT FI COLUMNA, COLUMNB FROM ATABLE ret or nará pr imeiras n linhas e descartar á as demais. A cl áusul a FIRST t ambém é opci onal , ou sej a, é possível inclui r SKIP numa decl ar ação sem FIRST p obter um conj unto de dados que excl ua as linhas indicadas pelo SKIP. Di sponível em SQL e DSQL exceto quando indicado o cont rár io. Ex empl os:
SELECT SKIP (5+3*5) * FROM MYTABLE;
v.1. 08 Not as da Versão Fi rebi rd 1. 5
08 fevereiro 2004
Página 28
SELECT FIRST (4-2) SKIP ? * FROM MYTABLE; SELECT FIRST 5 DISTINCT FIELD FROM MYTABLE;
Doi s pr obl emas com SELECT FIRST
1. O comando abai xo: delete from TAB1 where PK1 in (select first 10 PK1 from TAB1);
apagar á todos os registros da tabel a. Nossa! O “ sub-sel ect” marca as pr imeiras 10 linhas para el imi nação, apaga-as, marca as pr óximas 10, apaga-as, e assim sucessivament e at é que não exist mais linhas di sponíveis na t abel a. Cuidado! 2. Quer ies como esta:
... WHERE F1 IN ( SELECT FIRST 5 F2 FROM TABLE2 ORDER BY 1 DESC )
não funci onam como esperado, por causa da otimi zação pr ocessada atualmente pelo ser vi dor que t os pr edicados correl acionados WHERE. ..IN (SELECT. ..) em pr edicados correl acionados EXISTS. É ó que neste cont exto FIRST N não faz qual quer sentido: WHERE EXISTS ( SELECT FIRST 5 TABLE2.F2 FROM TABLE2 WHERE TABLE2.F2 = TABLE1.F1 ORDER BY 1 DESC )
Meellhhoorria iass n noo S Seett ddee C Caarraacctteerreess Adicionadas na versão 1.5 !
! !
Adici onada a “ collat ion” WIN1251_UA (para as linguagens russa e ucraniana) ao set WIN1251. Corrigi do o valor padr ão para Maiú/ Mi núsculas do WIN1251 Adici onada a ISO_HUN (para a linguagem Húngar a) ao set de caract er es ISO8859_2.
Novos set s de caracter es (“ no non- bi nary collat ions” ) adici onados
Blas Rodr iguez Somoza ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !
DOS737 PC Gr eek DOS775 PC Balt ic DOS858 Variant e do Cp850 com o caract er do Euro ( €) DOS862 PC Hebr ew DOS864 PC Ar abic DOS866 MS-DOS Russian DOS869 IBM Modern Gr eek WIN1255 Wi ndow s Hebr ew WIN1256 Wi ndow s Ar abic WIN1257 Wi ndow s Balt ic ISO8859_3 Lat in 3 (Esperant o, Malt ese, Pi nyi, Sami , Cr oat ian e out ras) ISO8859_4 Lat in 4 (Balt ic, Gr eenl andi c, Lappish) ISO8859_5 Cyrillic ISO8859_6 Ar abic ISO8859_7 Gr eek ISO8859_8 Hebr ew
v.1. 08 Not as da Versão Fi rebi rd 1. 5
08 fevereiro 2004
Página 29
! !
ISO8859_9 Turki sh ISO8859_13 Baltic
Adicionadas na versão 1.0 !
!
Foi adici onado o “ collat ion set ” Húngar o, sem di fer enci ação de maiúsculas, desenv por Sandor Szollosi (ssani@f reemail.hu).
Nesta versão o Fi rebird supor ta o set de caracter es ISO8859-2 (para a linguagem tc
EX XTTE EN NSSÔ ÔE ESS D DE E LLIIN NG GU UAAG GE EM M TTR RA AN NSSP PO OR RT TA AD DA ASS D DO OF FIIR RE EB BIIR RD D 11..0 0..xx
As segui nt es ext ensões de linguagem, int roduzidas no Fi rebird 1. 0. x, são reproduzidas aqui , para su conveniênci a. (1.0) CURRENT_USER e CURRENT_ROLE
Estas duas novas variávei s de cont exto for am adici onadas para permi tir ref er enci ar o USER e (se implement ado1) o ROLE do cont ext o da pr esent e conexão. CREATE GENERATOR GEN_USER_LOG; CREATE DOMAIN INT_64 AS NUMERIC(18,0); COMMIT; CREATE TABLE USER_LOG( LOG_ID INT_64 PRIMARY KEY NOT NULL, OP_TIMESTAMP TIMESTAMP, LOG_TABLE VARCHAR(31), LOG_TABLE_ID INT_64, LOG_OP CHAR(1), LOG_USER VARCHAR(8), LOG_ROLE VARCHAR(31)); COMMIT; CREATE TRIGGER ATABLE_AI FOR ATABLE ATIVE AFTER INSERT POSITION O AS BEGIN INSERT INTO USER_LOG VALUES( GEN_ID(GEN_USER_LOG, 1), CURRENT_TIMESTAMP, 'ATABLE', NEW.ID, 'I', CURRENT_USER, CURRENT_ROLE); END
CURRENT_USER é um sinôni mo DSQL de USER que apar ece no SQL st andard. El es são idênt icos. N exist e qual quer vant agem de CURRENT_USER sobre USER. 1
Se você ai nda est iver usando um banco de dados Int er Base v. 4. x ou 5. 1 com o Fi rebird, ROLE não ser á supor tado, assim o CURRENT_ROLE ser á NONE (como defini do pelo st andard SQL na ausênci a d ROLE decl ar ado) mesmo que o usuário inf or me ROLE válido. Bancos com versão IB 5. 5, IB 6 ou Fi re tem o ROLE inf or mado e verificado. Caso o ROLE não exist a, el e passar á a ser tratado como NONE que qual quer er ro ocor ra. Isto significa que no FB j amai s devolverá um ROLE invál ido como CURRENT_ROLE, porque o valo ret or nado ser á NONE. Este compor tamento cont rasta com o IB, onde o valor invál ido é acei to int er nament e, embora não de for ma vi sível para o SQL.
v.1. 08 Not as da Versão Fi rebi rd 1. 5
08 fevereiro 2004
Página 30
(1.0) DROP GENERATOR
Permi te que GENERATORs não ut ilizados sej am removidos da base de dados. O ar mazenament o ser á liberado para reutilização no pr óximo RESTORE. Acessível em SQL e DSQL. DROP GENERATOR ;
(1.0) GROUP BY UDF
Agor a é possível agregar um SELECT por gr upo pelo resul tado de uma UDF. Por exempl o. select strlen(rtrim(rdb$relation_name)), count(*) from rdb$relations group by strlen(rtrim(rdb$relation_name)) order by 2
Um ef ei to colat er al das al ter ações para permi tir o agrupamento por UDFs : Pr eviamente não er a permi tida a utilização de funções inter nas do Fi rebird em uma cl áusul a GROUP BY. Agor a isto é possív at ravés da cr iação de uma estrut ur a simi lar a uma UDF : select count(*) from rdb$relations r group by bin_or((select count(rdb$field_name) from rdb$relation_fields f where f.rdb$relation_name = r.rdb$relation_name),1)
(1.0) RECREATE PROCEDURE
Estanova decl ar ação DDLpermi tecr iar umaStor ed Pr ocedur ecomomesmo nome de umajáexistente, substitui ndo-a, sem quesejanecessár iofazer antes um DROPda mesma. Asintaxeéidêntica aCREATE PROCEDURE. Di sponível em SQL e DSQL. (1.0) RECREATE TABLE
Esta nova decl ar ação DDL permi te cr iar uma nova estrut ur a para uma tabel a já existente, se necessidade de que se faça antes um DROP da tabel a antiga. A sint axe é idênt ica a CREATE TABLE. Note que RECREATE TABLE n ão pr eser va os dados existentes da tabel a antiga. Di sponível em SQL e DSQL. (1.0) SUBSTRING ( FROM [FOR ])
Função int er na que implementa a função ANSI SQL SUBSTRING(). Irá devolver uma variável cont e byte da posição e t odos os bytes subsequent es at é ao final da expr essão. Se a opção FOR especi ficado número de bytes at é o final da expr essão.
O pr imeiro ar gument o poderá ser uma expr essão qual quer , constante ou ident ificador, que possa s trat ado como al fanumér ico. v.1. 08 Not as da Versão Fi rebi rd 1. 5
08 fevereiro 2004
Página 31
deve resul t ar em um int ei ro. t em índice ini ci al 1, como out ras decl ar ações SQL. Nem nem podem ser parâmet ros de Quer ys. Como e são posições de byte, o ident ificador pode ser um bl ob bi nário, ou um bl ob sub_type 1 tipo texto, desde que o set de caracter es defini do utilize um byte por caracter e. A funç não trata, no momento, bl obs de texto com sets de caracter es Chineses (2 byte/ caracter e) ou Un (3 bytes/ caracter e no máxi mo). Para um ar gumento do tipo al fanumér ico (ao contrár io de um bl o função supor ta qual quer set de caracter es. Di sponível em SQL e DSQL.
UPDATE ATABLE SET COLUMNB = SUBSTRING(COLUMNB FROM 4 FOR 99) WHERE ...
Consul te também a seção de “ Funções Exter nas” (UDFs) e segui nt e, para detal hes de al ter açõe adições à bi bl iot eca de UDF padr ão. (1.5) Aperfeiçoamento do Marcador de Comentário de uma Linha Dmit r y Yemanov
Os coment ár ios de uma linha podem ser ut ilizados em qual quer posição, não apenas no iníci o da Assim, na versão 1. 5, o marcador "--" pode ser ut ilizado para coment ar a linha no final de uma decl ar ação num scr ipt , stor ed pr ocedur e, trigger ou decl ar ação DSQL. Assim, pode ser ut ilizado coment ar partesnão desej adasdeuma decl ar ação. Todos oscaracter esa partir domarcador ‘—‘at é o fim da linha (CR ou LF) ser ão ignor ados. ... WHERE COL1 = 9 OR COL2 = 99
-- OR COL3 = 999
(1.0) Novo marcador de Comentários Claudio Valder r ama
Par a uso em “ s cri pt s ” , DSQL, “ s t ored procedures” e “ t r i ggers ” . Ex empl o
-- Este é um comentário
Este novo marcador pode ser ut ilizado para coment ar uma simples linha de códi go num “ scr ipt ” , decl ar ação DDL/ DML, “ stor ed pr ocedur e” ou “ trigger ” . A lógica para ignor ar caracter es é a segui nt e: 1. Ignor ar os caracter es “ --” se este par de caracter es for o pr imeiro depois de um indicador de F de Li nha (LF em Li nux/ Unix, CRLF em Wi ndows) 2. Cont inuar a ignor ar os caracter es at é o pr óximo indicador de fim- de-linha (EOL) Esta lógica não pr evista para ser aplicada juntamente com bl ocos de coment ár io lógico ( / * um coment ár io */ ). Em out ras palavras, não use os marcadores “ --” dent ro de um bl oco de coment não ut ilize marcadores de bl oco em uma linha que cont enha marcadores “ --” . v.1. 08 Not as da Versão Fi rebi rd 1. 5
08 fevereiro 2004
Página 32
SESSÕES ISQL INTERATIVAS: Tenha em mente o segui nte quando trabal har numa sessão ISQL inte O ISQL acei ta partici onar uma decl ar ação em segment os cont ínuos, mostrando a mensagem CON que seja recebido o caracter e de ter mi nação (normalmente ;). Se for di gi tado “--” no iníci o de uma linha de continuação, a lógica de ignor ar ser á mantida até encontrar a marcação de fim-de-linha (E na tel a ou ar quivo de saída se pr essionado ENTER. Uma fonte potenci al de er ros é cont ar que a linh segui nt e t ambém ser á ignor ada.
O pr oblema com o ISQL acontece porque el e tem seus comandos específicos que pr ecisam ser tra apenas pelo pr óprio ISQL. Se el es não for em ident ificados devi do a uma colocação incor ret a de "--", então ser ão encami nhados ao ser vi dor. Obvi amente, o ser vi dor não entenderá os comandos do IS e SHOW e portanto el es ser ão rej ei t ados. (1.0) Alter Tr igger n ão mais in crementa o “ Con t ador de Al ter ações” n a Tab ela
Quando o cont ador das al ter ações de meta dados de uma tabel a qual quer at inge o valor máxi mo d 255, a base de dados fica indisponível. Uma oper ação de “ Backup/ Restor e” é necessár ia para zera cont ador e para di sponi bi lizar novament e a base de dados. A int enção desta funci onal idade é for ç limpezas da base de dados sempr e que a sua estrutur a tiver sofrido muitas al ter ações, e não para ini bi r o uso de recur sos do ser vi dor. Anter ior ment e, cada vez que um trigger fosse defini do como ATIVE/ INATIVE at ravés de uma op ALTER TRIGGER, o cont ador de al t er ações da t abel a associada er a increment ado. Assim, a o us at ivação e desat ivação de trigger s como recur so normal de oper ação er a af et ado, porque este u o cont ador cr escer rapidament e.
Novas Palavras Reservadas As segui nt es palavras do Fi rebird devem ser adici onadas à list a de Palavras Reser vadas publ icadas p o Int er base 6. 0. 1. BIGINT (1. 5) CURRENT_ROLE RECREATE SAVEPOINT
CASE (1. 5) CURRENT_TRANSACTION (1. 5) ROW_COUNT (1. 5)
CURRENT_CONNECTION (1. 5) CURRENT_USER RELEASE
As segui nt es palavras estão reser vadas para o fut ur o: ABS CHAR_LENGTH LEADING TRAILING
BOOLEAN CHARACTER_LENGTH OCTET_LENGTH TRUE
BOTH FALSE TRIM UNKNOWN
As segui nt es palavras estavam reser vadas no Fi rebird 1. 0, mas j á não o são no Fi rebird 1. 5: BREAK IIF
DESCRIPTOR SKIP
v.1. 08 Not as da Versão Fi rebi rd 1. 5
FIRST SUBSTRING 08 fevereiro 2004
Página 33
As segui nt es palavras não- reser vadas são reconheci das pelo Fi rebird 1. 5, se ut ilizadas nos seus respect ivos cont extos estrut ur ai s: COALESCE LAST NULLIF UPDATING
DELETING LEAVE NULLS USING
INSERTING LOCK STATEMENT
Estas palavras novas no In t er Base 6 . 5 e 7 (não reser vadas no Fi rebird) devem t ambém ser trat adas como reser vadas, para mant er a compat ibi lidade: BOOLEAN PERCENT TEMPORARY
FALSE PRESERVE TIES
GLOBAL ROWS TRUE
Funcionalidades no ISQL
Caappaacciiddaaddee ddee ““rreeaaddlilinnee”” nnaa ssh heellll ddoo iissq qll Mar k O' Donohue
Suporte ao hi st ór ico de comandos (como o readl ine do Unix) foi adici onado a int er face do ISQL. Ago as t eclas Acima e Abai xo podem ser usadas para navegar pelos comandos j á submet idos na sessão IS
Funções Definidas pelo Usuário (UDF’s)
Nooiibb__u uddff rpad (inst ring, t am, car ) J uan Guer r er o
Pr eenche a string for neci da, at ravés da adição do caracter e padchar at é a string resul tante ter tamanho t am. A st ring de entrada poderá t er no máxi mo 32766 bytes. Tam não poderá exceder 3 bytes. Decl ar açã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 (inst ring, t am, car ) J uan Guer r er o
Pr eenche a st ring for neci da, at ravés da aposição do caracter e car at é a st ring resul tant e t er o t am t am. A st ring de ent rada poderá t er no máxi mo 32766 byt es. Tam não poderá exceder 32765 byt es. Decl ar ação
DECLARE EXTERNAL FUNCTION lpad CSTRING(80), INTEGER, CSTRING(1)
v.1. 08 Not as da Versão Fi rebi rd 1. 5
08 fevereiro 2004
Página 34
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 er ro muito antigo, em que os ar gument os x e y estavam inver tidos. Dev devolver o logar itmo base x de y, mas de fat o devolvi a o log base y de x. Foi corrigi do. Se a função er a ut ilizada pr eviament e nas suas aplicações, VERIFIQUE O SEU CÓDIGO! Ou os re obtidos er am incor retos, ou os valor es estavam deliberadamente trocados para que fossem obtid resul tados corret os.
Em m fb fb__u uddff
1. As funções *NVL e *NULLIF for am mant idas para mant er compat ibi lidade com versões anter io mas estão obsol et as em razão da int rodução das novas funções int er nas CASE, COALESCE e NULLIF 2. Note que a fbudf não consegue pr ocessar campos st ring com um t amanho maior do que 32Kb bytes. Esta limi tação poderá causar ef ei tos colat er ai s quando strings são concat enados ante ser em passadas como ar gument os as UDFs. Se a soma dos campos ul trapassar o limi te, o compor tamento ser á indef ini do. A função poderá devolver resul tados sem sentido ou o códi g fbudf poderá execut ar uma oper ação ilegal . 3. Em um Banco de Dados portado que tenha sido cr iado com o Fi rebird 1. 0. x, e em que tenham sid decl ar adas as funções fbudf truncat e e rou nd, estas decl ar ações não ser ão funci onai s para o Fi rebird 1. 5 porque as posições de entrada for am al ter adas. Será pr eciso fazer um DROP das funções e uma nova decl ar ação das mesmas a partir do fbudf .sql scr ipt do di ret ór io de UDF da versão 1. 5.
v.1. 08 Not as da Versão Fi rebi rd 1. 5
08 fevereiro 2004
Página 35
Novo Arquivo de Configuração – firebird.conf
OD Dirireettóórrio io R Raaiizz d doo F Firireebbirirdd O di retór io rai z de instal ação do Fi rebird é utilizado de di versas for mas, durante a instal ação, e também como at ributo para rot inas do ser vi dor, parâmet ros de config fi uração e de cl ientes. Com existem várias for mas de indicar ao ser vi dor onde encontrar o valor para este atributo, pr ogramad e admi ni strador es de sistema devem conhecer a lógica de pr ecedênci a que o ser vi dor obser va n partida, para a deter mi ná-lo corret amente. Wi n3 2 Su perser ver e Cl assic (tan to o ser vi dor como o cl ien te) : 1) Variável de ambi ente FIREBIRD 2) Parâmet ro Root Di ret or y no firebird. conf 3) Regi stro: HKLM\SOFTWARE\ SOFTWARE\Fi rebird Pr oj et \Fi rebird Server\Instances\DefaultInstance verificando a chave Root Di ret or y. 4) O di ret ór io um nível acima ao do execut ável do ser vi dor. Wi n3 2 Em bedded (Servi dor Em bu tido): 1) Variável de ambi ente FIREBIRD 2) Parâmet ro Root Di ret or y no firebird. conf 3) O di ret ór io onde fbembed.dl l (renomeado fbclient.dl l) está local izado. Li n u x Cl assic: 1) Variável de ambi ente FIREBIRD 2) Parâmet ro Root Di ret or y no firebird. conf 3) Cami nho padr ão de instal ação (/opt/firebird) Li nu x Su perser ver: 1) Variável de ambi ente FIREBIRD 2) Parâmet ro Root Di ret or y no firebird. conf 3) O di ret ór io local izado um nível acima ao do execut ável do ser vi dor. (obtido vi a symlink "/ pr oc/ sel f/ exe", quando supor tado) 4) Cami nho padr ão da instal ação /opt/firebird)
Paarrââm meettrrooss
Quase t odos os Parâmet ros possuem valor es padr ões. Nomes de parâmet ros e seus valor es di fer maiúsculas no Li nux, mas não em Wi ndows. Para al ter ar o valor padr ão de um parâmetro para el o marcador de coment ár io (#) e al ter e o valor . O ar quivo de conf iguração pode ser al ter ado com o ser vi dor em execução, mas para ef et ivar as al ter ações é necessár io parar e rei ni ci ar o ser v As conf igurações seguem o for mato: Nome_par âmet ro val or
•
Nome_par âmet ro é um al fanumér ico que não cont ém espaços em br anco e que nomeia uma pr opriedade de conf iguração do ser vi dor.
v.1. 08 Not as da Versão Fi rebi rd 1. 5
08 fevereiro 2004
Página 36
•
é um número, um Bool eano (1=Verdadeiro, 0=Falso) ou um al fanumér ico que define o valo parâmet ro.
val or
Parâmetros do Sistema de Arquivos RootDiretory
Uma string, cami nho absol ut o do di ret ór io rai z no sistema de ar quivos local . Deve permanece coment ada, a menos que se desej e for çar o pr ocediment o de partida a ut ilizar um di ret ór io de instal ação do ser vi dor Fi rebird, di fer ente daquel e que ser ia automat icament e detectado.
DatabaseAccess
Suporta a nova funci onal idade de Al ias. Em versões anter ior es, o ser vi dor podi a conectar -se a qu base de dados no seu sistema de ar quivos local , e er a acionado pelos cl ientes que inf or mavam o cami nho absol uto para o ar quivo da base de dados. Este parâmetro permi te restringir o acesso aos bancos apenas at ravés do seu Al ias, ou a bases de dados local izadas em deter mi nados pontos da á de di ret ór ios do sist ema de ar quivos. DatabaseAccess pode ser None, Restrict ou Full. Fu ll (o valor padr ão) permi te o acesso a ar quivos de bases de dados qual quer parte do sistema de ar quivos local . None restringe o acesso a bases de dados que se encont rem defini das em al iases.conf . Restrict permi t e conf igurar os gr upos de di ret ór ios que cont er ão ar quivos de bancos de dados acessíveis pelo ser vi dor. Pode-se defini r um ou mais di ret ór ios, separ ados por ‘pont o e vírgula’ , para defin ou mais locai s permi tidos. Por exempl o, Uni Uni x: x: /db/databases;/userdir/data Wi ndows: ndows: D:\data Wi
Cami nhosrel at ivos sãotrat adoscomopertencent esaocami nho que o ser vi dor estabel eceucomose o seu di ret ór io rai z. Por exempl o, no Wi ndows, se o rai z do Fi rebird é o di ret ór io C: \Pr ogramas\F ent ão o valor abai xo irá rest ringir acesso do ser vi dor soment e aos ar quivos que est ej am local iz C: \Pr ogramas\Fi rebird\ user dat a:
DatabaseAccess = Restrict userdata
NOTA Shadowing de Banco de Dados – a implement ação at ual de Dat abaseAccess t em uma fal ha que t or na obrigat ór io o uso da conf iguração Rest rict caso o shadowi ng est ej a at ivado para qual quer b no Servi dor. ExternalFileAccess
Er a ext ernal_f ile_diret ory em isc_conf ig/ ibconfig mas a sint axe foi al ter ada.
Pr ovê t rês níveis de segur ança concer nentes a EXTERNAL FILES (ar quivos t exto com for mato fixo q são acessados como tabel as da base de dados). O valor é uma st ring a qual se pode atribuir None, F ou Restrict . None (o valor padr ão) desat iva o uso de ar quivos ext er nos no ser vi dor; Restrict permi t e rest ringir a local ização dos ar quivos ext er nos a di ret ór ios específicos. Indique um ou mais di ret ór ios separ ados por ´ pont o e vírgula’ , onde os ar quivos exter nos deverão estar local izado Por exempl o: Uni x: x: /db/extern;/mnt/extern Uni Wi ndows: Wi ndows: C:\ExternalTables
v.1. 08 Not as da Versão Fi rebi rd 1. 5
08 fevereiro 2004
Página 37
Cami nhos rel at ivos são t rat ados como rel at ivos ao cami nho que o ser vi dor reconhece como sendo o se di ret ór io rai z de instal ação. Por exempl o, no Wi ndows, se o cami nho reconheci do for o di ret ór io C: \Pr ogramas\Fi rebird, ent valor abai xo irá rest ringir o acesso do ser vi dor somente a ar quivos ext er nos que est ej am local iz em C: \Pr ogramas\Fi rebird\ user data\ Ext er nalTabl es: ExternalFileAccess = Restrict userdata\ExternalTables
Fu ll permi te que os ar quivos exter nos sej am acessados em qual quer di ret ór io do sistema.
Vej a a recomendação de Cu id ado após o pr óximo parâmet ro de conf iguração, UdfAccess. UdfAccess
Er a ext ernal _f unct ion_diret ory em isc_conf ig/ ibconfig mas a sint axe foi al ter ada. Foi mudado não só o nome do parâmet ro, mas também a for ma como os valor es são defini dos. O pr opósito das al ter ações foi at ivar opci onal ment e níveis de pr ot eção para módulos de bi bl iot eca exter na defini das pelo usuário, um conhecido al vo de at aques malici osos. UdfAccess pode ser Non Restrict ou Full.
Restrict (o valor padr ão) mant êm a funci onal idade que er a di sponi bi lizada pelo parâmet ro ex ter nal_f un ction _d iret or y no Fi rebird 1. 0, para restringir a local ização das bi bl iot ecas exter nas a locai s específicos do sistema de ar quivos. Forneça um ou mais di ret ór ios, separ ados por ‘ pont o vírgula’ , para ar mazenagem das bi bl iot ecas de UDF, Fi ltros BLOB e defini ções de set de caracter es Por exempl o, : Uni Uni x: x: /db/extern;/mnt/extern Wi ndows: C:\ExternalModules
Cami nhos rel at ivos são t rat ados como rel at ivos ao cami nho que o ser vi dor reconheceu como se di ret ór io de rai z de instal ação do Fi rebird. Assim, no Wi ndows, se o di ret ór io rai z do Fi rebird fo C: \Pr ogramas\Fi rebird\ user data, o valor abai xo restringirá o acesso do ser vi dor a ar quivos exte local izados em C: \Pr ogramas\Fi rebird\ Ext er nalModules:
ExternalFileAccess = Restrict userdata\ExternalModules
None desabilita o uso de bi bl iot ecas exter nas. Fu ll permi t e que as bi bl iot ecas ext er nas em qual quer local do sist ema possam ser acessadas. Cu idado :: Evite defini ção de di ret ór ios particular izados para UdfAccess e Exter nalFi leAccess que pr ovoque o compar tilhament o de uma mesma ár vore de di ret ór ios. Os valor es padr ões são seg Caso estej a config fi urando cami nhos pr óprios, e não t ome o cuidado de estabel ecer locai s separ os dois t ipos de ar quivos, você deixará o ser vi dor vulnerável à execução de códi go não autor iza exempl o do que deve ser evit ado: UdfAccess = UDF; /bad_dir ExternalFileAccess = /external; /bad_dir/files
UdfAccess e Exter nalFi leAccess ter ão uma parte da ár vore em comum, /bad_dir/files, onde um usuário poderia cr iar um ar quivo exter no /bad_dir/files/hackudf.so com códi go pr óprio, e execut álo neste sistema compromet ido.
v.1. 08 Not as da Versão Fi rebi rd 1. 5
08 fevereiro 2004
Página 38
Parâmetros dos Recursos CpuAffinityMask
Er a cpu_af f init y em isc_conf ig/ ibconfig
Na versão SuperServer do Fi rebird em Wi ndows, e em máquinas SMP, existe uma fal ha que faz com q o sistema oper acionaltransfira constante todo o pr ocessamento entre ospr ocessador esexistentes. Isto acaba com a perfor mance. Este parâmet ro pode ser ut ilizado em sistemas SMP em Wi ndows para estabel ecer uma afin fi i dade do Fi rebird com um único pr ocessador. NOTA O Fi rebird SuperServer, at é e inclui ndo a versão 1. 5, podem não supor tar o recur so de HyperThreadi ng no Wi ndows em al gumas pl acas mães mais recentes. Para evitar pr oblemas d balanceamento, pode ser necessár io desabilit ar o HyperThreadi ng no Bi os do Sste i ma. Cp uAffin i tyMask é um int ei ro, a máscar a da CPU. Ex empl o CpuAffinityMask = 1
Usa apenas a pr imeira CPU (CPU 0).
CpuAffinityMask = 2
usa apenas a segunda CPU (CPU 1) .
CpuAffinityMask = 3
Usa a pr imeira e segunda CPU.
Ca allcu cullan ando do o o v va allor or da da m má ássc ca arraa d da aa affin iniida dad de e
Você pode usar esta sinalização para defini r a af ini dade do Fi rebird com qual quer pr ocessado combinação de pr ocessador es (no ser vi dor Cl assic) instal ado no sist ema. Considere as CPUs como uma matriz numerada de 0 a n-1, onde n é o número t otal de pr ocessador instal ados e i é o número da matriz de uma CPU. M é outra matriz contendo a o valor da máscara de cada CPU sel ecionada. O valor de A é a soma dos valor es de M. Use a fór mula segui nt e para estabel ecer M e obter o valor da máscara A:
Mi = 2I A = M1 + M2 + M3. . .
Por exempl o, para sel ecionar o pr imeiro e quar to pr ocessador (pr ocessador 0 e pr ocessador 3) calc da segui nt e for ma: A = 2 0 + 23 = 1 + 8 = 9
DeadlockTimeout
Er a deadl ock_t imeout em isc_conf ig/ ibconfig Int er valo em segundos (int ei ro) que o gerenci ador de bl oqueio aguardará se um conf lit o ocor rer , an de el imi nar os bl oqueios de pr ocessos mortos e ef et uar um novo ci cl o de verificação de “ deadlock Normalment e, deadlocks são detectados instantaneament e. Este int er valo só ocor rer á quando a er ro o pr ovocar .
v.1. 08 Not as da Versão Fi rebi rd 1. 5
08 fevereiro 2004
Página 39
O valor padr ão de 10 segundos é adequado para quase todas as condições. Di mi nuir este valor não vai necessar iamente reduzir o tempo em que um deadlock devolve uma exceção de conf lito. Se for baixo demais, o ef ei to pode ser verificações extras desnecessár ias e que podem degr adar o desempenho do si st ema. DefaultDbCachePages
Er a dat abase_cache_pages em isc_conf ig/ ibconfig Número de pági na de dados al ocadas em memória pelo ser vi dor, por banco de dados. O va conf igurado pode ser est abel ecido para cada base de dados. O valor padr ão para o SuperServer é de 2048 pági nas. Para o Cl assic é 75. As versões SuperServer e Cl assic ut ilizam a memória de for mas di fer entes. No SS a memória é compar tilhada por t odas as conexões, enquanto a Cl assic al oca a memória defini da estaticamente cada conexão.
EventMemSize
Int ei ro, representa o número de bytes de memória reser vado para o gerenci ador de Eventos. O v padr ão é 65536 (64 Kb).
LockAcquireSpins
Er a l ock_acquire_spins
Relevante apenas para ambi entes SMP execut ando ser vi dor Cl assic. Num ser vi dor Cl assic, apen pr ocesso cl iente pode acessar a tabel a de locks num deter mi nado moment o. Um mutex cont rol a e acesso. Os pr ocessos cl ientes podem requerer o mutex condici onal mente ou incondi ci onal mente condici onal , a requi sição poderá fal har e deverá ser repet ida. Caso sej a incondi ci onal , a requi siç aguardará at é ser at endi da. O parâmet ro LockAcquireSpi ns estabel ece o número de tentat ivas q ser ão ef et uadas se o mut ex for condici onal . Int ei ro. O padr ão é 0 (incondi ci onal ). Não existe qual quer recomendação de valor míni mo e máxi mo LockHashSlots
Er a l ock_hash_sl ot s em isc_conf ig/ ibconfig Utilize este parâmetro para ajustar a lista de “lock hash”. Sob gr ande carga, a taxa de transfer ênci a pode ser aumentada ampl iando-se o número de “ hash slots” para di stribuir a lista em cadeias menore de “ hash” . Um número pr imo é recomendado. O valor padr ão é 101.
LockGrantOrder
Er a l ock_grant _order em isc_conf ig/ ibconfig Quando uma conexão deseja obt er o lock ou bl oqueio de um obj eto, obt ém um bl oco de requi siç “ lock” que especi fica o obj et o e o nível de lock requerido. Os bl ocos de requi sição são conect ad bl ocos de locks como requi sições j á at endi das, ou como requi sições ai nda pendentes. O parâmet ro LockGr antOr der é um Bool eano. O padr ão (1=Tr ue) indica que as requi sições de lo devem ser at endi das no modelo pr imeiro a chegar pr imeiro a ser ser vi do. A config fi uração fal sa (0 emul a o compor tamento do Inter Base v3.3, que concedia o lock tão logo el e ficasse di sponível. Este modo pode resul tar em requi sições não at endi das por um longo tempo.
v.1. 08 Not as da Versão Fi rebi rd 1. 5
08 fevereiro 2004
Página 40
LockMemSize
Este intei ro representa a quantidade bytes na memória al ocados para o gerenci ador de locks. Pa ser vi dor Cl assic, LockMemSize indica o valor ini ci al al ocado que poderá cr escer di nami cament e a esgotar toda a memória ("Lock manager is out of room"). Se houver muitas conexões ou caches de pági nas muit o gr andes, aument e este valor, para evit ar estes er ros. No SuperServer, a memória al ocada pelo gerenci ador não aument a di nami cament e. O valor padr ão no Li nux e Solar is é de 98.304 bytes (96 Kb). No Wi ndow s, é de 262144 (256 Kb).
LockSemCount
Parâmetro intei ro que especi fica o número de semáf or os di sponíveis para comuni cação entre p (IPC). O valor padr ão é 32. Use este parâmet ro em ambi entes que não ut ilizem pr ocessos paral e aument ar ou reduzir o número de semáf or os di sponíveis.
SortMemBlockSize
Este parâmet ro permi te config fi urar, em bytes, o tamanho de cada bl oco de memória ut ilizado pe rot inas de or denação em memória. O valor padr ão é de 1Mb, mas pode ser defini do para qual qu at é o máxi mo estabel ecido pelo parâmet ro SortMemUpper Li mi t (a segui r).
SortMemUpperLimit
Quantidade máxi ma de memória, em bytes, que pode ser al ocada para rot inas de or denação. O v padr ão é de 67108864 byt es (64 Mb) para o SuperServer e 8388608 (8 Mb) para o Cl assic. CUIDADO : N o Classic, considere que aumentar o o tamanho do bloco de memória ou o limite de memória ut ilizada afet a cada conexão/instância do ser vidor e aumentará o uso tot al de memória consideravelmente.
Parâmetros de Comunicação ConnectionTimeout
Er a connect ion_t imeout em isc_conf ig/ ibconfig Número de segundos de espera antes de abandonar uma t entat iva de conexão. O valor padr ão é 180
DummyPacketInterval
Er a dummy_packet _int erval em isc_conf ig/ ibconfig Int er valo em segundos (int ei ro) que o ser vi dor irá aguardar ant es de envi ar um “ dummy packet ” um cl iente inativo para conf irmar uma conexão. NÃO USE ESTA OPÇÃO em ser vi dores Wi n32 com cl ientes TCP/ IP. Pr ovoca um aument o constant ut ilização da memória não pagi nada que poderá travar ou derrubar o Wi ndows do lado do cl iente, expl icado aqui : ht tp: / / support.mi cr osof t.com/ default.aspx?kbid=296265 Excl ui ndo-se o Wi n32-com-TCP/IP, este é o único meio de detectar e desconect ar cl ientes inativos quando NamedPipes (NetBEUI), XNET ou IPC são ut ilizados. Não há qual quer restrição conhecida para sistemas POSIX.
v.1. 08 Not as da Versão Fi rebi rd 1. 5
08 fevereiro 2004
Página 41
Normalmente, o Fi rebird usa a opção do socket SO_KEEPALIVE para control ar as conexões ativa timeout de 2 horas (valor padr ão) não for ideal , aj uste os parâmet ros do sistema oper acional apropriadament e: ! Em SO’ s do t ipo UNIX, modi fique o cont eúdo de / proc/ sys/ net / ipv4/ t cp_keepaliv ! Em Wi ndow s, siga as inst ruções dest e ar t igo: ht tp: / / support.mi cr osof t.com/ default.aspx?kbid=140325 O padr ão deve ser 0 – e não 60 como er a no Fi rebird 1. 0 e na maior parte das RC do 1. 5. O valor d deverá ser ut ilizado como padr ão em sist emas que façam uso do envi o de pacot e “ dummy” . RemoteServiceName
Valor padr ão = gds_db
RemoteServicePort
Estes dois parâmet ros permi tem substitui r o nome do ser vi ço TCP/ IP ou a porta TCP/ IP ut ilizada p conexão dos cl ient es, quando um deles for di fer ent e dos ut ilizados como padr ão (gds_db/ t cp 3050).
Mude um dos parâmetros, não os dois. O RemoteSer vi ceName é verificado pr imeiramente e caso u entrada sej a encont rada no ar quivo de ser vi ços a porta especi ficada por RemoteSer vi cePort é ut Se o ser vi ço não for local izado, ser á usada a porta padr ão 3050. NOTA: Se uma porta de conexão for indicada na st ring de conexão TCP/ IP, el a t er á pr ecedênci a so Remot eSer vi cePort . RemoteAuxPort
O compor tamento herdado do Int er Base de transmi tir mensagens de notificação de eventos para a camada de rede at ravés de portas TCP/ IP sel ecionadas de for ma al eatór ia, tem sido uma constan fonte de er ros de rede e conflito fl s com firewal ls, a ponto de até mesmo pr ovocar a queda do ser v em certas condições. Este parâmetro permi te configurar uma única porta TCP para todo o tráfego de notificações de eventos. O valor de instal ação padr ão (0) conser va o compor tamento tradici onal de portasrandômi cas. Para defini r uma porta específica para a notificação de eventos, use um número intei ro correspondente a uma porta di sponível. RemoteBindAddress
Por padr ão, os cl ientes podem conect ar -se por meio de qual quer int er face de rede através da qu Host do ser vi dor acei te ser acessado. Este parâmet ro permi te rel acionar o ser vi ço Fi rebird a re recebidas somente através de uma única inter face e rejei tar conexões de quai squer outras inte de rede. Isto deve ajudar a cont or nar pr oblemas em al gumas sub-redes onde o ser vi dor cont rol tráf ego de múltipl as int er faces. St ring, com endereço IP válido. Valor padr ão (sem ligação) é em br anco.
TcpRemoteBufferSize
O ser vi dor faz lei tur as para antecipar-se ao cl iente e pode envi ar várias linhas de dados num únic pacote. Quanto maior o t amanho do pacote, mais linhas ser ão envi adas em cada transfer ênci a. U parâmet ro – com cuidado e compreensão pr of unda dos seus ef ei tos no desempenho da rede! – c
v.1. 08 Not as da Versão Fi rebi rd 1. 5
08 fevereiro 2004
Página 42
pr ecise aument ar ou reduzir o tamanho do pacote TCP/ IP usado para os buffer s de envi o e recebiment o. Af et a tanto o cl iente quanto o ser vi dor. O valor é um int ei ro (t amanho do pacote em bytes) entre 1448 e 32768. O valor padr ão da instal açã de 8192. Parâmetros específicos POSIX LockSignal
Parâmet ro int ei ro, sinalizador do UNIX para comuni cações entre pr ocessos. Valor padr ão: 16
RemoteFileOpenAbility
USAR APEN AS CO M EX TREMA CAUTELA
Parâmetro Bool eano que, se config fi urado como Tr ue, permi te que o Servi dor abra ar quivos de ba dados que residam em partições mont adas a partir de sistema de ar quivos em rede (NFS). Como o sistema de ar quivos se encontra for a do control e do sistema local , esta é uma funci onal idade muito ar riscada e que não deve ser habi lit ada com o pr opósito de ler / escr ever bases de dados de impo vi tal para você. O valor padr ão é 0 (Falso, desat ivado) e assim deve ser mant ido, a menos que se estej a bem ci ente seus ef ei tos. TcpNoNagle
Er a t cp_no_nagl e em isc_conf ig/ ibconfig No Li nux, por padr ão, a bi bl ioteca de socket mi ni mi zará as escr itas, acumul ando-as antes do rea dos dados, usando um al goritmo int er no (implementado como a opção TCP_NODELAY do socket conexão) conhecido como o Al goritmo de Nagl e. El e foi pr oej tado para evitar pr oblemas com pac pequenos, conhecidos como “ t inygr ams” , em redes lentas. Por padr ão, TCP_NODELAY é at ivado (valor 0) quando o Fi rebird Superser ver é inst al ado no Li nu desat ivação poderá aumentar a velocidade em redes lentas. Pr este at enção na dupl a negação : c o parâmet ro como Tr ue desat iva o TCP_NODELAY, e colocá-lo como False at iva-o. Em versões at é e inclusive a 1. 5, esta funci onal idade só pode ser at ivada para o Superser ver. Parâmetros específicos do Windows
CreateInternalWindow
O pr ot ocol o local Wi ndows usa uma j anel a escondida para a comuni cação entre pr ocessos entre o cl iente local e o ser vi dor. Esta janel a IPC é cr iada na partida do ser vi dor quando o Cr eateInt er nalWi ndow for true (1, valor padr ão). Config fi ure-o como 0 (desat ivado) para execut a ser vi dor sem a janel a e desat ivar o pr ot ocol o local . Com o pr ot ocol o local desat ivado, é possív execut ar múltipl as instânci as do ser vi dor simultaneament e.
DeadThreadsCollection
Uma paramet rização para o gerenci ador de pr ocessos no Wi ndows, este valor int ei ro define o n de ci cl os de mudança de pr ior idade (vej a Pr ior itySwi tchDelay, a segui r) que o gerenci ador exec antes de destrui r um pr ocesso (ou fechá-lo). A imedi at a destrui ção (ou fechament o) de pr ocessos at ivos exigi ria um semáf or o e uma chamada d bl oqueio, gerando uma sobrecar ga considerável . Em vez di sso, o gerenci ador de pr ocessos os mant ê
v.1. 08 Not as da Versão Fi rebi rd 1. 5
08 fevereiro 2004
Página 43
em espera. Assim que o pr ocesso complet ar a sua tar ef a, el e ser á marcado como inativo. O pr o inativo é destruído (ou fechado) após n iter ações do ci cl o do gerenci ador , onde n é o valor do parâmet ro DeadThreadsCollection. Para que um ser vi dor possa gerenci ar um gr ande número de conexões — várias cent enas ou mais — o valor do parâmet ro deverá ser aj ustado para acima do valor padr ão, que é 50. GuardianOption
Parâmetro bool eano utilizado em ser vi dores de Wi ndows para deter mi nar se o Guar di an deve rei n ser vi dor sempr e que el e t er mi ne de for ma anor mal. O valor padr ão de instal ação (1=Tr ue) o far á desabilitar este recur so, defina o parâmet ro como fal so (0).
IpcMapSize
Er a server_cl ient _mapping em ibconfig Tamanho em bytes para o segment o de memória mapeado pelo cl iente para a comuni cação entre pr ocessos (IPC) no modelo de conexão usado pela cl iente local no Wi ndows. Não possui qual que equi valênci a em out ras pl at af or mas. Int ei ro, de 1024 at é 8192. O valor padr ão é 4096. Aument ar o tamanho da memória mapeada poderá melhorar o desempenho na lei tur a de gr an quantidades de dados, ou de dados de gr ande di mensão, tai s como BLOBs gr áf icos. N O TA: Este parâmet ro não poder á mais ser ate l r ado a partir do ícone do Guardian locaiza l do na Área de N otificação.
IpcName
Valor padr ão: Fi rebirdIPI O nome da ár ea de memória compar tilhada usada como canal de transpor te no pr ot ocol o local . Na Versão 1. 5 o valor padr ão — Fi rebirdIPI— não é mais compat ível com as versões anter ior es d Fi rebird nem com o Int er Base®. Use o valor Int er BaseIPI para recuper a a compat ibi lidade, qu necessár io.
MaxUnflushedWrites
Este parâmet ro foi int roduzido na Versão 1. 5 para cont or nar uma fal ha nos sistemas oper aciona Wi ndows Server, em que escr itas assíncronas nunca er am gr avadas no di sco, exceto quando o se Fi rebird er a fechado de for ma control ada. (Escr itas assíncronas não são supor tadas no Wi ndows 9 ME.) Assim, em sistemas 24/7, as escr itas assíncronas nunca er am ef et ivadas de fat o. Este parâmet ro deter mi na a freqüência com que pági nas ret idas ser ão gr avadas no di sco quand parâmetro “ Forced Wr ites” estiver desativado (e a escr ita assíncrona ativada). O valor é um intei ro que representa a quantidade de pági nas ret idas antes de ser sol ici tada uma gr avação em di sco, ser á execut ada da pr óxima vez que for ef et uado um commit da t ransação. O valor padr ão é 100 n inst al ações do Wi ndows e -1 (desat ivado) nas inst al ações das out ras pl at af or mas. Se o fim de um ci cl o MaxUnf lushedWriteTime (ver abai xo) ocor rer antes que o número limi te de pá ret idas o sej a, a gr avação é requi sit ada imedi at amente e o número de pági nas ret idas é zerado.
MaxUnflushedWriteTime
Este parâmet ro define o tempo máxi mo de ret enção de pági nas para a escr ita assíncrona, antes q el as sej am gr avadas em di sco, quando o Forced Wr ites estiver desativado (escr ita assíncrona ativ O seu valor é um intei ro que defini rá o inter valo, em segundos, entre a úl tima gr avação em di sc
v.1. 08 Not as da Versão Fi rebi rd 1. 5
08 fevereiro 2004
Página 44
ativação de um sinal para que seja executada a gr avação, na pr óxima vez que for ef etuado um com da transação. O valor padr ão é de 5 segundos nas instal ações Wi ndows e -1 (desat ivado) nas insta das out ras pl at af or mas. PrioritySwitchDelay
Conf iguração do Gerenci ador de Pr ocessos no Wi ndows, este valor int ei ro estabel ece o tempo, e mi lissegundos, que deverá ser aguardado antes que a pr ior idade de um pr ocesso inativo seja colo como baixa e pr ior idade de um pr ocesso at ivo seja defini da como al ta. Uma iter ação desta sér ie d al ter ações de pr ior idade representa um ci cl o do gerenci ador de pr ocessos. O valor padr ão é 100 ms; estabel ecido at ravés de medi ções com pr ocessador es Int el PIII/ P4. Pa pr ocessador es com de menor freqüência de velocidade, ser á pr eciso um int er valo maior .
PriorityBoost
Valor Int ei ro que define o número de ci cl os extra dado a um pr ocesso quando sua pr ior idade é el e para al ta. O valor padr ão é 5.
ProcessPriorityLevel
Er a server_priorit y_class no ibconfig Cl asse/ Nível da pr ior idade para o pr ocesso do ser vi dor. Este parâmet ro substitui o parâmet ro ser ver_prior ity_cl ass das versões pr é 1. 5, — ver abai xo — com uma nova implementação. Os valor es int ei ros são : • 0 –pr ior idade normal, • valor positivo – pr ior idade el evada (o mesmo que a opção -B[ oostPr ior ity] no instsvc.exe nas opç conf igure e st art ) • valor negativo – pr ior idade baixa. Nota: Todas as modi ficações deste valor deverão ser cuidadosamente t estadas para assegur ar que el ef et ivament e melhorar am o t empo de resposta do Servi dor. RemotePipeName Aplicável apen as para conex ões Net BEUI
Parâmet ro St ring, o nome do pi pe usado como canal de t ranspor t e no pr ot ocol o Net BEUI. O nom pi pe equi vale ao número da porta para o TCP/ IP. O valor padr ão, int er bas, é compat ível com ve anter ior es do Fi rebird e com o Int er Base®. Parâmetros para configurar o espaço temporário usado para ordenações
Quando o t amanho do buffer int er no é pequeno demais para acomodar as linhas envolvi das e oper ação de or denação, o Fi rebird pr ecisa cr iar ar quivos temporár ios de or denação no sistem ar quivos do ser vi dor. Por padr ão, ser á verificado o cami nho especi ficado pela variável de ambi FIREBIRD_ TMP. Se a variável não estiver di sponível, o ser vi dor tentar á usar a pasta / t m p do sistema de ar quivos do Li nux/ UNIX, ou C: \temp no Wi ndows NT/ 2000/ XP. Nenhum destes locai s permi te conf iguração do espaço a ser ut ilizado. O Fi rebird di spõe de um parâmet ro que permi te conf igurar o espaço em di sco que ser á usado pa ar mazenar estes ar quivos temporár ios. Convém ut ilizá-lo, para assegur ar que sempr e haverá esp sufic fi i ente para or denação em todas as condições. Todas as requi sições CONNECT ou CREATE DATABASE compar tilham a mesma rel ação de di ret temporár ios e cada uma cr ia os seus pr óprios ar quivos temporár ios. Os ar quivos de or denação se liberados após o fim da or denação ou após a liberação da requi sição. Na Versão 1. 5, o nome do parâmet ro mudou de tmp_diret or y para TempDi ret or ies e a sint axe do parâmet ro também foi al ter ada.
v.1. 08 Not as da Versão Fi rebi rd 1. 5
08 fevereiro 2004
Página 45
TempDiretories
Substitui as entradas t mp_diret ory em isc_conf ig/ ibconfig Inf or ma uma lista de um ou mais di ret ór ios, separ ados por pont o-e-vírgula (;), onde ar quivos temporár ios de or denação podem ser ar mazenados. Cada it em poderá inclui r um ar gument o op tamanho máxi mo, em bytes, de ar mazenamento. Se este ar gumento for omitido ou invál ido, o Fi esgot ar á t odo o espaço no di ret ór io ant es de passar para a pr óximo di ret ór io da list a. Por exempl o :
Uni Uni x: x: /db/sortfiles1 100000000;/firebird/sortfiles2 Wi ndows: E:\sortfiles 500000000
Cami nhos rel at ivos são t rat ados como rel at ivos ao cami nho que o ser vi dor em execução est ab como o do di ret ór io rai z de instal ação do Fi rebird. Por exempl o, no Wi ndows, se o di ret ór io rai z f C: \Pr ogramas\Fi rebird, o valor abai xo indicará ao ser vi dor para que ar mazene os ar quivos t em em C: \Pr ogramas\Fi rebird\ user data\ sor tfiles, at é ao limi te de 500 Mb:
TempDiretories = userdata\sortfiles 500000000
Not a: Sem aspas, ao cont rário do que era requerido no Firebird 1.0
Parâmetros de Compatibilidade CompleteBooleanEvaluation
Implementa o método de aval iação de expr essões Bool eanas (complet a ou parci al ). O valor padr ão (0=False) faz com que a aval iação de expr essões bool eanas com pr edicados AND e OR sej a inter rom tão logo seja possível obter um resul tado VERDADEIRO OU FALSO que não poderá mais ser af et ad quai squer aval iações poster ior es. Em certas e rar as condições (normalment e evitávei s), é possível que uma expr essão dent ro de u condição OR ou AND e que não tenha sido aval iada em razão desta conf iguração parci al , tenha o potenci al de af et ar o resul tado final. Caso você tenha a inf el ici dade de herdar uma aplicação que t tai s caracter ísticas na sua lógica de SQL, use este parâmetro para for çar a aval iação completa até t opor tunidade de corrigi -la. O parâmet ro é um bool eano. N ão subestime o fato de que esta opção afet a todas as avaliações de Booleanas em todos os bancos de dados do ser vidor.
OldParameterOrdering
A versão 1. 5 encami nhou e resol veu um conhecido er ro do Int er Base que pr ovocava uma or den i diossincrática na estrutur a XSQLDA dos parâmetros de saída devolvi dos aos cl ientes. O er ro v tão longe que muitas aplicações, dr ivers e int er faces existentes possuíam sol uções embutidas p cont or nar o pr oblema no lado do cl iente. As versões 1. 5 e poster ior es corrigi ram esta condição na API e são instal adas com o Ol dPar amet er Or dering=0 (Falso). Mude o parâmet ro Bool eano para Tr ue caso pr ecise do compor tamento anter ior, para mant er compat ibi lidade com códi gos j á existentes.
v.1. 08 Not as da Versão Fi rebi rd 1. 5
08 fevereiro 2004
Página 46
Aliasing dos Arquivos BD A versão 1. 5 do Fi rebird int roduz o apel ido ou al ias de ar quivos de base de dados para melhora portabilidade das aplicações e para aument ar o cont rol e int er no e exter no do acesso às bases de d
Alliiaasseess..ccoonnff
Conf igure os al ias de ar quivos de base de dados no ar quivo texto al iases.conf , local izado no di ret ó rai z da Instal ação do Fi rebird. O al iases.conf é simi lar a :
# # List of known database aliases # -----------------------------# # Exemplos: # # #
dummy = c:\data\dummy.fdb
Como em todos os ar quivos de conf iguração do Fi rebird, o símbol o ' coment ár ios. Para conf igurar um al ias, simplesment e apague o '#' e al t er e a linha com o dummy p valor corret o do cami nho do banco de dados:
# fbdb1 fbdb1 = # fbdb2 fbdb2 = #
está no servidor Windows: c:\Firebird\sample\Employee.fdb está no servidor Linux /opt/databases/killergames.fdb
Você pode edit ar o al iases.conf com o ser vi dor em execução. Não exist e qual quer necessida ou rei ni ci ar o ser vi dor para que as novas ent rada no al iases.conf sej am aplicadas.
Coonneexxããoo uussaannddoo uum m ccaam min inhhoo ccoom m aalliiaass
A string de conexão al ter ada na sua aplicação cl iente deverá ser :
Nome_servidor:alias
Seguindo esta estrut ur a, no exempl o abai xo, a segui nt e string de conexão sol ici tar ia ao ser vi d Fi rebird sendo execut ado em um comput ador Li nux de nome “ Servi dor” para local izar e conec cl iente o banco de dados ar mazenado no cami nho ident ificado como “ fbd2” em al iases.conf Servidor:fbdb2
Noom meeaarr bbaasseess d dee ddaaddooss n noo W Win inddoow wss
Note que agor a a extensão recomendada para bases de dados no Wi ndows ME e XP é “ .FDB” , para possíveis conf litos com o recur so de Recuperação de Si stema do Wi ndows. Caso este pr ocedimen sej a obser vado nestas pl at af or mas, ocor rer ão os conhecidos pr oblemas de at raso na pr imeira co base de dados em que os ar quivos pr imários e/ ou secundários tenham a extensão convenci onal “ .g
v.1. 08 Not as da Versão Fi rebi rd 1. 5
08 fevereiro 2004
Página 47
Equipes de Desenvolvimento Firebird Pr ogramador
País
Taref as pr incipais
Dmitry Yemanov
Federação Russa
Coor denador de Versões; melhorias no DSQL e PSQL; implementação do Embedded Ser ver; di versos aper fei çoamentos do meta dados; Al ias para base de dados; trigger múltipl a ação; tipo de dado Bi gInt ; novas variávei s de cont exto; ser vi dor Cl assic para Wi ndows; inúmeras resol uções de er ros.
Ni ckol ay Samof at ov
Federação Russa
Especi ficação e implementação de funci onal idades SQL (SAVEPOINTs, Bl oqueio pessimi st a) ; melhorias no met a dados; reimplementações do Servi dor; pesquisa e correção de er ros; pr oblemas de ar quitet ur a; habi litação de Ser vi ços API no Cl assic em Li nux; melhoria do desempenho; versões Cl assic para Li nux.
Ar no Br inkman
Países Baixos
Melhorias do Ot imi zador ; di ver sas novas funci onal idades DSQL.
Cl audi o Valderrama Chile
Aval iação do Códi go; pesquisa e correção de er ros; melhorias do PSQL; Correção, especi ficação e implement ação de UDFs.
Al ex Peshkof f
Federação Russa
Novas funci onal idades PSQL e DSQL; autor e coor denador de funci onal idades de segur ança; correção do códi go; compilações Superser ver para Li nux
Mi ke Nordell
Suécia
Conver são do códi go do Fi rebird para C++; melhoria do desempenho; transpor te de funci onal idades; pesquisa e correção de er ros.
Bl asRodr iguez Somoza Espanha
Pr ogramador de novos set s de caract er es; pr of unda limpeza do códi go e remodel ação da ár vore; compilações Mi nGW.
Roman Rokyt skyy
Al emanha
Pr ogramador e co-coor denador do Jaybi rd.
Davi d Jencks
U.S.A.
Especi ficador e co-coor denador do JayBi rd; Especi ficação das fer rament as de document ação do Fi rebird.
CarlosGuzman Al varez
Espanha
Desenvolvedor e coor denador do .NET pr ovider para o Fi rebird.
John Bellar do
U.S.A.
Implement ou int er face PLUG-IN para o set de caract er es; coor denador de compilações Darwi n; implement ação ini ci al do novo modelo de memória.
Er ik Kunze
Al emanha
Pesquisa e correção de er ros; limpeza de códi go; ver sões SN I IX- Z.
Dmitry Sb i i ryakov
Federação Russa
Li mpeza de códi go; compilações Mi nGW.
Pavel Ci sar
Repúbl ica Checa
Compilações Li nux (Versão 1. 0) ; especi ficador / coor denador de fer rament as QA.
Ann Harrison
U.S.A.
Correção de er ros; consul tor ia técni ca; aument o do número máximo de índices.
v.1. 08 Not as da Versão Fi rebi rd 1. 5
08 fevereiro 2004
Página 48
Pr ogramador
País
Taref as pr incipais
Mark OD ' onohue
Austrál ia
Funcional idades de linha do isql ; correção de er ros; compilações boot (Versão 1. 0) ; correção do códi go (Versão 1. 0) .
Paul Reeves
Fr ança
QA; instal ador es Wi n32; painel de cont rol e padr ão Wi n32.
Ignacio J. Or tega
Espanha
Adici onadas funci onal idades de PLAN para t rigger s; limpeza de códi go.
Konstantin KuznetsovFederação Russa
Compilações Int el Solar is.
Ol ivi er Mascia
Bélgi ca
Re-implement ação de ser vi ços de inst al ação no Wi n32.
Pet er Jacobi
Al emanha
Aper fei çoament os, at ualizações de set s de caract er es.
Ti lo Muet ze
Al emanha
Coor denador do pr oj et o de document ação Fi rebird.
Paul Vi nkenoog
Países Baixos
Coor denador do pr oj et o de document ação do Fi rebird; correções do UDF.
Ar tur Anj os
Port ugal
Melhorias no painel de cont rol e Wi n32; desenvolvedor do Gerenci ador de Conf igur ação do Fi rebird; Int er naci onal ização do mesmo.
Achi m Kalwa
Al emanha
Melhorias no pr ograma do painel de cont rol e do Wi n32
Sean Leyne
Canada
Or gani zador do Bugt racker; limpeza de códi go.
Ryan Baldw in
U. K.
Pr ogramador do dr iver Jaybi rd Ti po 2.
Sandor Szol losi
Hungria
Implement ador de collat ions dos set s de caract er es.
Dmitry Kuzmenko
Federação Russa
Resol ução de er ros de GSTAT.
Ar tem Petkevych
Ucrânia
Resol ução de er ros para t ipo de dados ARRAY.
Vl ad Horsun
Ucrânia
Aument o de vel ocidade do sweep; corrigi do o commit de 2 Fases.
Tomas Skoda
Eslováqui a
Resol ução de er ros.
Evgeny Ki lin
Federação Russa
Resol ução de er ros.
Ol eg Loa
Federação Russa
Resol ução de er ros.
Er ik S. La Bi anca
U.S.A.
Resol ução de er ros.
Tony Cadut o
U.S.A.
Inst al ador es Wi n32 não- of ici ai s.
Juan Guer rer o
Espanha
Novas UDFs.
Chris Knight
Austrál ia
Compilações Fr eeBSD.
v.1. 08 Not as da Versão Fi rebi rd 1. 5
08 fevereiro 2004
Página 49
Pr ogramador
País
Taref as pr incipais
Neil McCalden
U. K.
Compilações Solar is.
Gr zegor z Pr okopsi
Hungria
Compilações Debi an.
Paul Beach
U. K.
Compilações HP-UX.
Geof frey Speicher
U.S.A.
Compilações Fr eeBSD.
Helen Borrie
Austrál ia
Aut or a das “ Not as da Versão” ; t est es de campo e “ Thought Police”
"O OS SH HEER RÓ ÓIISS D DO OSS T TE ESST TE ESS D DE EC CA AM MPPO O "" Pavel Kuznet sov Eugene Ki lin Dmitry Kovalenko Vl adimi r Kozl of f Barry Kukkuk Yakov Maryanov Christian Pr adel li
Dani el Rail Volker Rehn Davi d Ri dgway Davi d Rushby Pavel Shi banov Rusl an St rel ba
v.1. 08 Not as da Versão Fi rebi rd 1. 5
08 fevereiro 2004
Página 50
NOTAS
DE
I N S TA L A Ç Ã O
Innssttaallaarr ooF Firireebbiirrdd11..5 5 eem mW Win inddoow wss3 322 LEIA ANTES!
Com a int rodução de dois novos modelos de ser vi dor no Wi n32 as opções de instal ação para o Fi re aument ar am. !
!
!
!
!
!
!
Tenha cert eza de est ar logado como Admi ni st rador (não se aplica ao Wi n9x ou ME) Todos os modelos de Servi dor, Super, Cl assic e Embedded, bem como as fer ra admi ni stração e o cl iente podem ser instal ados a partir do pr ograma de instal ação para Wi n Para uma instal ação complet a de versão, é al tamente recomendável usar o instal ador se hou di sponível. Use o gbak para fazer uma cópi a reser va da sua base de dados de segur ança isc4.g restaurá-la mais tar de com o nome de security.fdb. Caso ut ilize config fi urações específicas no ibcon fig poderá haver al gumas config fi uraçõ quei ra conver ter para os parâmet ros equi valentes no firebird. conf . Estude as notas sobre o firebird. conf para poder defini r o que pode ser simplesment e copi ado e o quai s os parâmet ros pr ecisar ão ser adaptados para a nova Sn i t axe. Caso det ermi nados arquivos de config fi uração exist am no di ret ór io de inst al ação el es pelo pr ograma de instal ação e SOBREPOSTOS se você descompactá- los de um ki t zi pado para o loc padr ão. Estes ar quivos são: security. fdb firebird. log firebird. conf al iases.conf Todas as versões podem ser inst al adas a part ir de um ar quivo zi p. Est e mét odo se que at ravés do instal ador caso você estej a familiar izado com instal ações do Fi rebird 1. 5 a part ar quivos zi p. Todavi a poderá ser uma t ar ef a áspera para um ini ci ante em Fi rebird.
Pr essupõe-se que: 1 Você compreende como funci ona a sua rede. 2 Você compreende porque um sist ema cl iente/ ser vi dor pr ecisa t er ser vi dor e cl ientes. 3 Você leu todo o resto destas notas da versão —ou pelo menos tem a noção de que pr ecisar á lê las se al go parecer estar incor ret o. 4 Você sabe como acessar o gr upo de di scussão do firebird-support quando se encont rar em di ficuldades. Inscr eva- se em ht t p: / / w ww . yahoogroups.com/ gr oups/ firebird- support
Se j á possui r uma versão anter ior do Fi rebird ou Int er Base® no seu ser vi dor e acha que poderá dese ret or nar a el a, estabel eça um pont o de ret or no antes de começar. !
Use a versão exist ent e do GBAK para ef et uar uma cópi a dos seus ar quivos de ban for mato transportável .
v.1. 08 Not as da Versão Fi rebi rd 1. 5
08 fevereiro 2004
Página 51
!
!
!
!
Vá at é o di ret ór io de Si stema e faça uma cópi a de reser va do gds32.dl l. Recom renomei e a cópi a como "gds32.dl l.ib5" ou "gds32.dl l.fb103", ou al go igual ment e inf or mativo; esconda- o em um outro di ret ór io. Poderá também ser uma boa idéia fazer uma cópi a de segur ança da bi bl iot eca Mi cr osof t C++, msvcp60. dl l. O pr ograma de instal ação não deverá sobrepor a sua versão de ar quivo, mas al go de anor mal pode ocor rer . PARE QUALQUER SERVIDOR FIREBIRD OU INTERBASE QUE ESTEJ A EM EXECUÇÃO O pr ograma de inst al ação t entar á det ectar versões pr évias do Fi rebird ou Int er Base inst al adas e em execução. Em uma instal ação que não o ut ilize, você estar á por cont ra pr ópria!
O local padr ão do Fi rebird 1. 5 ser á C: \Ar quivos de Programas\Fi rebird_1. 5. Se a sua já estiver instal ada neste di ret ór io e você tiver a int enção de usar os locai s padr ões, renome di ret ór io existente.
Para instal ar o Fi rebird como ser vi ço: caso pret enda usar a nova funci onal idade d cr ie um "usuário de ser vi ço firebird" no sistema — com nome e senha à sua escolha — como um usuário normal com os pr ivi légios apropriados. Você deverá ler pr imeiro o document o nomead README.instsvc.txt . Se você possui r um ki t compactado, poderá encont rá-lo no di ret ór io / do partir da rai z do ar quivo zi p. Caso não possua um ki t compactado, o ar quivo só estar á acessív final da instal ação. Você pode ler o mesmo document o no segui nt e endereço: ht tp: / / cvs.sourcefor ge.net/ vi ewcvs.py/ firebird/ firebird2/ doc/ README.instsvc
!
LEIA EM SEGUIDA !
Uma das metas de especi ficação do Fi rebird 1. 5 er a pr epar ar o cami nho para múltipl as instal ações do Servi dor. Isto permi tirá aos usuários executar di fer entes versões lado a lado. O Fi rebird 1. 5 supor ta isto, embora de for ma não muito bem document ada, e ai nda requerendo muitas int er venções de um usuário experiente. Futur as versões do Fi rebird tor narão este pr ocesso menos complicado. Mas neste meio tempo, o Fi rebird 1. 5 pr ecisar á pr epar ar o ter reno. O que nos for ça a conf rontar o pr oblema da instal ação da bi bl iot eca. Ao mesmo tempo, a Mi cr osof t tem tomado as suas pr óprias medi das para control ar a instal ação de bi bl iotecas de di fer entes versões. Anal isadas em conjunto, estas duas políticas implicam em um novo pr ocediment o para a instal ação de bi bl iot ecas para o Fi rebird 1. 5 e fut ur as versões. Instalação das bibliotecas de sistema Microsoft
Os pr oblemas associados com a inst al ação de di fer entes versões das bi bl iot ecas de sist ema Mi cr o são tão conhecidos, que receber am o codi nome de “ Inf er no das Dl ls” .
A partir do lançament o do Wi ndows 2000, a Mi cr osof t tor nou quase impossível a at ualização das D sist ema. Para contor nar este pr oblema, a Mi cr osof t recomenda agor a que cada aplicação instal e c locai s das bi bl iot ecas que são requeridas. O Fi rebird 1. 5 segue esta pr át ica e coloca as bi bl iot ecas requeridas no di ret ór io \bi n junto c Servi dor. Instalação do fbclient.dll
A partir da versão 1. 5 gds32.dl l não é mais ut ilizada como bi bl iot eca cl iente. Agor a el a chama fbclient.dl l. Dados os pr oblemas enfrentados pela pr ópria Mi cr osof t com o inf er no das DLLs, n muito sentido cont inuar instal ando a bi bl iot eca cl iente do Fi rebird no di ret ór io de sistemas. C v.1. 08 Not as da Versão Fi rebi rd 1. 5
08 fevereiro 2004
Página 52
desejamos permi tir a instal ação de múltipl as instânci as de Servi dor estar íamos cr iando nosso pr óp infer no se pr osseguíssemos com a pr ática de instal ar o cl iente no di retór io de sistemas. Assim, a partir da versão 1. 5 a bi bl iot eca cl iente residi rá na pata \bi n juntamente com todos os outros bi ná Uma nova chave de regist ro foi adici onada e t odas as aplicações compat íveis com o Fi rebird dev ut ilizá-la para local izar a versão corret a que el as desej am usar . A nova chave é : HKEY_LOCAL_MACHINE\SOFTWARE\Fi rebird Pr oj ect\Fi rebird Server\Instances Fi rebird garantirá a existênci a de pelo menos uma entrada neste registro. El a ser á conhecida com “ DefaultInstance” e conter á o cami nho para o di retór io da (sim, você adivi nhou) instal ação padr ão. Aplicações q tenham int er esse por uma instal ação em particular poderão usar a instânci a padr ão para local fbclient.dl l. Versões fut ur as do Fi rebird irão encont rar novas entradas na chave Instances. Aplicações ser ão cap de enumer ar as entradas do registro e deter mi nar a bi bl iot eca da instânci a que el as desej am carreg Suportando drivers e aplicações legadas
Tr adici onal mente, aplicações que usam Inter base ou Fi rebird t êm esperado carregar o cl iente GD encontrado na pasta de sistemas. O Fi rebird 1. 5 for nece uma fer ramenta chamada “instcl ient.exe” qu pode instal ar um cl one do fbclient.dl l na pasta de sistemas do Wi ndows. Este cl one é modi ficado instantaneament e para que sua inf or mação de versão inf or me ‘ 6. 3’, para pr over compat ibi lidade aplicações pr évias que verificam a versão do ar quivo GDS32. dl l e não tem como int er pr et ar valor e como ‘ 1. 5’ . Durante o pr ocesso de instal ação o instal ador pr ocur a por instal ações anter ior es do Int er base e do Fi rebird. Caso nada sej a encont rado ser á copi ada a nova GDS32. dl l. Caso sej a detectada qual quer versão possível do Inter base ou do Fi rebird instal ado a GDS32. dl l não ser á copi ada. De qual quer for a fer ramenta “ instcl ient.exe” poderá ser ut ilizada mais tar de. Pr et ende-se que fut ur as versões do Fi rebird não tentem mais instal ar gds32.dl l na pasta de siste que em um deter mi nado moment o el a sej a removida da di stribuição. A fer ramenta “ instcl ient.exe” pode também instal ar a pr ópria FBCLIENT. DLL na pasta de sistem Wi ndows, para sat isfazer aplicações e fer ramentas que pr ecisem carrega a partir desta pasta. Uso do instclient.exe:
instclient
i[install] [ -f[orce] ] q[uery] biblioteca r[emove] biblioteca
biblioteca
onde bi bl iot eca é: fbclient | gds32. ‘ -z’ , que pode ser usada com qual quer opção, mostra a versão. A inf or mação de versão e a cont agem de compar tilhament o da bi bl iot eca são trat ada aut omat icament e. O uso da opção –f[or ce] desconsidera a verificação de versão.
v.1. 08 Not as da Versão Fi rebi rd 1. 5
08 fevereiro 2004
Página 53
NOTA A opção –f[or ce] pode dani ficar outra versão de Fi rebird ou Int er base j á instal ada. Você p ter que rei ni ci ar o sistema para finalizar a instal ação da cópi a. Para mais detal hes, veja o document o README.Wi n32Libr ar yInstal lat ion.txt que está local izado di ret ór io rai z ou na pasta \doc da sua instal ação. Desinstalação de versões de teste
Deve ser destacado que o instal ador remove qual quer fbclient.dl l que sej a encont rada na pasta sistemas. O instal ador também remove a chave obsol et a de registro HKLM\Software\ Fi rebirdSQL.
Usando o programa de Instalação Firebird para o Win32
Esta é a instal ação mais simples.
Basta execut ar o instal ador e responder os di ál ogos de for ma apropriada. Depois ter respondid volta de di ál ogos, ser á vi sualizada uma caixa com uma lista “ dr op-down” que, quando aber ta simi lar a esta. Esta realment e é a úl tima opor tunidade para sel ecionar o tipo de instal ação que v quer.
Escolha a instal ação desej ada e cl ique em "Next " para avançar nos di ál ogos. Servi ço ou ap licação?
Se você sel ecionar a versão de instal ação Superser ver ou Cl assic, e a versão do seu SO supor tar ser vi ços, você deverá indicar se pr et ende execut ar o Fi rebird como ser vi ço ou como aplicação. A m que t enha uma necessidade específica para execut ar o ser vi dor como aplicação, opte por se Manu al ou au tomát ico?
v.1. 08 Not as da Versão Fi rebi rd 1. 5
08 fevereiro 2004
Página 54
Com a opção automát ica, o Fi rebird irá partir toda vez que o comput ador onde foi instal ado s ligado. Com a opção manual você ini ci ar á o ser vi dor apenas quando requi sit ar . Opção do Gu ar di an
O Guar di an é um utilit ár io que pode ser executado "em ci ma" do Superser ver e rei ni ci á-lo caso e por qual quer razão. No desenvolvi mento, você pode optar por não usá-lo. Em ambi ente de traba poderá remediar uma situação em que o aplicativo pare de funci onar e o DBA (admi ni strador ) não se encont re di sponível para o rei ni ci ar . Di ret ór io de Instal ação (Root )
Se deci di r não usar o di ret ór io padr ão de instal ação, navegue at é o local pr eviamente cr iado; ou simplesmente di gi te o seu cami nho completo. A pasta destino não pr ecisa existir pr eviamente: o pr ograma de instal ação pedi rá a sua conf irmação e irá cr iá-la, se necessár io. Eventualment e, os di ál ogos irão parar e o ser vi dor irá, ou partir silenci osamente ou pedi r a sua permi ssão para rei ni ci ar a máquina — a tar ef a de rei ni ci al ização ser á necessár ia caso o pr ogram instal ação tenha sobreposto a msvcp60. dl l, ou se uma gds32.dl l mais antiga estava carregada qu pr ograma de instal ação se ini ci ou. Instalando o Superserver a partir de um kit compactado
A instal ação do FB 1. 5 é simi lar em pr incípi o a das versões anter ior es. Caso não possua o pr ograma específico de instal ação (di stribuído em separ ado) os passos ser ão os segui nt es: -
Use o unzi p para extrai r os ar quivos para uma past a separ ada (como al guns nomes for am al ter a não faz muit o sent ido ext rai r os ar quivos da v1. 5 para a mesma past a do IB/ FB1) - Vá at é o di ret ór io para o qual os ar quivos for am extraídos e dent ro dela local ize a pasta bi n (d por di ante, chamar emos de o di ret ór io onde os ar quivos da v1. 5 for am instal ados). - execut e “instreg.exe” instreg.exe instal l faz com que cami nho do di ret ór io de instal ação acima sej a escr ito na chave de registro (HKLM\Software\ Fi rebird Pr oj et \Fi rebird Server\Instances\DefaultInstance) - se quiserregistrarumser vi ço, execut e também “instsvc.exe“ : instsvc.exe instal l. - Opci onal ment e, faça uma cópi a de fbclient.dl l e gds32.dl l para a pasta de sistema do OS.
Instalando o Classic Server a partir de um kit compactado
Para instal ar a modalidade CS, a única di fer ença ser á indicar um parâmet ro adici onal para o instsvc.exe: instsvc.exe instal l -cl assic Repare que isto implica que só é possível ter uma ar quitet ur a do Servi dor, ou fbser ver.e (Super ser ver) ou fb_inet_ser ver.exe (o pr ocesso pr incipal o Cl assic) , instal ada como ser vi ço. Instal ação simplificada
v.1. 08 Not as da Versão Fi rebi rd 1. 5
08 fevereiro 2004
Página 55
Caso não pr ecise regist rar um ser vi ço, então você não deverá execut ar o “ instreg.exe” ou o “ inst svc.exe” . Bast a ext rai r o cont eúdo do ar quivo zi p em uma past a pr ópria execut ar o ser vi dor: fbser ver.exe -a El e considerar á o di ret ór io pai como di ret ór io rai z da instal ação. Desinstal ação
Para remover o FB 1. 5 sem um desinstal ador Wi ndows você deverá: - pararo ser vi dor. - execut ar"instreg.exe remove". - execut ar"instsvc.exe remove". - apagaro di ret ór io deinstal ação. - apagar oscl ientesfbclient.dl l e gds32.dl l dapasta desistema doSO Instalando o servidor Embedded a partir de um kit compactado
O ser vi dor embedded inter liga um cl iente a um ser vi dor com t odas as funci onal idades numa bi b di nâmi ca (fbembed.dl l). El e t em exat amente as mesmas funci onal idades que o Superser ver e ex mesmo pont os de entrada da int er face API padr ão do Fi rebird.
Registro As entradas do Regi stro para o Fi rebird (onde o ser vi dor normalment e pr ocur a pela local ização da pasta de instal ação) são ignor adas. O di ret ór io rai z ser vi dor embedded é a pasta u nível abai xo daquel a onde o ar quivo bi nário (bi bl iot eca) se encont ra. Acesso à Base de Dados Apenas o acesso “verdadeiramente local ” é permi tido. O ser vi dor “ embedded” não possui supor te para pr ot ocol os remot os, então nem mesmo o acesso vi a "local h funci onar á. Au ten ticação e segur an ça A base de dados de segur ança (secur it y. fdb) não é ut ilizada pelo ser vi dor “ embedded” e portanto não é necessár ia. Qual quer usuário pode conect ar -se a qual quer banco d dados. Assim, como tanto o ser vi dor quanto o cl iente são execut ados no mesmo espaço de endereç (local ), a segur ança é uma questão de acesso físico.
Os pr ivi légios SQL são validados, tal como nas outras modalidades. Compat ibi lidade Qual quer quant idade de aplicações pode ser execut ada em um ser vi dor “ embedded” sem quai squer conf lit os. Ter um ser vi dor IB/ FB sendo execut ado simultaneament e t ambém não cau qual quer pr oblema.
Mas é impor tante ressal tar que não é possível acessar simultaneamente o mesmo banco de dados a partir de múltipl os ser vi dores “ embedded” , porque el es compar tilham a ar quitet ur a SuperServe pr ecisam de acesso excl usivo ao banco de dados. Estru t ur a de ar qu ivos para o Servi dor Embedded Basta copi ar fbembed.dl l para a pasta onde se encont ra a aplicação desej ada. E então renomeá-lo p fbclient.dl l ou gds32.dl l, dependendo de como o pr ograma se conect a ao banco de dados. Ef et ue cópi as usando os dois nomes caso pr ecise usar as fer rament as de Admi ni st ração (isql , gbak, et c. )
Também deverão ser copi ados os ar quivos firebird. msg, firebird. conf (se necessár io) e ib_ut il.dl l n mesma past a.
v.1. 08 Not as da Versão Fi rebi rd 1. 5
08 fevereiro 2004
Página 56
Se bi bl iot ecas exter nas for em requeridas pela sua aplicação, p. ex. supor te INTL (fbi nt l.dl l) ou bi bl iot ecas UDF, el as deverão ser colocadas em uma past a separ ada do aplicativo. Para poder u las, coloque-as em uma pasta que reproduz a estrut ur a de di ret ór ios padr ões do Fi rebird, i.e. , e subdi ret ór ios nomeados / int l e / udf cr iados di ret amente abai xo do di ret ór io onde for am copi a ar quivos básicos do Fi rebird. Ex empl o
D:\my_app\app.exe D:\my_app\gds32.dll (fbembed.dll renomeado) D:\my_app\fbclient.dll (fbembed.dll renomeado) D:\my_app\firebird.conf D:\my_app\aliases.conf D:\my_app\isql.exe D:\my_app\ib_utils.dll D:\my_app\gbak.exe D:\my_app\firebird.msg D:\my_app\intl\fbintl.dll D:\my_app\udf\fbudf.dll
Então, ini ci e a sua aplicação. El a usar á o ser vi dor “ embedded” como uma bi bl iot eca cl iente e te acesso aos bancos de dados locai s. NOTA Desde que você mant enha a estrut ur a de di ret ór ios de acor do com estas regras, não é nec al ter ar o parâmetro RootDi rector y no firebird. conf . Porém, se você deci di r di stribuir sua aplicaçã o ser vi dor “ embedded” com uma estrut ur a di fer ente de di ret ór ios, tome o cuidado de ler antes document o README_embedded. txt da di stribuição do Servi dor “ embedded” , para instruções ad de config fi uração Desinstalação
A rot ina de desinstal ação do Fi rebird mant ém e renomei a os segui nt es ar quivos chaves: Mant ém secur ity. gdb ou renomei a- o para secur ity. fbnnnn. Mant ém firebird. log. Mant ém firebird. conf ou renomei a-o para firebird. confnnnn Mant ém al iases.conf ou renomei a- o para al iases.confnnnn "nnnn" é o número da versão da instal ação anter ior . Nenhuma tentat iva é fei ta de remover ar quivos que não tenham fei to parte da instal ação or igi nal. Ar quivos compar tilhados como o fbcliente. dl l e o gds32.dl l ser ão removidos se o cont ador de compar tilhament o (“ share count” ) indicar que nenhuma outra aplicação está usando-os. As chaves do Regi stro cr iadas ser ão removidas. Outras Notas Winsock2
O Fi rebird requer o Wi nSock2. Todas as pl ataf or mas Wi n32 deverão ter o Wi nSock2, exceto o W fei ta uma verificação da pr esença da bi bl iot eca Wi nsock2 durante a instal ação. Caso el a não sej a encont rada a instal ação fal hará. Para fazer uma at ualização do seu sist ema consul te este lin ht tp: / / support.mi cr osof t.com/ default.aspx?sci d=kb;EN-US;q177719
v.1. 08 Not as da Versão Fi rebi rd 1. 5
08 fevereiro 2004
Página 57
Wi ndo w s M E e XP
No Wi ndows ME e XP (Edições Home e Pr of issional ) exist e uma funci onal idade denomi nada Recu de Si stema, que pr ovoca uma auto-at ualização (“ backup caching” ?) de todos os ar quivos no siste com extensão ".gdb". O ef ei to é uma lentidão no acesso aos bancos de dados Int er Base/ Fi rebird pont o de uma quase paral isia, porque é ef et uada uma cópi a de segur ança destes ar quivos cada v ocor re uma oper ação de E/ L. (No XP não há opção de Recuperação de Si stema nos Servi dores .NE Um ar quivo no di retór io Wi ndows do ME, c: \wi ndows\system\filel ist.xml, contém os "tipos pr oteg ar quivo", e a extensão ".gdb" está rel acionada. Char lie Caro, ini ci al mente suger iu que se removes extensão GDB da seção "includes" deste ar quivo. Porém, desde então, ficou comprovado que o W consegue restaurar a lista. No XP, não é sequer possível editar o ar quivo filel ist.xml.
Em ME, as sol uções permanent es que podemos suger ir são: ! Ut ilizar a ext ensão FDB (Fi rebird DB) para os ar quivos de Banco de Dados ! Mover a o Banco de Dados para a past a C: \Meus Document os, que é ignor ada pela Sste i ma. ! Desat ivar complet amente o recur so de Recuperação de Si stema (verifique as document ação do Wi ndow s). No Wi ndows XP Edições Home e Pr of issional você poderá mover as bases de dados para uma partiç separ ada, e conf igurar o “ System Restor e” para excl ui r esse volume. O Wi ndows XP utiliza uma cópi a intel igente, assim a lentidão verificada no Wi ndows ME pode nã t ão significat iva no XP, pelo menos para ar quivos menores. Para ar quivos maior es (por exempl o de Dados Fi rebird! ) não parece existir uma sol ução melhor, se os seus ar quivos ".gdb" estiverem local izados no sist ema de ar quivos geral .
Estamos tentando obter uma descr ição pr ecisa do pr oblema e uma sol ução comprovada para comuni carmos aqui .Se você acha que pode aj udar com uma descr ição do pr oblema ou com uma s al ter nativa, por favor envi e uma mensagem para o gr upo de di scussão ib-support ou firebird-d news:/ / news.at ki n. com/ O compor tamento do desligament o do Wi ndows XP é um conhecido buraco negr o. Há uma pausa significativamente longa enquanto o ser vi dor tenta parar o ser vi ço. Durante este tempo a tel a indica que o Fi rebird está sendo executado como uma aplicação. Este pr oblema parece af etar só ao Wi nd XP e el e só acontece se o Guar di an não estiver sendo ut ilizado para parar o ser vi ço do Fi rebird. Port ant o, usá-lo é a for ma de cont or nar o pr oblema at é que uma melhor sol ução sej a enco
Innssttaallaaççããoo nnoo U UN NIX IX // L Lin inuuxx
(Or igi nalment e escr it o por Mark OD ' onohue, revisado para 1. 5) O ser vi dor Fi rebird é di sponi bi lizado em duas modalidades, Cl assic que é executada como um se SuperServer que é execut ado como um daemon em segundo pl ano. O usuário que estiver tendo se pr imeiro contato com o Fi rebird pode usar qual quer versão, embora sej a pr ovável que a versão c of er eça uma melhor pl at af or ma para experiênci as ini ci ai s com o Fi rebird.
NOTAS – LEIA ANTES
1) É pr eciso ter di rei tos de usuário root para instal ar o Fi rebird.
v.1. 08 Not as da Versão Fi rebi rd 1. 5
08 fevereiro 2004
Página 58
2) A inst al ação no Li nux requer que o pacot e gl ic inst al ado t enha versão igual ou super ior a gblib 2. 25. 3) Para uma verificação super fici al de compat ibi lidade Li nux, consul te est a t abel a, mas não a considere palavra final sobre o assunto. Di stribuições de bi nários Li nux podem variar depende de quando e onde el as for am mont adas. 4) Garanta que os edit or es de pacote, ed e vi m, estão inst al ados no seu sist ema. Se o edit or req não est iver pr esent e, o pacot e ser á inst al ado, mas os script s de inst al ação irão fal har. (NOT dependênci a pode no fut ur o ser substituída por sed.)
INSTALAÇÃO EM LINUX
As instruções a segui r ref er em-se a instal ação da Cl assic. Para instal ação da edição Superser ver o C ser á substituído pelo SS. Por exempl o, o pacote Fi rebirdCS-1. 5. 0-nnnn.i86.rpm ser á substituído por Fi rebirdSS- 1. 5. 0-nnnn.i86.rpm.
Para u ma in stal ação rpm lin u x $rpm -ivh FirebirdCS-1.5.0-nnnn.i686.rpm
Para u ma in stal ação .tar .gz lin u x $tar -xzf FirebirdCS-1.5.0-nnnn.tar.gz $cd Fi rebirdCS$./install.sh
1. 5. 0-nnnn.i86
* ou FirebirdSS-1.5.0-nnnn
O q u e u ma in stal ação Li nu x far á A instal ação Li nux irá: 1. Tent ar parar al gum ser vi dor que estej a em execução. 2. Adici onar o usuário ‘firebird’ e o gr upo ‘firebird’ se el es ai nda não existirem. 3. Instal ar a aplicação na pasta / opt/ firebird e cr iar di recionamentos para as bi bl iot ecas em / usr/ l para os cabeçalhos em / usr/ include 4. Automat icament e adici onar gds_db na porta 3050 em / et c/ ser vi ces se a entrada ai nda não exist 5. Automat icament e adici onar local host.local domain e HOSTNAME em /et c/ host.equi v 6. A versão SuperServer instal a também um script de partida em / et c/ rc. d/ ini t.d/ firebird. 7. A versão Cl assic instal a um scr ipt de ini ci al ização do ser vi dor firebird em / et c/ xi net.d/ firebird para sistema inetd antigos, uma entrada é adici onada no ar quivo / et c/ inetd. 8. Especi ficament e na di stribuição SuSE um novo di recionamento rcf irebird é cr iado em / usr/ bi o scr ipt ini t.d, e uma entrada Fi rebird é cr iada em / et c/ rc. conf ig. 9. Ini ci a o ser vi ço / ser vi dor. O Fi rebird deve partir automat icament e em runlevel 2, 3 e 5. 10. É gerada randomi cament e e conf igurada uma senha para o usuário SYSDBA que ser á ar mazen em / opt/ firebird/ SYSDBA.password. 11. É adici onada uma entrada em al iases.conf para o banco de dados exempl o, empl oyee.fdb. Test es da in st al ação Li nu x Passo 1 – Acessan do o banco de dados $cd /opt/firebird/bin $isql -user sysdba -password
v.1. 08 Not as da Versão Fi rebi rd 1. 5
08 fevereiro 2004
Página 59
>connect localhost:employee.fdb /*este é um acesso através do alias >select * from sales; >select rdb$relation_name from rdb$relations; >help; >quit;
*A senha foi gerada para / opt / firebird/ SYSDBA.password.
você
na
instal ação.
El a
pode
ser
obtida
no
ar quivo
Passo 2 – Cr ian do um banco de dados
A partir da versão 1. 5, o ser vi dor firebird ser á executado por padr ão pelo usuário ‘firebird’. Embora esta sempr e t enha sido a recomendação, anter ior mente o padr ão er a executar o ser vi dor pelo us ‘root’. Quando em execução pelo usuário ‘root’, o ser vi dor possuía di rei tos pl enos para ler , cr iar e apagar bancos de dados em qual quer local do sist ema de ar quivos POSIX. Por questões de segur a ser vi ço deveria t er sua capaci dade de ler, cr iar e apagar ar quivos limi tada. Enquanto a nova conf iguração é melhor da perspect iva da segur ança, el a requer que cuida especi ficos sej am tomados na cr iação de novos bancos de dados: 1) O usuário ‘firebird’ deve possui r di ret os de escr ita na pasta onde ser á cr iado o banco de dados. 2) O valor recomendado para o at ributo DatabaseAccess no ar quivo /opt/firebird/ firebird. conf de ser None, para permi tir o acesso apenas at ravés das entradas do ar quivo al iases.conf . 3) Usar entradas no al iases.conf para abstrai r dos usuários a local ização física dos bancos de dad Mais inf or mações sobre al ias aqui . Os pr ocediment os para cr iação de novos bancos variar ão conf or me a conf iguração escolhi da. ent ant o, recomendamos os segui nt es passos com est a sugest ão de conf iguração: 1) Se a pasta do usuário ‘Fi rebird’ ai nda não foi cr iada, mude para o usuário root e cr ie a pasta $su – root $mkdir –p /var/firebird $chown firebird:firebird /var/firebird
2) Cr ie fisicament e o novo banco e conf igure uma entrada de al ias para el e. Como usuário roo firebird, execut e o segui nt e scr ipt : $cd /opt/firebird/bin $./createDBAlias.sh test.fdb /var/firebird/test.fdb
(O uso é: cr eat eDBAlias.sh )
3) Como uma al ter nativa ao item 2, os pr ocediment os do scr ipt cr eateDBAlias.sh podem se execut ados um a um por: $vi /opt/firebird/aliases.conf e acrescente uma linha no fim do arquivo: test.fdb /var/firebird/test.fdb
4) Então cr ie o Banco de Dados:
v.1. 08 Not as da Versão Fi rebi rd 1. 5
08 fevereiro 2004
Página 60
$/opt/firebird/isql -u sysdba -p SQL>createdatabase'localhost:test.fdb';SQL>quit;
5) Se o valor de DatabaseAccess em / opt/ firebird/firebird. conf estiver defini do com Full ou um cami nho restrito (por exempl o: DatabaseAccess=/ var/ firebird) outra al ter nativa para o passo 2 é cr iar fisicamente o banco de dados di retamente, utilizando o cami nho absol uto j unto com o n do ar quivo: $/opt/firebird/isql -u sysdba -p SQL>create database '/var/firebird/test.fdb'; SQL>quit;
Caso use esta opção, o ar quivo do banco de dados t ambém poderá ser acessado di ret amente sem q sej a fei ta uma entrada no ar quivo de al ias. $/opt/firebird/isql -u sysdba -p SQL>connect '/var/firebird/test.fdb'; SQL>quit;
*A senha foi gerada para / opt / firebird/ SYSDBA.password.
você
na
instal ação.
El a
pode
ser
obtida
no
ar quivo
Di cas e al gu n s Scr ipt s ú t eis
Complementando os ar quivos padr ões de instal ação, estão di sponíveis na pasta bi n desta versão o segui nt es scr ipt s: !
!
!
!
!
ch an geDBAPassw ord. sh — Al ter a a senha do usuário Fi rebird SYSDBA e, se necessá script deini ci al ização /et c/ rc. d/ ini t.d/ firebird para que sej a ut ilizadatambém a novasenha.
Uso: cr eateAliasDB.sh . cr eateAliasDB.sh — Este scr ipt cr ia fisicament e um novo banco de dados e adici ona uma entrada no ar quiv al iases.conf . fb_ co n f ig — Um scr ipt que pode ser usado com makefiles para gerar os cami requeridos e inclui r as di ret ivas de lib para a versão instal ada do Fi rebird. fb_conf ig -help m a lista complet a de opções. ch an geGdsLi br ar y Com patibl eLin k .sh — somente Cl assic — Al ter na o di recionamento cl iente para libgds.so entre a multi pr ocessada libfbclient.so e a uni pr ocessada libfbembed.so que permi te o acesso embedded di ret o a um banco de dados. Para mant er a compat ibi lidade com instal ações anter ior es, libgds.so por padr ão aponta para libf bembed.so.
Acesso di ret o ou embedded aos ar q u iv os de ban co de dados - A inst al ação cl ássic modo embedded de acesso que permi te que pr ogramas acessem di ret amente o ar quivo de ba dados. Para oper ar neste modo, um usuário com permi ssões de banco de dados pr ecisar á de pr ivi legiado a al guns ar quivos de conf iguração e de estado do firebird.
v.1. 08 Not as da Versão Fi rebi rd 1. 5
08 fevereiro 2004
Página 61
!
Obten do acesso ao ban co de dados: Agor a que 'firebird' (e não root) é o usuário execução do aplicativo, você pr ecisar á saber como inclui r um usuário no grupo firebird e c habi litar o seu acesso aos bancos de dados. Isto está document ado nas notas lei ame, mas os segui nt es passos devem levá-lo at é onde você pr ecisa chegar :
Para adici onar um usuário (por exempl o, skywalker) ao gr upo firebird, o usuário root pr ecisar á faz $ usermod -G firebird skywalker
Na pr óxima vez que o usuário 'skywalker' entrar no sistema el e poderá começar a trabal har c bancos de dados firebird. Para list as dos gr upos a que um usuário pertence, di gi te a segui nt e linha de comando: $ gr oups !
NTPL com di strui buições Li nu x recen t es: Pr oblemas A nova NPTL (Native POSIX Thread Li br ar y) do Red Hat 9 (at é o moment o) causar á pr oblema Superser ver e os pr ogramas compilados local ment e, inclui ndo as fer ramentas de Admi ni stra Gbak, em partircular ,indicará um er ro de “Br oken Pi pe”. Para cont or ná-lo:
1. em / et c/ ini t.d/ firebird
LD_ASSUME_KERNEL=2.2.5 export LD_ASSUME_KERNEL
Isto resol ve a instânci a do Servi dor. Você pr ecisar á t ambém t er uma variável de ambi ente defini d seu ambi ente local . Então: 2. Adici one o segui nt e em / et c/ pr of ile, para garantir que todo usuário o ut ilizará como fer rame linha de comando. após HISTSIZE=1000
adici one
LD_ASSUME_KERNEL=2.25
E na linha segui nt e, exporte-o:
export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE INPUT_RC LD_ASSUME_KERNEL
Desinstalando em Linux
Caso pr ecise fazer uma desinstal ação, faça-a como usuário root. Os exempl os a segui r base ut ilizam a extensãoCSdoServi dorCa l ssic, massãoválidostambémparaoSuperser ver, substitui ndo-seoCSpeloSS. Para pacotes rpm: $rpm -e FirebirdCS-1.5.0
or para instal ações .tar .gz: $/opt/firebird/bin/uninstall.sh
v.1. 08 Not as da Versão Fi rebi rd 1. 5
08 fevereiro 2004
Página 62
Innssttaallaaççããoo ddoo F FirireebbiirrddC Cllaassssiicc & & SSu uppeerrSSeerrvveerr nnoo S Soollaarrisis 2 2..7 7 SSppaarrcc
Não está at ualment e di sponível. Por favor , consul te as Notas da Versão 1 como uma ref er ênci a para instal ações 1. 5.
Innssttaallaaççããoo ddoo F FirireebbiirrddC Cllaassssiicc nnoo M MaaccO OSS X X // D Daarrw win in
Não está at ualment e di sponível. Por favor , consul te as Notas da Versão 1 como uma ref er ênci a para instal ações 1. 5.
Buuilildd oouu IInnssttaallaaççããoo ddoo F Firireebbirirddnnoo F FrreeeeB BSSD D
Não está at ualment e di sponível. Por favor , consul te as Notas da Versão 1 como uma ref er ênci a para instal ações 1. 5.
Configurando a porta de serviço no cliente e no servidor Por padr ão um ser vi dor Fi rebird obser va a porta 3050 por requi sições de conexão de cl ientes. El regist rada com o nome de gds_db. A boa nova é que, se você quiser mant er estes padr ões você n pr ecisar á fazer nada, quer no ser vi dor ou nos cl ientes para config fi urar a porta de ser vi ço. Você pode optar por uma porta di fer ente, por um nome de ser vi ço di fer ente ou al ter ar ambos. Vo pode pr ecisar fazer isto se 3050 for requerido por um outro ser vi ço, por exempl o, um ser vi ço concor rente gds_db conf igurado para outra versão de ser vi dor Fi rebird ou Int er Base®. Há di ve meios para se modi ficar os valor es padr ões. Tanto o ser vi dor como cl ientes pr ecisam ser conf igu para se al ter ar o nome ou a porta de ser vi ço, ou ambos, at ravés de um dos segui nt es método 0 1 2
Na string de conexão do cl iente. No comando para ini ci ar o execut ável do ser vi dor. At ivando os parâmet ros RemoteSer vi cePort ou RemoteSer vi ceName no firebird. conf (V. 1. 5 e di ante) 3 No daemon de conf iguração (para Cl assic em sist emas POSX I ) 4 At ravés de uma ent rada no ar quivo de ser vi ços. Antes de examinar cada uma destas técni cas, ser á út il examinarmos a lógica ut ilizada pelo ser vi do para deter mi nar a porta que ser á obser vada e pelo cl iente para defini r a porta que ser á utilizada para o envi o das suas requi sições.
Coom moooo sseerrvviiddoorr ddeetteerrm min inaa aa ppoorrttaa oobbsseerrvvaaddaa
O executável do ser vi dor possui um parâmetro de linha opci onal (-p) que pode indicar ou o número d porta que ser á obser vada ou o nome do ser vi ço da porta que ser á obser vada. Neste pont o, se o parâmetro estiver pr esente, quer a porta 3050, quer o nome do ser vi ço (gds_db) ser á substituído ar gument o for neci do at ravés da opção –p. Depois, ou ini ci al ment e, se não for usada a opção –p, o ser vi dor verifica no firebird. conf os parâme RemoteSer vi ceName e RemoteSer vi cePort:
v.1. 08 Not as da Versão Fi rebi rd 1. 5
08 fevereiro 2004
Página 63
!
Se ambos est iverem coment ados pelo marcador "#" ent ão é assumido o valor padr ã al ter ação ocor rer á. Qual quer ar gument o recebido at ravés da opção -p permanece e valor es não for neci dos permanecem com o valor padr ão.
!
Se Remot eSer vi ceName t iver sido at ivado, mas não Remot eSer vi cePort , ent ão o nom ser vi ço ser á substituído, somente se el e já não tiver sido al ter ado anter ior mente pela opção –p.
!
Se RemoteSer vi cePort foi at ivado, mas não RemoteSer vi ceName, então o número d substituído, somente se el e já não tiver sido al ter ado pr eviamente pela opção –p.
!
!
Se ambos RemoteSer vi cePort e RemoteSer vi ceName for am at ivados, então Remote tem pr ecedênci a, se já não houve al ter ação pr évia at ravés do ar gument o –p. Se já houve modi ficação pr évia, o valor de RemoteSer vi ceName é ignor ado e o valor de RemoteSer vi cePort substitui 3050.
Neste pont o, se tiver havi do substitui ção, quer do nome do ser vi ço, quer do ambas as versões do ser vi dor, v. 1. 0 e v. 1. 5, executar ão uma verificação do ar quivo ser vi ces p pr ocur ar uma entrada com a combinação correta de nome de ser vi ço e número de porta. Caso a combinação seja encont rada tudo estar á perfei to. Se não, se o nome do ser vi ço não for gds_d uma exceção ocor rer á e o ser vi dor int er romperá sua partida. Se gds_db for o nome da porta d ser vi ço e nenhuma outra porta puder ser rel acionada ao ser vi ço, el e ser á automat icament e mapeado para 3050.
Se o nome padr ão do ser vi ço for modi ficado, você ter á que adici onar uma entrada no ar quivo de Servi ços –veja o tópico mais a frente, Conf igurando o arquivo de serviços. Usando a opção de substituição –p
Note que esta opção já estava di sponível no Fi rebird 1. 0. x também, mas não tinha sido a document ada. Ini ci ar o ser vi dor com o parâmetro opci onal –p permi te substitui r ou o número padr ão da porta (3 ou o nome padr ão do ser vi ço (gds_db) que o ser vi dor utiliza para obser var as requi sições de cone comando permi te substitui r um deles, mas não ambos. A partir da versão Fi rebird 1. 5 você poderá combinar a opção –p com configurações do firebird.conf para possibi litar a al ter ação tanto do número da porta quanto do nome do ser vi ço. Syn tax for TCP/ IP server-command -p port-number | service-name
Por exempl o, para ini ci ar o Superser ver como uma aplicação e modi ficar o nome do ser vi ço de gd para fb_db: fbserver -a -p fb_db
Ou, para al ter ar a porta de 3050 para 3051:
fbserver -a -p 3051
Syn tax for WNet redirection
v.1. 08 Not as da Versão Fi rebi rd 1. 5
08 fevereiro 2004
Página 64
Em uma rede WNet , substitua a sint axe do ar gument o –p acima pela segui nt e sint axe “ barrapont o-ar roba": fbserver -a -p \\.@fb_db
ou fbserver -a -p \\.@3051
Cl assic n o POSIX: o daemon i net d ou xinet d
Assim como o ser vi dor Fi rebird Cl assic em Li nux ou UNIX, o daemon inetd ou x i ne td é conf igura obser var na porta padr ão e para transmi tir através do nome de ser vi ço padr ão. O scr ipt de insta registrar á a notação apropriada no ar quivo de config fi uração / et c/ inetd. conf ou / et c/ xi net
Você poderá al t er ar a conf iguração at ual, se necessár io. A segui r, um exempl o do que você encont ra no ar quivo xi netd. conf ou inetd. conf após instal ar um ser vi dor Fi rebird Cl assic no Li nux: # default: on # description: FirebirdSQL server # service gds_db { flags socket_type wait user # user log_on_success log_on_failure server disable = no }
= REUSE KEEPALIVE = stream = no = root = @FBRunUser@ += USERID += USERID = /opt/firebird/bin/fb_inet_server
Caso você conf igure a porta de ser vi ço para valor es di fer entes do xi netd. conf ou inetd. conf de acor do. Reini ci e xi netd (ou inetd) com ki ll -HUP para assegur ar que o daemon use a nova conf iguração.
NOTA Requisições de conexão fal harão se ambos xi netd (ou inetd) e fbser ver (ou ibser ver) tent obser var a mesma porta. Se a máquina host possui r esta conf iguração ambígua, ser á necessár io config fi urar os parâmet ros para que cada ser vi dor t enha a sua pr ópria porta de ser vi ço. Usando um parâmetro do arquivo de configuração
Você pode conf igurar tanto RemoteSer vi ceName como RemoteSer vi cePort no firebird. conf para modi ficar o número da porta padr ão (3050) ou o nome padr ão do ser vi ço da porta (gds_db) que o ser vi dor usa para aguardar requi sições de conexão. O ser vi dor usar á um parâmet ro RemoteSer vi ce* , mas não ambos. Caso você conf igure ambos, RemoteSer vi cePort ser á ignor ado em todos os casos, exceto quando o ser vi dor for ini ci ado atrav um comando que inclua a opção –p indicando a modi ficação do nome do ser vi ço. Assim, você pod ut ilizar a opção –p e o parâmet ro RemoteSer vi ce* , em combinação, para al ter ar tanto o número d porta quanto o nome do ser vi ço.
v.1. 08 Not as da Versão Fi rebi rd 1. 5
08 fevereiro 2004
Página 65
Se o valor padr ão do nome do ser vi ço for al ter ado, então ser á pr eciso fazer uma indicação no ar qu de Servi ços. CUIDADO! Se você at ivar RemoteSer vi ceName ou RemoteSer vi cePort, mas mant iver os valor es inalter ados, mesmo assim el es ser ão trat ados como modi ficados. Então, ser á necessár io fazer u notificação expl íci ta no ar quivo de ser vi ços com as conf igurações padr ões de porta.
Coonnffiigguurraannddoo oo cclliieennttee ppaarraaqquuee eellee een nccoonnttrreeaa ppoorrttaa ddee sseerrvviiççoo Se você conf igurar o seu ser vi dor com os valor es padr ões (ser vi ço gds_db obser vando na porta 305 nenhuma conf iguração adici onal ser á requerida. Se o ser vi dor estiver aguardando em uma porta di fer ente ou usando um nome di fer ente de ser vi ço, a aplicação cl iente e / ou a máquina onde el e é executado pr ecisar ão de al guma ativação de parâmetros para ajudar a bi bl ioteca cl iente do firebird a encont rar a porta que está sendo ut ilizada. A string de conexão utilizada pelo cl iente pode inclui r infor mação sobre a porta do ser vi dor obser vad O cl iente Fi rebird 1. 5 pode opci onal mente usar uma cópi a local do firebird. conf . Pode ai nda ser p fazer al gumas al ter ações no ar quivo de ser vi ços do cl iente. Usando a string de conexão
Se apenas o número da porta t iver sido al ter ado, inclua então o novo número da porta ou o nome d ser vi ço na string de conexão. Isto funci onar á com todas as versões do Fi rebird. Sin t ax e para conex ões TCP/ IP
Para se conect ar a um banco de dados em um ser vi dor chamado Al ice, que está t ransmi t indo na po 3050, e com o nome ser vi ço fb_db, a st ring de conexão deveria ser : para POSX I :
alice/fb_db:/data/teaparty.fdb
Ou, se o nome do ser vi ço for gds_db e o número da porta for 3051:
alice/3051:/data/teaparty.fdb
Para Wi ndows:
alice/3051:D:\data\teaparty.fdb alice/fb_db:D:\data\teaparty.fdb
Note que o separ ador entre o nome do ser vi dor e a porta é uma barra inver tida e não dois pont os dois pont os antes do cami nho físico ai nda são requeridos. Sin t ax e para conex ões WNet
Em uma rede WNet , use a not ação est ilo UNC: \\alice@3051\d:\teaparty.fdb
ou
\\alice@fb_db\d:\teaparty.fdb
Se o número da porta do ser vi ço ou o nome do ser vi ço tiver sido modi ficado, você pr ecisar á registra al t er ação no ar quivo de ser vi ços.
v.1. 08 Not as da Versão Fi rebi rd 1. 5
08 fevereiro 2004
Página 66
Usando a sintaxe de portas com alias de banco de dados.
Para conect ar -se através de uma porta não padr ão, ut ilizando o al ias de um banco de dados, afi fi número da port a ou ser vi ço ao nome do ser vi dor, e não ao al ias. Por exempl o, suponha que o al banco est ej a defini do no al iases.conf como:
rabbit = /data/teaparty.fdb
A string de conexão da sua aplicação com o ser vi dor 'al ice' deveria ser : alice/fb_db:rabbit
or
alice/3051:rabbit
Usando cópias do firebird.conf
A partir da versão do Fi rebird 1. 5, você poderá mant er opci onal ment e uma cópi a do firebird. co lado do cl iente, também no di ret ór io rai z da instal ação, e config fi urar o RemoteSer vi ceName ou Remot eSer vi cePort para aj udar o cl ient e a local izar a port a do ser vi dor. !
!
Você pode config fi urar um dos dois parâmet ros para complement ar a out ra config fi u pela string de conexão; ou para substitui r apenas o RemoteSer vi ceName ou o RemoteSer vi ce sem ut ilizar a string de conexão para isto. Se você pref er ir evit ar inf or mar o nome do ser vi ço ou o número da port a na st rin ser vi dor estiver usando valor es não padr ões para ambas as conf igurações, você poderá conf ig tanto RemoteSer vi ceName como RemoteSer vi cePort. Você deveria usar esta técni ca caso a su aplicação cl iente pr ecise mant er a capaci dade de se conect ar com ser vi dores Int er base ou Fi
Localização de componentes Firebird nos clientes
Quando você basei a uma aplicação no uso do firebird. conf em máquinas cl ientes, é impor tante que a bi bl iot eca cl iente sai ba onde encont rar este ar quivo. Você pr ecisar á defini r uma pasta Raiz de instal ação do Fi rebird e inf or mar o sistema a sua local ização. Use a variável de ambi ente FIREBIRD para fazer isto. Al ter nativamente, os cl ientes do wi ndows podem usar a chave de Regi stro do Fi reb Com uma conf iguração correta de cl iente, você poderá também utilizar uma instânci a local do ar qu de mensagens.
Coonnffiigguurraannddoo oo aarrqquuiv ivoo ddee sseerrvviiççooss Você não pr ecisa modi ficar a conf iguração da porta de ser vi ço se o seu Fi rebird ou os cl ientes us os valor es padr ões de instal ação, gds_db na porta 3050. Se gds_db for o nome do ser vi ço e el e nã puder ser rel aciona a qual quer out ra port a, a 3050 ser á mapeada aut omat icament e. Se você estiver conf igurando a porta de ser vi ço para usar um número ou nome di fer ente, tanto o ser vi dor quando os cl ientes deverão ser expl ici tamente at ualizados para ref let ir a al ter ação da conf iguração. Tant o em Li nux quanto em Wi ndows, esta inf or mação é ar mazenada no ar quivo de serviços.
v.1. 08 Not as da Versão Fi rebi rd 1. 5
08 fevereiro 2004
Página 67
Localizando o arquivo de serviços !
No Wi ndow s NT/ 2000/ XP/ S2003, o ar quivo é C: \wi ndow s\syst em32\dr ivers\et c\ ser vi ces.
!
No Wi ndow s 95/ 98/ ME, el e é C: \w i ndow s\ser vi ces.
!
No Li nux/ UNIX é / et c/ ser vi ces.
A notação para um ser vi ço deve parecer com esta: gds_db 3050/tcp # Firebird Server 1.5
Abra o ar quivo usando um editor de textos e adici one uma linha ou edite a notação gds_db exist como segue: !
Para um ser vi dor ou cl ient e Fi rebird 1. 0. x, al t er e ou o nome do ser vi ço ou o núm conf igurar como o ser vi dor irá ser ini ci ado.
Para um ser vi dor Fi rebird 1. 5 ou mais recente, edite ou adici one uma linha, conf or me requerido houver um ser vi dor Fi rebird 1. 0 ou Int er Base instal ado no mesmo comput ador, mant enha as e requeridas por el es e adici one uma nova entrada para defini r como o ser vi dor Fi rebird 1. 5 in
v.1. 08 Not as da Versão Fi rebi rd 1. 5
08 fevereiro 2004
Página 68
Informações Adicionais Inf or mação adici onal sobre o Fi rebird pode ser encont rada em: ht tp: / / firebird. sourcefor ge.net/ Ou nos sites af iliados: ht tp: / / firebirdsql .or g/ ht t p: / / w ww. ibphoenix. com/ ht t p: / / w ww. cvalde.com/ Se estiver inter essado em partici par do desenvolvi mento do Fi rebird, ou se quiser ini ci ar uma di sobre al guma possível fal ha, partici pe do gr upo de desenvolvi ment o firebird-devel. Para inscr eve envi e uma mensagem em br anco para: mailto: [email protected] l urcefor ge.net Com a palavra 'subscr ibe' no campo do assunto.
Por favor , n ão u t ilize a lista firebird-devel para postar qu estões de su por te. Para supor te técni co, partici pe do gr upo de di scussão firebird- support em : ht t p: / / w ww. yahoogroups.com/ gr oups/ firebird- support Para supor te específico do Int er Cl ient e desenvolvi ment o e supor te em Java, use o gr upo: ht tp: / / www. yahoogroups.com/ gr oups/ Fi rebird-Java O gr upo firebird-support trata questões técni cas sobre o Fi rebird e o Inter Base(R). Por favor, leve o pr oblemas e dúvi das envolvendo Delphi ou outras linguagens de pr ogramação para os fór uns apropriados.
A comuni dade “ open-source” mant ém outros gr upos de di scussão sobre di fer entes aspect os d desenvolvi ment o do Fi rebird. Por favor , verifique na seção “ Mail Li sts e Newsgr oups” no Ste i d Comuni dade Fi rebird. Os gr upos de di scussão de desenvolvi ment o, a list a geral da comuni dade, assim como outras list a int er esse para pr ogramador es Fi rebird e Int er Base, estão espelhadas no ser vi dor de Notíci as em : news:/ / news.at ki n. com/ Suporte Pago ao Fi rebird a nível mundial pode ser obtido at ravés do IBPhoenix (os endereços de cont at o e os valor es est ão di sponíveis em ht t p: / / w ww . ibphoenix. com/ ). Al guns membros da equi pe Fi rebird também estão di sponíveis para supor te ou consul tor ia. Por favor , cont at e-os di ret amente. Servi ços de Recuper ação de Bases de Dados em Fi rebird ou Int er Base também podem ser pr estados pelo IBPhoenix. Para fazer uma anál ise e tentar uma possível recuper ação de base de dado corrompi da, você pode ut ilizar o IBSur geon, que pode ser encont rado em IBase. ru (ht t p: / / w ww. ibase. ru/ ) IBase. ru t ambém pr estas ser vi ços de recuper ação na Rússia e Europa.
v.1. 08 Not as da Versão Fi rebi rd 1. 5
08 fevereiro 2004
Página 69
Of er tas / Pedi dos de patrocíni o do desen volvi ment o do Fi rebird devem ser envi ados di ret amente para a Fundação Fi rebirdSQL Inc. Envi e um emai l para foundat ion@f irebirdsql .or g. Se pr ef er ir o cont at o com os admi ni strador es do pr oj et o Fi rebird – envi e um emai l para [email protected]. Di scussão Geral sobre melhorias do FB podem ser acessadas no gr upo Fi rebird-pr ior it ies: ht tp: / / www. yahoogroups.com/ community/ Fi rebird-pr ior ities
IB-Ar chit ect ( ht t p: / / w ww . yahoogroups.com/ communit y/ ib-ar chit ect )deverá ser ut ilizado APENAS para di scussões t écni cas de design . Questões de Suporte/ conver são não deverão ser trat adas aqui .
Ferramentas e Drivers Pr ogramas Desk t op Cl ien tes de Bases de Dados
Di versas opções excelentes de fer ramentas de Admi ni stração Gr áf icas para o Fi rebird estão rel acionadas na pági na “ Cont ributed Downloads” em ht t p: / / w ww. ibphoenix. com/ . Al gumas sã Sour ce, al gumas são gr at ui t as e out ras são pr odut os comerci ai s reconheci dos. O pr ograma IBConsol e da Borland não é recomendado como cl iente de admi ni stração para o Fi re 1. 5. Dr ivers e Compon en t es
JAVA: O pr ojet o de dr iver Jaybird JDBC é desenvolvi do at ivament e no âmbi to do pr ojet o Fi rebird Foram lançados ini ci al mente um dr iver Ti po 4 JDBC/ JCA e um dr iver beta Ti po 2. O Códi go fonte e execut ávei s podem ser obtidos na pági na de versões do Fi rebird : ht t p: / / sourcefor ge.net/ pr oj et / showf iles.php?gr oup_id=9028
Para supor te e partici pação no desenvolvi ment o e testes, inscr eva-se no fór um Fi rebird-java e ht t p: / / www. yahoogroups.com/ communit y/ firebird-j ava .NET: Fi rebird possui um pr oj et o dr iver .NET em andament o. Códi go fonte e bi nários poderão encont rados na pági na de versões do Fi rebird em : ht t p: / / sourcefor ge.net/ pr oj et / showf iles.php?gr oup_id=9028 Para supor te e partici pação no desenvolvi ment o e testes, inscr eva- se no fór um Fi rebird .NET pr ov http: / / lists.sourcefor ge.net/ lists/ listinfo/ firebird- net-pr ovider Delphi e C++Bui lder : Os usuários t em a seu di spor duas poderosas al t er nat ivas de acesso di ret o a do Fi rebird, ambas com bom supor te pr óprio e da comuni dade de pr ogramador es. São el as : !
I B Obj et s de Jason Whar t on em ht t p: / / www. ibobj et s.com/
!
FIBPLus em ht t p: / / www. devr ace. com/
C++ : a bi bl iot eca de acesso C++ gr at ui ta 'IBPP' ( ht t p: / / www. ibpp. or g/ ) , licença MPL, hospe sourcefor ge.net, é complet amente portável para Wi n32 e Li nux e pr ovavel ment e outras pl at af o POSIX. El a ser á út il quando se desej r t er um acesso de baixo nível a API, mas com um nível de abst C++ independent e de qual quer ambi ente particular de desenvolvi ment o.
v.1. 08 Not as da Versão Fi rebi rd 1. 5
08 fevereiro 2004
Página 70
ODBC: A lista de dr ivers ODBC pode ser encont rada na pági na “ Cont ributed Downloads” e ht t p: / / w ww. ibphoenix. com/ . O espaço para di scussão do desenvolvi ment o do dr iver ODBC/ JDBC Open Sour ce é o fór um : http: / / lists.sourcefor ge.net/ lists/ listinfo/ firebird-odbc-devel PHP: Um gr upo está trabal hando para conver ter a antiga extensão existente do Int er base para padr ão at ual do Fi rebird. Para inf or mações sobre este pr oj et o, inscr eva- se no fór um Fi rebird-PHP e ht t p: / / ww w. yahoogroups.com/ communit y/ firebird-php
PYTHON: KInt er basDB é uma extensão Pyt hon que implementa supor te ao Fi rebird com compa padr ão Pyt hon Dat abase API 2. 0. Suporte complet o e nativo da API do cl iente Fi rebird; com versõ estávei s e em desenvolvi ment o at ivo. Li cença Open Sour ce BSD. Versões e inf or mações podem se encont radas em : ht tp: / / ki nt er basdb. sourcefor ge.net/
Documentação A document ação do Int er Base v 6. 0 t ambém se aplica a esta versão do Fi rebird. Uma versão beta d manuai s do Int er base( tm) 6 em for mat o Adobe Acrobat pode ser encont rada em : ftp: / / ftpc.inprise. com/ pub/ int er base/ techpubs/ ib_60_doc.zi p Um índice estrut ur ado da Document ação é mant ido no sit e da comuni dade Fi rebird em : ht tp: / / firebird. sourcefor ge.net/ index.php?op=doc É um t rabal ho ai nda em curso e t odas as cont ribuições são bem vi ndas – envi e uma mensagem para [email protected] l urcefor ge.net Al guns guias de inst al ação e al guns “ HowTos” podem ser obt idos na ár ea de document ação em : ht tp: / / ww w. firebirdsql .or g/ Ou mais di ret amente em : ht tp: / / sourcefor ge.net/ pr oj et s/ firebird
O pr incipal repositór io para questões técni cas e de ut ilização é o site da IBPhoenix : ht t p: / / w ww. ibphoenix. com/ IB Phoeni x também di sponi bi liza assinatur as de CDs at ualizados freqüent emente (versões avu também estão di sponíveis) cont endo os manuai s publ icados por el es – Using Fi rebird e The Fi re Refer ence Guide. Al guma document ação adici onal pode ser obtida di ret amente na ár ea técni ca do sit e da Borland: ht t p: / / ww w. borland. com/ t echpubs/ int er base/
v.1. 08 Not as da Versão Fi rebi rd 1. 5
08 fevereiro 2004
Página 71
Correções e Adições desde a versão 1.0 Tr ack er #
Descr ição
Cont ribu idor
(sem #)
Corrigi das al gumas inconsist ênci as nos nomes dos Set s de caraPc.t Ja erceos.bi
(sem #)
GSTAT caía com al gumas combinações de opções.
(sem #)
Corrigi do o t rat ament o de SAVEPOINT em BREAK| LEAVE/ EXIT.D. Yemanov
(sem #)
Ot imi zador al ter ado para optar por índices simples no A lu. gB arrind km e an compostos e para ut ilizar índices únicos com especi ficação idênt icas.
(sem #)
Melhoria nas fer rament as de inst al ação do Wi n32, ‘ inst svc.exO e’. eMascia ‘instreg.exe’ .
Melhoria
Número máxi mo de (DB_PAGE_SZ I E/ 16)-2,
índices
por
tabel a
D. Yemanov
passou
de
6A 4. Hpaarriso ra n, transpor tado para 1. 5 por N. Samof at ov
721792
Uma conexão aber t a for muit o t empo pr ovocava “ leak” de mN em . Sa ória mofnaot ov di sposit ivo do kernel do Sist ema Oper acional
775003
UDF log(x, y) devolvi a log(y, x).
774987
UDFs ltrim( '') e rtrim( '') devolvi am NULL; rtrim omitia o 1ºPc. aV ra i nckte enro eo. g, N. Samof at ov
(sem #)
Resol vi da a queda do ser vi dor causado pela perda do conA t e. xPto eshdkaof f transação.
(sem #)
Resol vi da a queda do ser vi dor para qual quer combinação de su A.bP -se esh l ekcotf f e bet ween.
736318
" STARTING WITH " fal hava quando usado comDín . dYic em es. anov
(sem #)
Conf lit os de Lock não exist ent es ocor riam após a execução dA e . tPrig eshge kor sf f pr é (updat e/ delet e) .
Melhoria
Defini ção de reser vadas.
Melhoria
. lYgu em Adici onadas novas (mais específicas) mensagens de er ro paraDa maan s ov, A. Br inkman, das al t er ações da versão 1. 5. A. Peshkof f
INSERTING/UPDATING/DELETING
P. Vi nkenoog, N. Samof at ov
como
palavN ra . Sa s mnoãfoat ov
sta . Pl aeçsh ãokodf fo Correção de Adici onada opção –login a ‘instsvc.exe’ para permi tir a inA ser vi ço FB com uma cont a di fer ent e de local syst em. Segurança
v.1. 08 Not as da Versão Fi rebi rd 1. 5
08 fevereiro 2004
Página 72
Tr ack er #
Descr ição
Cont ribu idor
Melhoria
Reint roduzido o t rimming de campos VARCHAR nos pr ot ocol osDre . Ymeomt o an s.ov
(sem #)
Queda al eat ór ia do ser vi dor quando er am pr epar adas quer ies dD e . gYream ndaenov di mensão.
Melhoria
Aper fei çoamento da Conf igur ação – fazre com que o trat amAe. nPto eshdkoosf f cami nhos no firebird. conf est ej a em conf or mi dade com os do SO.
(sem #)
Ar gument os de UDF do t ipo DATE/ TIME (di al et o 3) incor ret os. Ol eg Loa
(sem #)
Possível vi ol ação de int egridade ref er enci al .
Vl ad Horsun, D. Yemanov
Pr oblema com permi ssões para firebird. conf (SF #745090) . Er ik S. LaBi anca, 745090 N. Samof at ov e outras G e ra ç ã o d e a l ia s e s .c o n f n a in s ta l a ç ã o ; u s o d e rp m b u ild p a ra cr iar os questões da inst al ação RC2pacot es Li nux.
(sem #)
Permi tir fácil aj uste de LockSemCount em pl at af or mas POSIN X.. S em Sa mof at ov necessidade de usar gds_drop ou rei ni ci ar a máquina para que as modi ficações sej am ut ilizadas.
Melhoria
Defini ção de FIRST/ SKIP como palavras não reser vadas.
N. Samofat ov
(sem #)
Refer ênci a de conexão er rada após exceção em PSQL.
A. Peshkof f
(sem #)
Decl ar ações BREAK/ LEAVE e EXIT est ão agor a di sponívei s para D. uYseomeam nov t rigger s.
(sem #)
Possível corrupção deíndices durante a execuçãodegarbage collection. Vl adHorsun, D. Yemanov
(sem #)
Resol vi dos pr oblemas com t rat ament o de t abel as t emporár ias: N. Samof at ov 1) Falha de segur ança em todas as pl at af or mas POSIX exceto FREEBSD/ OPENBSD rel acionada com o uso de mktemp (possívei s at aques DoS ou aument o de pr ivi légios) Só er am gerados 27 nomes de t abel as únicos em wi n32 (o que poderia pr ovocar compor t ament os inesperados nas ver sões SS).
(sem #)
Al t er ações no gest or de event os: desat ivado o uso de port as D d.efin Yem i t aivnaosv nas versões CS devi do a pr oblemas conhecidos.
(sem #)
Permi t ir o uso de funções agregadas de di fer ent es cont ext os A d.en Btrro inkm dean out ras funções agregadas. Exempl o: SELECT MAX( (SELECT RDB$RELATIONS
v.1. 08 Not as da Versão Fi rebi rd 1. 5
COUNT( *)
FROM
08 fevereiro 2004
RDB$RELATIONS) )
FROM
Página 73
Tr ack er #
Descr ição
Cont ribu idor
(sem #)
Possívei s quedas na desconexão quando er a usada a notificD aç. ãYoem daenov event os.
(sem #)
Modi ficações no Gerenci ador de Ser vi ços: funci onal idades de DG . SYTeAm Tan / ov GSEC não est ão di sponívei s vi a Servi ços API na wi n32 CS (at é à v1.6) .
(sem #)
Est at íst icas er radas de regist ro são repor t adas quando a opeD r a.çY ãeom faalnhoav por al gum mot ivo.
(sem #)
st di n/ st dout não pode ser usado para redirecionar a E/ S paraAo. Pceosh nskool ef f, na versão wi n32 do GBAK.
(sem #)
molfvaitdoov Redi mensionament o da t abel a de locks com pr oblemas em CN S.. Sa Reso o "lock manager out of room" (Wi n32 CS1. 5 RC1) ou quedas (possível em t odas as out ras ver sões CS do Int er base/ Fi rebird) .
Melhoria
Aper fei çoamento do INTL: permi tir que a função UPPER funN ci.oSa nempoaf a ra t ov, WIN1251 set de caract er es sem collat ions expl íci t os. D. Yemanov
BUGCHECK(291)
Possível corrupção da base de dados quando er a modi ficaA d.o/Paepsh agkaodf fo em um pr é trigger o pr óprio registro que o di sparou.
(sem #)
Tamanho do Buffer excedi do na chamada a isc_dat abase_inf o( ).Ol eg Loa
(sem #)
Modi ficação no Gerenci ador de Conf igur ação: O ser vi dor A fe. cPheashnko aff ausênci a / er ro do firebird. conf registrando er ro no log de sistema.
(sem #)
Correção nos Servi ços API: at ivadas as est at íst icas dos Servi çoN s. A Sa PImpoaf ra at ov pl at af or mas POSX I ver são CS.
(sem #)
Modi ficações no parser .
D. Yemanov
1) ROWS_AFFECTED foi renomeado para ROW_COUNT 2)
CONNECTION_ID/ TRANSACTION_ID foi renomeado CURRENT_CONNECTION/ CURRENT_TRANSACTION
para
3) Al guns dos novos símbol os for am defini dos como não- reser vados
(sem #)
Correção nos Servi ços API: ser vi ços API parci al ment e di sponDi.biYliza emdan osov para as ver sões CS wi n32.
(sem #)
Envi o incor ret o de event os (uso desnecessár io de pacot es OOB)J. i m St ar key, Paul Reeves
(sem #)
Melhoria no tratamento de bl oqueios : os conf litos são agor a deNte cta st ov . Sa mdoof a e repor tados tão logo sej am recebidas todas as notificações dos pr ocessos em bl oqueio, i.é. , quase instantaneament e na maior parte dos casos.
(sem #)
O Servi dor caía em al gumas oper ações de Servi ços API.
v.1. 08 Not as da Versão Fi rebi rd 1. 5
08 fevereiro 2004
A. Br inkman
Página 74
Tr ack er #
Descr ição
Cont ribu idor
(sem #)
Recursos avançados de segur ança : implement ado o acesso conA f igu . Persh áve kol f f a bases de dados, t abel as ext er nas e bi bl iot ecas UDF.
(sem #)
Resol vi das al gumas perdas de memória/ recur sos.
Mi ke Nordell, A. Peshkof f, N. Samof at ov,D. Yemanov
(sem #)
Tamanho de Buffer excedi do com ar rays mult idi mensionai s.
D. Yemanov
213460, 678718
. eYre emçaonsoIP v. Di versos pr oblemas com eventos em ser vi dores com vários eD nd NOTA: Agor a é possível conf igur ar uma deter mi nada porta para o pr ocessament o de event os.
(sem #)
Resol vi das al gumas perdas de recur sos.
(sem #)
Corrigi dos os Servi ços API: at ivados os ser vi ços API para pN l a.t aSa f om rm ofaast ov POSX I nas ver sões CS.
Mi ke Nordell, A. Peshkof f
Not as: 1. Modi ficações necessár ias no Wi n32 CS ai nda não est ão pr ont as. 2. Servi ço de Backup/ Rest or e foi corrigi do, t est ado e dever á funci onar . 3. Validação de Bancos foi parci al ment e corrigi da e poderá ser usada. 4. É pr ovável que os out ros ser vi ços ai nda não funci onar ão com o CS.
(sem #)
Melhorias SQL: permi tir Nulos em unique constrai nt s e D. Y ínem dicaensov, (especi ficação SQL- 99). N. Samof at ov
(sem #)
Melhoria de Desempenho: o log de al ter ações VIO agor a usa u a ámro vfoare Nm . Sa t ov B+ para ar mazenar os dados de regist ros dos SAVEPOINT. Melhora do desempenho ao se ef et uar múltipl as modi ficações de registros numa única t ransação (na or dem de 2- 3X para 100. 000 regist ros).
(sem #)
Corrupção da Base de Dados após o recuo até um SAVEPOINT dN e.pSa oismdoef at ov gr ande quantidade de oper ações DML (que pr ovocasse a liberação do SAVEPOINT da transação) e com registros que tivessem sido modi ficados ant es do SAVEPOINT ut ilizado e el imi nados dent ro do SAVEPOINT.
(sem #)
Melhorado o EXECUTE STATEMENT. Agor a é possível devolver vAa.loPreesh sa kof f part ir do SQL di nâmi co. Sint axe: EXECUTE STATEMENT INTO ; (um só regist ro) ou FOR EXECUTE STATEMENT INTO DO ;
v.1. 08 Not as da Versão Fi rebi rd 1. 5
08 fevereiro 2004
Página 75
Tr ack er #
Descr ição
Cont ribu idor
(sem #)
O ser vi dor ficava pr eso na desconexão após modi ficações massivDa.s.Yemanov
(sem #)
Melhorias no ot imi zador : Subsel ect s na cl áusul a SET do UPDA AT . EBrain go km r aan podem usar índices.
(sem #)
Er ro "Cont ext al ready in use" no caso de DISTINCT com subqueAr.ieBs.r inkman
(sem #)
Melhorias nas capaci dades de isc_dat abase_inf o: lista das tra N. nSa sam çõoefsat ov at ualment e at ivas é agor a acessível vi a chamada a isc_dat abase_inf o.
(sem #)
Melhoria de Desempenho: aval iação de expr essão bool eana parc Miiakl .e Nordell NOTA: o compor tamento é cont rol ado pela opção "Complet eBooleanEvaluat ion" do firebird. conf . Por padr ão é 0 (aval iação parci al ).
(Beta 2 er ro) Est ouro da Pi lha Int er na durant e a pr epar ação de comando.
D. Yemanov, Mi ke Nordell
(sem #)
Melhoria de Desempenho para a ar quitet ur a IA32 CPU: aum Mei knet oNodrd e ell velocidade para as oper ações com índices.
(sem #)
Mudança nos trigger s univer sai s: permi tidoo acesso aos con Dt.eYxeto ms(O anoLvD e NEW) nos trigger s universai s.
(sem #)
Melhorias no Otimi zador : quando um nó-semel hante e outro s (ge As. nBór in kmq an, leq, between...) estão di sponívei s para a obtenção por índice, então é usado o nó-semel hant e em vez dos out ros.
(sem #)
Longas demoras durant e a conexão/ desconexão no Wi nXP.
A. Br inkman
(sem #)
Li mpeza genérica: remoção de códi go não ut ilizado.
Bl as Rodr iguez Somoza, Er ik Kunze
523589
A Vi ew af et ava o resul t ado de um quer y.
A. Br inkman
Coment ár io: O pr oblema er a que RSEs ' (dent ro de um vi ew) não er am sinalizados como variantes.
(sem #)
Rodr iguez Modi ficado o compor tamento do modo “for ced wr ites”: agoBrl as, se FW=off (desat ivado), a freqüência com que as “di rty pages” Ssã o oza om escr itas no di sco pode ser conf igur ada (permi te maior conf iabilidade quando o FW est á desat ivado nas pl at af or mas Wi n32) .
(sem #)
A base de dados de segur ança foi renomeada para secur it y. fdbD . . Yemanov
(sem #)
Novo ar quivo de conf igur ação : firebird. conf foi finalment e pDu.bY l ic em adaon.ov
(sem #)
Novas funções defini das pelo usuário LPAD e RPAD adici oJnuaadnasGunear rer o bi bl iot eca IB_UDF.
v.1. 08 Not as da Versão Fi rebi rd 1. 5
08 fevereiro 2004
Página 76
Tr ack er #
Descr ição
(sem #)
Al gumas vezes GFIX não permi t ia usar as opções "-user " e "-p D.ass Yewmoarn do" v (er ro "incompatibl e swiches").
(sem #)
Cache da segur ança de conexão : banco de dados de segur aD n.ça Yeémaagnoorva carregado na memória di mi nuindo o tempo das conexões subseqüentes ao ser vi dor de dados.
Melhorias
1. A Memória usada pelo ser vi dor foireduzida. 2.
Cont ribu idor
D. Yemanov
E/ S exter na di ret a quando não existe memória di sponível para or denação.
Maior quant idade de st reams e pr edicados é supor t ado pelo ot imi zador .
508594
LEFT JOIN com VIEWs: simples LEFT JOIN num VIEW com ape An. aB sr in umkm a an cl áusul a ON não usava um índice mesmo quando isso er a possível .
(sem #)
sO RoSd8r6igu Novos set s de caracter es : DOS737, DOS775, DOS858, DOS86B2l a ,D 4, ez DOS866, DOS869, WIN1255, WIN1256, WIN1257, ISO8859_3S , oIS 859_4, mOo8za ISO8859_5, ISO8859_6, ISO8859_7, ISO8859_8, ISO8859_9, ISO8859_13. NOTA: Collat ions para os set s acima não estão ai nda di sponívei s.
(sem #)
Modi ficações em CREATE VIEW: pr oi bi da a sub cl áusul a PLAN. D. Yemanov
(sem #)
Al ter ado o trat amento de agregados - int roduzida a compat ib dkeman Ai.lid Brain com agregadosanter ior es. O campo mais int er nodent ro deuma função agregada det er mi na o cont ext o ao qual o agregado pert ence.
(sem #)
Melhorias no ot imi zador : melhores ot imi zações de quer ies JOIA N. Br inkman "complexas" (LEFT JOIN, vi ews, SPs, et c).
(al pha 5 er ro)
As maior es perdas de memória for am resol vi das.
D. Yemanov
(sem #)
Novas funções API: funções IB7-compliant ret or nam a ver são dDa. Yemanov bi bl iot eca cl iente - isc_get _client_ver sion(), isc_get _client_maj or _ver sion(), isc_get _client_minor_ver sion()
(sem #)
Melhorias no Sort/merge: mergi ng (pl anos SORT MERGE) é agD or. aYefe miato nov em memória pelo módulo de or denação.
(sem #)
Al t er ações no build Wi n32:
D. Yemanov
1. Al ter adososnomes dos objet osUSER32 para permi tir execut ar o ser vi dor simult aneament e ao IB/ FB1. 2. Nome do Mapa para o pr otocol o local (IPC) foi al t er ado. Assim, a bi bl iot eca cl ient e da v1.5 não é mais compat ível com as ver sões anter ior es vi a IPC. 3. Todos osnomes depr ot ocol osdetransporte (porta e ser vi çoINET,
v.1. 08 Not as da Versão Fi rebi rd 1. 5
08 fevereiro 2004
Página 77
pi pe WNET, mapa IPC) são agor a conf igur ávei s vi a firebird. conf .
Tr ack er #
Descr ição
Cont ribu idor
(sem #)
Novo gerenci ador de memória int er no foi modi ficado para peN rm . Sa i t irmoufm at ov melhor desempenho.
(sem #)
RDB$FIELD_LENGTH para vi ews que cont inham concat enações dD e . Yemanov campos long CHAR/ VARCHAR, assumia valor es incor ret os.
Melhoria
Melhoria nos Tr igger s: adici onadas variávei s de ação em temD po. Y demanov execução (pr edicados INSERTING/ UPDATING/ DELETING). Exempl o: if (INSERTING) then new. OPER_TYPE = 'I'; el se new. OPER_TYPE = 'U;'
(sem #)
Os cursor s (cl áusul a WHERE CURRENT OF) não podi am ser usadoDs. eYm emanov t rigger s.
221921
ORDER BY não t inha qual quer ef ei t o.
A. Br inkman
213859
Subquery est abel ecida por um 'IN.'
A. Br inkman
Melhoria
Permi t ido uso de expr essões ar bi t rár ias na cl áusul a ORDER BY.N. Samofat ov
(sem #)
O ser vi dor caía quando er am usadas UNIONS numa VIEW e essa V AI.EB Wr in erkaman usada numa cl áusul a WHERE dent ro de um subquer y.
(sem #)
Li mpeza genérica de códi go: estrut ur as dent ro de Y- valve.
Melhoria
Coment ár ios de Li nha- Única (--) são agor a permi t idos em qual qDu.eYr emanov posição da decl ar ação SQL.
(sem #)
"Request sycnhr onizat ion er ror " com a decl ar ação BREAK.
D. Yemanov
625899
Bugcheck 291.
A. Peshkof f
(sem #)
Al ter ação PSQL: EXECUTE VARCHAR foi renomeado para EXECUA T.EPeshkof f STATEMENT.
521952
“ No current recor d for fet ch oper at ion” -nenhum registro encoAn. t ra Br in dokman para lei tur a.
(sem #)
QLI não compreendia o t ipo de dados BIGINT.
(sem #)
Tamanho de variávei s de t ext o dent ro de pr ocedur es/ t rigger sAn. ãB or in er a kman copi ado para a est rut ur a do descrit or .
v.1. 08 Not as da Versão Fi rebi rd 1. 5
08 fevereiro 2004
A. Peshkof f, N. Samof at ov
D. Yemanov
Página 78
Tr ack er #
Descr ição
Cont ribu idor
(sem #)
Al t er ações FIRST/ SKIP e ORDER BY --
D. Yemanov
1. Implementada a cl áusul a ORDER BYemsubquer ies. 2. Pr oi bi doFIRST/ SKIP para vi ews. 3.
Permi t ido o valor zer o como ar gument o válido para FIRST.
(sem #)
Buffer excedi do (MAXPATHLEN) e nome local da função di ret órEio r ik Kunze reescrito.
(sem #)
Foi modi ficado o mapeament o de parâmet ros do SQLDA para se Nr. Samof at ov consistente com a or dem e número de parâmet ros da string SQL de or igem. NOTA: Você pode at ivar o compor t ament o ant er ior de mapeament o (por razões de compat ibi lidade) usando o parâmet ro do gerenci ador de conf igur ação "Ol dPar amet er Or dering".
Melhoria
Melhorias no Ot imi zador : deixar que os subquer ies também uA se. mBr inkman índices quando o seu parent e for uma st or ed pr ocedur e.
(sem #)
Removi da a limi t ação de t amanho do pedi do.
(sem #)
Tr at amento de Nulls first/ last e collat ion na cl áusul a "or der bNy."Sa dam sof at ov unions.
(sem #)
Li mpeza genérica de códi go; renomeações, novas “saf e macr oEsr”,ik Kunze, supor t e para mi ngw. Ignacio J. Or tega, D. Sb i i ryakov
(sem #)
Implementação de bl oqueio expl íci to de registro finalizada. D Ne. vSa erá mof at ov est ar est ável e consist ent e.
Melhoria
Melhoria noOt imi zador : melhor trat amento dos nós AND denA t ro . Bd r in oskm nóasn OR.
(sem #)
Exceções dent ro de um ci cl o for / while em t rigger s não er am A t ra . Pteash doksof f corret ament e.
623992
Dupl as barras na st ring de conexão.
Paul Reeves, Mark O’ Donohue
(sem #)
Deadlock durant e al gumas oper ações de base de dados.
A. Peshkof f
Melhoria
Melhoria noOt imi zador : se al guns índices com gr andedi fer enDç.ad Yeemanov sel et ivi dade puderem ser usados para obt enção de dados, apenas os melhores ser ão usados enquant o os out ros ser ão ignor ados.
(sem #)
Pr oblema com ident ificadores com aspas em expr essões de “ plN an. ”S.amofat ov
v.1. 08 Not as da Versão Fi rebi rd 1. 5
08 fevereiro 2004
D. Yemanov
Página 79
Tr ack er #
Descr ição
Cont ribu idor
Melhoria
A ar quit ect ur a CS é agor a supor t ada no Wi n32, mas ai nda não p Do. dYeem searnov considerada est ável . Assim, t oda a inf or mação ser á bem vi nda.
(sem #)
As St or ed pr ocedur es não são mais recompi ladas ant es de ser em N. Samof at ov apagadas.
(sem #)
Novo collat ion para WIN1251 char set : WIN1251_UA para a linD gu. aYge em manov Ucraniana e Russa.
(sem #)
Al ter ação na bi bl iot eca cl iente: as rot inas API já não são maisD. Yemanov exportadas por or di nals.
Melhoria
Novo ger enci ador de conf igur ação: at ivada a mesma conf igur aD çã. oYemanov baseada em ar quivo texto para todas as pl at af or mas supor tadas.
Melhoria
Melhoria no Ot imi zador : foi acrescent ado melhor supor t e para A. B ursin ar kman índices com "OR". E obter o melhor índice composto paras nós "AND".
Melhoria
Adici onado o supor t e para t rat ament o de SAVEPOINT expl íci t o em DSQL.
(sem #)
Li mpeza de Pr ot ocol o: O pr ot ocol o de rede IPX/ SPX não é maS isean Leyne supor tado.
(sem #)
Li mpeza de pl at af or mas obsol et as: al gumaspl at af or mas já nãoSeea r anmLeyne supor t adas pelo pr esent e códi go.
N. Samof at ov
DELTA, IMP, DG_X86, M88K, UNIXWARE, Ul t rix, NeXT, ALPHA_NT, DGUX, MPE/ XL, DecOSF, SGI, HP700, Net w are, MSDOS, SUN3_3
Melhoria
Melhoria no Ot imi zador : adici onado o supor t e para a det ecçãA o. dBor in uskoman de índice com sub-sel ect s em sel ect agregado.
Melhoria
Melhoria no ger enci ador de pr ocessos para Wi n32 SS: agor a o se A.r vPiedsh orkof f dever á ser mais rápido na resposta sob “ carga int ensa” .
Melhoria
Adici onado supor te para bl oqueio expl íci to de registro. O N. Samof at ov compor t ament o do Wait nos modos de t ransação isc_t pb_wai t ai nda não est á est ável . Sn i t axe: SELECT <. ..> [FORUPDATE [OF col [, col ...]] [WITH LOCK]]
558364
OsTr igger s fracassavamnatentat ivadecompilar se o PLANfosse usado. Ignacio J. Or tega
(sem #)
Uma Tr ansação Di st ribuída (2PC) não podi a ser “ rol led back” V dleavdi dHooa rsun, er ros de rede. Er ik Kunze
(sem #)
Li mpeza genérica: ISC_STATUS_LENGTH e macr os MAXPATHLENE . r ik Kunze
v.1. 08 Not as da Versão Fi rebi rd 1. 5
08 fevereiro 2004
Página 80
Tr ack er #
Descr ição
Cont ribu idor
496784
Quando o ot imi zador encont ra índices para o LEFT JOIN, com or tmao-fse Np . Sa at ov como o INNER JOIN. Resol vi do o pr oblema que fazia com que “ out er joi ns” complexos pr oduzissem resul tados er rados.
(sem #)
O subt ipo BLOB é ignor ado em domíni os de sist emas gerados paDra . Yemanov campos de expr essão em vi ews.
(sem #)
Er ro de instal ação resol vi do: instreg.exe não cr iava o valor dD e re . Ygeistro manov "Guar di anOpt ions".
(sem #)
Perda de Recursos no t rat ament o recur sivo de pr ocediment osN D.DSa L, moof at ov que fazia com que al guns DDL fal hassem.
(sem #)
Check const rai nt que use apenas um campo de t abel a agor a é eNl im . Sa i nm ad oaf at ov aut omat icament e quando est e campo é el imi nado.
451927
Novas variávei s de sistema ROWS_AFFECTED em PSQL: devolveDo. Yemanov número de linhas af et adas pela úl t imo comando INSERT/ UPDATE/ DELETE. Para quai squer out ras decl ar ações al ém de INSERT/ UPDATE/ DELETE, o resul t ado ser á sempr e zer o.
446240
Mensagens de exceção di nâmi cas: é permi t ido defini r a men man qouve Ds. aYgeem ser á exibi da na ocor rênci a de uma exceção di fer ente daquel a com que a exceção foi cr iada. Si nt axe: EXCEPTION nome [valor ];
547383
Novas variávei s de sist ema SQLCODE e GDSCODE for necem aceD sso . Yaeomanov er ro ocor rido dent ro de um bl oco- WHEN em PSQL. Fora do bl ocoWHEN, devolve 0 (sucesso) .
(no #)
Semânt ica de rei ni ci al ização de Exceção : permi t e que uma ex“ceDçi g ãoi t m j áan” t rat ada em PSQL sej a rel ançada num bl oco WHEN. Sn i t axe: EXCEPTION; Nenhum ef ei t o for a do bl oco- WHEN.
(no #)
O ser vi dor caía durante o gar bage collection sob carga int ensa N. Samofat ov
Melhoria
Compilação de meta dados defer ida: resol vi do gr ande númeroNd. eSamof at ov causas do conhecido er ro; "obj et o em uso".
Melhoria
Novo t rat ament o da or denação de Nulos: permi t ir or denaçãoNd. eSa Nmuo lof a s t ov defini da pelo usuário.
(no #)
Gst at most rava valor er rado para el ement o maxdup.
v.1. 08 Not as da Versão Fi rebi rd 1. 5
08 fevereiro 2004
D. Kuzmenko
Página 81
Tr ack er #
Descr ição
Cont ribu idor
(no #)
É usada uma nova chave de regist ro no wi n32: SOFTWARE\Fi rebirdSQL\Fi rebird.
--
451925
Nomes de índices de constrai nt s defini dos pelo usuário: é peDrm . Yietid maonov usar nomes defini dos pelo usuário ou o nome da rest rição, para índices que imponham restrições.
Melhoria
Nova declar ação RECREATE VIEW: substitui o par de declar açõD es. YD eR mOaPnov VIEW / CREATE VIEW. Sn i t axe: RECREATE VIEW nome ;
(no #)
Tr igger cuj o nome começa por 'RDB$' não pode ser al t er ado ouD. Yemanov el imi nado.
(no #)
Ar quivos da di stribuição for am renomeados de acor do comVoário nom se Fi rebird. Agor a são fbser ver , fbclient, firebird. msg, et c. A nova bi bl iot eca cl iente é a fbclient, e deverá ser usada pelos novos pr oj et os baseados no FB. GDS32 apenas aponta para a fbclient e é for neci da soment e para mant er a compat ibi lidade.
Adici onados novos índices de sist ema (RDB$INDEX_41, RDB$INDE DX. _Y4e2m , anov, (Pequeno N. Samof at ov incremento noRDB$INDEX_43) . Agor a a ver são do ODS é a 10.1. ODS)
451935
Novo comando CREATE OR ALTER para trigger s e st or ed pr ocDe.dYuerm esa,nov permi tindo cr iar ou al ter ar um obj eto da base de dados dependendo da sua exist ênci a pr évia. Si nt axe: CREATE OR ALTER nome ;
(no #)
Apar eciam dependênci as invál idas na base de dados (t al como D DB. $Y3e4m ) anov após al t er ações de met a dados.
(no #)
Decl ar ação de variávei s locai s aper fei çoada : simplificada aClsin audtiaoxeVaelderrama possibi lidade de decl ar ação e defini ção das variávei s em um mesmo comando. Sn i t axe: DECLARE [VARIABLE] nome [{'=' | DEFAULT} valor ]; Exempl o: DECLARE my_var INTEGER = 123;
(no #)
Desat ivada a declar ação BREAK para t rigger s (como EXIT) deviD d.o Yaemanov limi t ações int er nas conhecidas.
v.1. 08 Not as da Versão Fi rebi rd 1. 5
08 fevereiro 2004
Página 82
Tr ack er #
Descr ição
555839, 546274
Agrupament o aper fei çoado : permi t e usar GROUP BY para funçA õe . sBr inkman int er nas e subquer ies, bem como para valor es posici onai s (ist o é, a posição rel at iva da coluna, ou sej a, o gr au da coluna no conj unt o de dados ret or nados).
451917
Nova função int er na COALESCE permi t e que uma coluna possaAse . B r r inkman calculada por uma série de expr essões, em que a pr imeira expr essão que resul t e em um valor não nulo ser á o valor da coluna.
451917
Nova função int er na NULLIF para sub-expr essões. Retor na NAU. LBLr in seko man resul tado for igual a um valor específico, ou o pr óprio valor da sub— expr essão.
451917
Nova função int er na CASE permi t e que o resul t ado de uma colu A.na Brp inokssa man ser det er mi nado at ravés do resul t ado de uma expr essão condici onal .
545725
Sweep aut omát ico em segundo pl ano bl oqueava.
(no #)
O ser vi dor caía quando est rut ur as XSQLDA não er am pr epar adasDp. aYra emanov t odos os parâmet ros de um comando.
(no #)
PSQL: at ivado supor t e para bl ocos BEGIN. ..END vazios.
567931
Resol vi da parci al ment e uma fal ha de segur ança de met a dados. D. Yemanov
(no #)
Bi gInt ar rays não funci onavam.
437859
Implement ada execut e pr ocedur e e concat enação de st ring, viD sa. nYdeomanov permi t ir que qual quer expr essão possa ser ut ilizada como parâmet ro de SP.
562417
Concat enação de caract er es vazios para Agregados.
D. Yemanov
Melhoria
Suport e de Readline (hi st ór ico de comandos) para ISQL.
M. O’ Donohue
446206
Novo t ipo de dados, BIGINT, que permi t e o uso SQL nat ivo de D n.úm Yeem roasnov int ei ros de 64-bi t (Apenas no Di al et o 3) .
451922
Permi tir que um Tr igger univer sal sej a di sparado para di fer enDte . Y setip maonsov de ações.
446238, 446243
Novo CONNECTION_ID e TRANSACTION_ID de sist ema acessível eDm. Y PeSQ mLa.nov Ret or na ident ificador int er no apropriado, ar mazenado na pági na de cabeçalho da base de dados.
v.1. 08 Not as da Versão Fi rebi rd 1. 5
Cont ribu idor
08 fevereiro 2004
A. Peshkof f
D. Yemanov
Ar tem Petkevych
Página 83
Tr ack er #
Descr ição
Cont ribu idor
446180
Al ias de Base de Dados no ser vi dor: conexão a qual quer base deD.dY ad em osanov usando um "al ias" em vez da local ização física da mesma. A lista de apel idos de banco de dados conhecidos é ar mazenada no ar quivo al iases.conf local izado na rai z da inst al ação do ser vi dor. Exempl o: Ent rada do al ias no ar quivo de conf igur ação: mi nha_base_dados = c:\dbs\my\dat abase. gdb Text o para conexão ao BD na aplicação: local host :mi nha_base_dados
(no #)
Novo ger enci ador de pl ugin e int er face INTL.
Melhoria
Or denação em memória: se o pl ano SORT for usado numa deD c.l aYream çã oov an SQL, a or denação é pr ocessada em memória. Se não houver memória di sponível para est a oper ação, recor re ao mét odo ant er ior com ut ilização de ar quivo t emporár io.
538201
Queda da aplicação na t ent at iva de ext ração de nulo como DAT CEl a. udi o Valderrama
446256
Nova ext ensão da decl ar ação PSQL EXECUTE VARCHAR permi t eAa. Peshkof f execução de decl ar ações de SQL di nâmi co em SPs/ t rigger s. (Post er ior ment e renomeado para EXECUTE STATEMENT) .
(no #)
Pr of unda limpeza e revisão do códi go.
Sean Leyne, Er ik Kunze
(no #)
Novo ger enci ador de memória.
John Bellar do
(no #)
Nova lógica de t rat ament o de exceções.
Mi ke Nordell, John Bellar do
(no #)
Nova conf igur ação de compilação baseada no aut oconf.
John Bellar do, M. O’ Donohue, Er ik Kunze
(no #)
O t ranspor t e do códi go de C para C++.
Mi ke Nordell, John Bellar do, M. O’ Donohue
John Bellar do
Eq ui pe de Tr adução: Hélci o Sugi yama
v.1. 08 Not as da Versão Fi rebi rd 1. 5
08 fevereiro 2004
Página 84