Home

Firebird 2.1 Release Notes

image

Contents

1. COMMIT 2 save users data INSERT INTO UTMP USER_NAME SYS_USER_NAME GROUP_NAME UID GID PRIVILEGE COMMENT FIRST_NAME MIDDLE_NAME LAST_NAME PASSWD SELECT USER_NAME SYS_USER_NAME GROUP_NAME UID GID PRIVILEGE COMMENT FIRST_NAME MIDDLE_NAME LAST_NAME PASSWD FROM USERS COMMIT 3 drop old tables and domains DROP TABLE USERS DROP TABLE HOST_INFO COMMIT DROP DOMAIN COMMENT DROP DOMAIN NAME_PART DROP DOMAIN GID DROP DOMAIN HOST_KEY DROP DOMAIN HOST_NAME DROP DOMAIN PASSWD DROP DOMAIN UID DROP DOMAIN USER_NAME DROP DOMAIN PRIVILEGE COMMIT 4 create new objects in database CREATE DOMAIN RDB COMMENT AS BLOB SUB_TYPE TEXT SEGMENT SIZE 80 CHARACTER SE UNICODE_FSS CREATE DOMAIN RDBS SNAME_ PART AS VARCHAR 32 CHARACTER SE UNICODE_FSS DEFAULT _UNICODE_FSS CREATE DOMAIN RDBSGID AS I EGER CREATE DOMAIN RDBSPASSWD AS VARCHAR 64 CHARACTER SET BINARY CREATE DOMAIN RDBSUID AS I EGER CREATE DOMAIN RDBSUSER_NAME AS VARCHAR 128 CHARACTER SET UNICODE_FSS CREATE DOMAIN RDBSUSER_PRIVILEGE AS INTEGER COMMIT CREATE TABLE RDBSUSERS RDBSUSER_NAME RDBSUSER_NAME NOT NULL PRIMARY KEY local system user name for setuid for file permissions RDBSS
2. FOR SELECT COALESCE RDBSSYSTEM_FLAG 0 RDBSRELATION_NAME FROM RDBSRELATIONS ORDER BY 1 INTO RTYPE RNAME DO BEGIN IF RTYPE 0 THEN SUSPEND ELSE LEAVE esce dal ciclo corrente END CNT 100 Ll WHILE CNT gt 0 DO BEGIN IF CNT lt 50 THEN LEAVE Ll esce dal ciclo WHILE CNT CNT 1 END STMT1 SELECT RDBSRELATION_NAME FROM RDB RELATIONS Ll FOR EXECUTE STATEMENT STMT1 INTO RNAME DO BEGIN STMT2 SELECT RDBSFIELD NAME FROM RDBSRELATION_FIELDS WHERE RDBSRELATION_NAME L2 FOR EXECUTE STATEMENT STMT2 RNAME INTO FNAME DO BEGIN IF RNAME RDBSDATABASE THEN LEAVE Ll esce dal ciclo esterno ELSE IF RNAME RDBSRELATIONS THEN LEAVE L2 esce dal ciclo interno F iSE SUSPEND END END Nota Notare che LEAVE senza una esplicita etichetta interrompe il ciclo attuale il pi interno 87 SQL Procedurale PSQL Ora le variabili di contesto OLD sono in sola lettura D Yemanov L insieme delle variabili di contesto OLD disponibili nei trigger sono ora in sola lettura Un tentativo di assegnare un valore a OLD QUALUNQUECAMPO viene rifiutato Nota Le variabili di contesto NEW sono anch esse adesso in sola lettura nei trigger AFTER PSQ
3. j 105 Supporto alle lingue internazionali INTL CASE INSENSITIVE LOCALE en_US 2 CREATE COLLATION NEW_COLLATION FOR WIN1252 PAD SPACE NEW_COLLATION deve essere dichiarata nel file conf bel direttorio Sroot intl Gli ordinamenti UNICODE Gli ordinamenti UNICODE sia sensibili che insensibili alle maiuscole possono essere applicati a tutti i set di caratteri presenti in fbintl Essi sono gi registrati in foint1 conf ma bisogna registrarli nel database con le associazioni ed attributi prescelti Convenzioni nel nome Per convenzione il nome da usare nella forma lt nome set caratteri gt lt ordinamento gt Ad esempio create collation win1252_unicode for winl252 create collation win1252_unicode_ci for winl252 from winl252_ unicode case insensitive Nota Il nome del set di caratteri deve essere identico a come specificato in fbintl conf ad esempio ISO8859_1 e non ISO88591 Attributi specifici per gli ordinamenti Nota Alcuni attributi possono non funzionare con certi ordinamenti anche se non riportano errori DISABLE COMPRESSIONS Disabilita le contrazioni cambiando di fatto l ordine di un gruppo di caratteri Valido per i set di caratteri ad un byte Formato DISABLE COMPRESSIONS 0 1 Esempio DISABLE COMPRESSIONS 1 DISABLE EXPANSIONS 106 Supporto alle lingue internazionali INT
4. ALTER PROCEDURE Pl X INTEGER CURRENT_TRANSACTION RETURNS Y INTEGER SUSPEND 85 SQL Procedurale PSQL END COMMIT SET TERM 5875 COMMIT CONNECT SELECT FROM P2 Nota 1 Il sorgente ed il BLR per gli argomenti default sono memorizzati in RDB FIELDS 2 Come stato evidenziato in una Tracker entry gli esempi riportati sopra non devono essere presi come una raccomandazione per usare SUSPEND per avere i valori di ritorno da una STORED PROCEDURE di sola esecuzione executable SP L autore ha usato SUSPEND qui al solo scopo esemplificativo per illustrare gli aspetti essenziali della nuova caratteristica Nuova sintassi LEAVE lt label gt D Yemanov La nuova sintassi LEAVE lt label gt permette di marcare i cicli PSQL con etichette e di uscirne in modo simile al linguaggio Java Lo scopo quello di terminare l esecuzione del blocco corrente e riprendere dall etichetta specificata Dopodich l esecuzione prosegue dalla frase immediatamente successiva al ciclo terminato Sintassi lt nome_etichetta gt lt ciclo gt LEAVE lt nome_etichetta gt dove lt ciclo gt uno fra WHILE FOR SELECT FOR EXECUTE STATEMENT Esempi 86 SQL Procedurale PSQL
5. 60 Novit nel Data Manipulation Language DML Nota In Firebird possibile specificare un alias nelle frasi di aggiornamento Sebbene molti altri database non lo supportino questa possibilit dovrebbe aiutare quegli sviluppatori che hanno richiesto di rendere il linguaggio SQL di Firebird pi compatibile con quei prodotti che la supportano c Questo esempio non funziona correttamente in Firebird 1 5 e precedenti SELECT RDBSRELATIONS RDBSR R2 RDBSRELATION_NAM FRO RDBSRELATIONS JOIN RDBSRELATIONS R2 ON R2 RDBSRELATION_NAME RDBSRELATIONS RDBSRELATION_NAME LATION_NAME F Du F B Se RDB RELATIONS contiene 90 record riporta 90 90 8100 record ma in Firebird 2 e successivi riporta correttamente solo 90 records 2 a Questo dava un errore di sintassi in Firebird 1 5 ma accettato in Firebird 2 SELECT SELECT RDB RELATION_NAME FROM RDB DATABASE RDB RELATIONS b IL controllo di ambiguit nelle subqueries la query seguente funzionava in Firebird 1 5 senza segnalare alcuna ambiguit cosa che invece viene effettuata da Firebird 2 SELECT FIRST 1 RDBSRELATION_NAMI FROM RDBS RELATIONS R1 JOIN RDBSRELATIONS R2 ON R2 RDBSRELATION_NAME R1 RDBSRELATION_NAME Fl T FROM RDBSDATABASE E La frase EXECUTE BLOCK V Khorsun
6. ee ee eeeeeeeeeeeeeeeeeeeeeeseeeeeeeeeeeeeeeeseeeeeeeeeeeeeeeeenes 33 Ricerca tapida uccellini nina ae ini at 33 Trigger a livello database ideali a ieri 33 Tabelle temporanee globali Global Temporary Tables cece eeeecececececeeeeeeeeeeeeeeeenes 35 Miglioramenti alle Viste iis al alia iaia dala ae er ana 36 CREATE TRIGGER in accordo a SQL2003 37 Alternativa conforme a SQL2003 per i campi calcolati ee eeeeeeeeeeeeeeeeeeeeeeeeeeee es 38 CREATE SEQUENCE tria aan ARRE init 38 REVOKE ADMIN OPTION plico ila 39 Clausole di SET DROP DEFAULT per il comando ALTER TABLE eeeeeeeeeeee 39 Sintassi per modificare le eccezioni se 40 ALTER EXTERNAL FUNCTION siTe a lella eli 40 COMMENT ON Gina rear ae alan 40 Estensioni alle specifiche di CREATE VIEW 000000 ecc ce cecc ee ze i 41 Implementata la frase RECREATE TRIGGER ii 41 Firebird 2 1 Release Notes Migliorie nell isola aaa Rie ein ee ale 41 6 Novit nel Data Manipulation Language DML eeeeeeeeeeeeeeeneeeeeeeeeeeeeeeseseeeeeeeeeeeeeeeeeeeneneeeee 44 Ricerca rapida j nia RR E e ii 44 Common Table Expressione ini lira ii clelia Leila ioni aa aae a E AEEA 45 Easfunzione LIST rio Aa aan Ann Aa ria 49 La claisola RETURNING isla ieri 49 La frase UPDATE OR TNSERT tniaale luni ie alle nia alii 51 J Be Bi Ke I
7. i 117 Altre informazioni Sul contesto vuci iaia vale ea 119 12 Sicurezza n annie ae WR all cene lea Pi alii 120 Introduzione alle modifiche si ila iii lilla ica ipa ipa lille 120 Nuovo database della sicurezza unita aa asia gra 120 Usare il sistema di autenticazione degli utenti di Windows 120 Migliorata la crittografia delle password ee sesesesesesesssesessessesesssesesesessssseset 120 Gli utenti possono modificarsi la password eeeeeeeeeeeeeeeeeeeeeeeeeneeeeeeeeeeeeeeeeeeeeenenes 120 Solo il server pu connettersi al database di sicurezza i 121 Protezione attiva contro gli attacchi brutali eececeeecececeeececeeeceeeeeeeeeeeeeeeeeees 121 Vulnerabilit varie chiuse iii ail lei 121 Dettagli sulle modifiche di sicurezza in Firebird 2 121 ALENT CAZIONEG vic EEE EEEE sa adeceoes aateeccus scenes agua uoaceseuabagetanccaeete 122 gs ec in Firebird 2 ui AA iii 123 Protezione dagli attacchi brutali eeeeeeeeeeeeeeeeeeeeeseseeeeeeseeeeeeeseeseseeeeeeeeeeeeeeeeeeeees 123 Usare Windows Security per autenticare gli utenti eee einen 124 Privile st SOL ii aa ia ai ite 124 ATMMIDISICALOLI opinioni 124 Configurazione del parametro Authentication ccceccceccccceeneeeeeeeecececeaeaaeeeeeeeeeeeeaeaaeaees 124 Forzare l autenticazione trusted
8. In DSQL la scansione dei nomi di tabella pi rigida A Brinkman La gestione degli alias e la ricerca dei nomi di campo ambigui stata migliorata In sostanza 59 Novit nel Data Manipulation Language DML 1 Quando viene specificato l alias per una tabella o si usa l alias o non si usa niente Non pi permesso specificare il nome della tabella 2 Il controllo di ambiguit per prima cosa ora verifica nell ambito del livello corrente le ambiguit presenti nei nomi di campo validandole in certi casi come colonne utilizzabili senza qualificatori in un ambito di livello pi alto Esempi 1 Quando specificato un alias per una tabella i suoi campi vanno specificati con l alias oppure non va usato nulla a Questa query era permessa fino a FB1 5 SELECT RDBSRELATIONS RDBSRELATION_NAME FRO RDBSRELATIONS R ma ora riporter correttamente un errore specificando che il campo RDB RELATIONS RDB RELATION_NAME non pu essere trovato Invece va usato cos preferibilmente SELECT R RDBSRELATION_NAME FRO RDBSRELATIONS R oppure cosi SELECT RDBSRELATION_NAME FRO RDBSRELATIONS R b La frase seguente correttamente ora recupera il campo FieldID dalla subquery e dalla tabella da UPDATE TableA FieldA SELECT SUM A FieldB FROM TableA A WHERE A FieldID TableA FieldID
9. Uno sweep naturalmente troverebbe queste versioni dei record non utilizzate e le cancellerebbe ma questo non accade necessariamente a breve termine Un ulteriore beneficio la riduzione di I O a causa dell alta probabilit che le pagine richieste risiedano gi nella memoria cache Tra il momento in cui il motore notifica al garbage collector l esistenza di pagine che contengono versioni non pi usate ed il momento che il garbage collector riesca a leggere quella pagina una nuova transazione potrebbe aggiornare uno dei record contenuti Il garbage collector non pu pulire il record se questo numero di transazione successivo maggiore dell Oldest Snapshot oppure ancora attivo Il motore poi notifica ancora al garbage collector lo stesso numero di pagina sovrascrivendo la precedente notifica e pertanto la pulizia dovr essere fatta in un tempo successivo In Firebird 2 0 Superserver sono possibili contemporaneamente sia il GC cooperativo che quello in background Per gestirli stato introdotto un nuovo parametro di configurazione GCPolicy che pu essere impostato a e cooperative il garbage collector viene gestito solamente in modo cooperativo come nel Classic ed il motore non tiene traccia delle vecchie versioni dei record Questo riporta il funzionamento del GC a quello di IB 5 6 E l unica opzione per la versione Classic e background il garbage collector viene gestito solo da threads in background come nel caso di
10. eee 26 Modifiche all APE orrore favara iena aa teh ata daleutanerionangdeli i 27 XSQLVAR sui a i aa il aria 27 Ottimizzazione aria rei 27 Ottimizzazione per scansioni multiple degli indici eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeneees 27 Ottimizzate varie operazioni bitmap eee nere rene rene ne rene ne rene ne nine nenenee 27 Configurazione e resolazione iui pla leali 28 Aumentati i limiti ed i default del Lock Manager 28 Sconsigliate le dimensioni di pagina di 1K e 2K cececececececeeeceeeeeceseeeeeeeeeeeeeees 28 Problemi in allocazione s disco iaia ei 28 Neutralizzare la cache del filesystem su Superserver sssseesseseeeeeeeeeeeeeseeeeeneneneseeaeaeaees 30 Altri miglioramenti globali eieiei dinin ie iei e edin eire itoi ae 30 Razionalizzazione della Garbage Collection eecececececececececeeececeeeceeeeeeeeeeeeeeeeeeeeeeees 30 Immediato rilascio der file esterni riti eee alia 31 Sincronizzazione degli oggetti nella cache metadata DSQL per il Classic server 31 Miglioramenti sui BLOB ecenin iaia 31 Flag di tipo per le Stored Procedures ssssersrsssssrssssssietr esis eors sssssss 31 Informazioni utili per il Core Dump su Linux eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeseeeeeeeeeeeeeneees 31 5 Novit sul Data Definition Language DDL
11. EXTRACT MILLISECOND FROM timestamp 01 01 2000 01 00 00 1234 57 Novit nel Data Manipulation Language DML riporta 123 DATEADD MILLISECOND 100 timestamp 01 01 2000 01 00 00 0000 DATEDIFF MILLISECOND timestamp 01 01 2000 02 00 00 0000 timestamp 01 01 2000 01 00 00 Per esempi pi particolareggiati sull uso di DATEADD e DATEDIFF fare riferimento all elenco delle funzioni integrate in Appendice A Funzioni migliorate gi dalla versione 2 0 x Alcune migliorie alle funzioni integrate erano gi disponibili nelle versioni 2 0 x di Firebird IIF O Loa V 2 0 x Per testare una condizione ed avere esattamente due soli valori in alternativa si pu usare la funzione IIF al posto della pi prolissa espressione CASE IF riporta il valore della prima di due espressioni se la condizione di test vera altrimenti riporta il valore della seconda espressione Il test per la precisione una condizione di ricerca ed ammette la stessa sintassi della parte WHERE di una SELECT IIF lt condizione_di_ricerca gt lt valore_se_vero gt lt valore_altrimenti gt viene implementato come un abbreviazione di CASE WHEN lt condizione_di_ricerca gt THEN lt valore_se_vero gt SSE lt valore_altrimenti gt END Esempio SELECT IIF VAL gt 0 VAL VAL FROM OPERATION Miglioramenti nel comportamento di CAST D Yemanov V 2 0 x L
12. lt posizione iniziale gt select rdbSrelation_name from rdbSrelations where position RDB IN rdb relation_name 1 a ef SELECT position ser Essere o non essere 10 from rdbSdatabase riporta 16 Il secondo esempio riporta 16 perch la prima occasione in cui la sottostrin ga ser compare precedente al decimo carattere e viene quindi ignorata POWER POWER lt number gt lt number gt POWER X Y riporta X elevato alla potenza Y select power x 10 from y RAND RAND Non ha argomenti e riporta un numero casuale tra 0 and 1 161 Le nuove funzioni integrate Funzione Formato Descrizione select from x order by rand REPLACE REPLACE lt stringtosearch gt Sostituisce lt findstring gt con lt replstring gt tutte le vol lt findstring gt lt replstring gt te in cui compare in lt stringtosearch gt select replace x from y REVERSE REVERSE lt value gt Rovescia i caratteri della stringa Utile per creare espressioni indice per stringhe da destra a sinistra create index people_email on people computed by reverse email select from people where reverse email starting with reverse br RIGHT lt string gt lt number gt Riporta il numero specificato di caratteri della parte destra di una stringa data select right rdb relation_name char_length rdb re
13. v 2 1 Adesso possibile effettuare inserimenti senza specificare valori se ci sono trigger BEFORE INSERT e o defaults disponibili per ogni colonna necessaria e nessuno di questi dipende da un valore di campo NEW fornito dal comando standard In soldoni niente deve dipendere dalla parte VALUES lt lista di valori gt Esempio INSERT INTO lt table gt DEFAULT VALUES RETURNING lt values gt Compatibilit fra testo VARCHAR e BLOB A dos Santos Fernandes v 2 1 A vari livelli di gestione il motore adesso tratta i BLOB di testo che contengono stringhe pi corte di 32766 byte come se fossero di tipo VARCHAR La lunghezza massima per questa conversione implicita pertanto 32765 bytes non caratteri Le operazioni che permettono ai BLOB di testo di comportarsi come stringhe VARCHAR sono le assegnazioni conversioni e concatenazioni fino al limite sopra specificato per il risultato della concatenazione cos come le funzioni CAST LOWER UPPER TRIM e SUBSTRING Attenzione La funzione SUBSTRING se applicata ad un BLOB di testo adesso ha per risultato un BLOB di testo e non pi un VARCHAR come nelle versioni precedenti Questa modifica potrebbe influenzare il risultato nel codice esistente sia client che PSQL Comparazione sul contenuto completo dei BLOB di testo v 2 0 x Si possono effettuare comparazioni sull intero contenuto di un BLOB di testo RDB DB_KEY riporta NULL nel
14. 146 Funzioni esterne UDF Questo algoritmo se si effettuano due chiamate al interno dello stesso secondo ha il problema che entrambe riportano lo stesso valore Per risolvere il problema la funzione rand stata cambiata in Firebird 2 0 in modo tale che il punto di partenza non sia impostato esplicitamente Questo fa in modo che vengano ottenuti sempre valori diversi Per ottenere il comportamento compatibile a disposizione in caso fosse necessario stata aggiunta la funzione srand Fa esattamente quello che faceva la versione precedente della rand IB_UDF_lower La funzione IB_UDF_lower nella libreria IB_UDF era in conflitto con la nuova funzione interna lower cercandola di definire in un database con lo script ib_udf sql di una versione precedente di Firebird ib_udf sql declaration that now causes conflict DECLARE EXTERNAL FUNCTION lower CSTRING 255 RETURNS CSTRING 255 FREE_IT ENTRY_POINT IB_UDF_lower MODULE_NAME ib_udf Il problema stato risolto nell ultima versione del nuovo script ib_ud 2 sql dove la vecchia UDF dichiarata usando un identificatore quotato fra doppi apici New declaration in ib_udf2 sql DECLARE EXTERNAL FUNCTION LOWER CSTRING 255 NULL RETURNS CSTRING 255 FREE_IT ENTRY_POINT IB_UDF_lower MODULE_NAME ib_udf Sugger
15. Le subquery e l INSERT possono accettare insiemi UNION D Yemanov Le specifiche di una SELECT nelle subquery e nelle frasi INSERT INTO lt specifica di insert gt SELECT possono ora specificare anche insiemi UNION Nuove estensioni alle sintassi di UPDATE e DELETE O Loa Le specifiche di ROWS e le clausole PLAN e ORDER BY possono ora essere usate nelle frasi di UPDATE e di DELETE Gli utenti possono ora definire PLAN specifici per le frasi di UPDATE e di DELETE in modo da ottimizzarle a mano Inoltre possibile limitare il numero dei record influenzati dalla direttiva con una clausola ROWS opzionalmente usata in combinazione con una clausola ORDER BY per ottenere un insieme di registrazioni ordinato Sintassi 69 Novit nel Data Manipulation Language DML UPDATE SET WHERE PLAN lt elementi di plan gt ORDER BY lt lista elementi ordinamento gt ROWS lt valnum 1 gt TO lt valnum 2 gt or DELETE FROM PLAN lt elementi di plan gt P ORDER BY lt lista elementi ordinamento gt ROWS lt valnum 1 gt TO lt valnum 2 gt Estensioni alle variabili di contesto Un certo numero di caratteristiche sono state aggiunte per estendere le informazioni di contesto che possono essere gestite Precisione e millesimi di secondo nelle variabili Time e DateTime D Yemanov CURRENT_TIMESTAMP e NOW ora riportano i millisecondi La vari
16. Limiti nella recursione Attualmente la profondit massima della recursione fissato nel codice a 1024 livelli 45 Novit nel Data Manipulation Language DML Sintassi e regole per le CTE select select_expr for_update clause lock_clause select_expr with_clause select_expr_body order_clause rows_clause select _expr_body order_clause rows_clause with_clause WITH RECURSIVE with_list WITH with_list with_list with_item with_item with_list with_item symbol_table_alias_name derived_column_list AS select_expr select_expr_body query_term select_expr_body UNION distinct_noise query_term select_expr_body UNION ALL query_term Econ una rappresentazione meno formale Hy bo O Q 4 E_A CTE_B TAB1 TAB2 WHERE Regole per le CTE non recursive e Si possono definire in una unica query pi di una espressione e Qualsiasi clausola legale in una SELECT legale in una CTE e Una CTE pu fare riferimento ad altre CTE e Iriferimenti fra varie CTE non possono contenere circolarit e Le CTE possono essere usate in ogni parte della query principale o di un altra CTE e Una stessa CTE pu essere usata pi di una volta nella query principale e Le CTE possono essere usate nelle frasi tipo INSERT UPDATE o DELETE come subquery e Le CTE sono legali nelle STORED PROCEDURE e nei TRIGGER in generale nel PSQL e Una cl
17. Nota Il nuovo campo RDB VALID_BLR stato aggiunto alle tabelle RDB PROCEDURES e RDB TRIGGERS per indicare se la procedura o il trigger restano validi sopo una operazione di ALTER DOMAIN Il valore di RDB VALID_BLR viene mostrato in ISQL con i comandi SHOW PROCEDURE oppure SHOW TRIGGER COLLATE nelle STORED PROCEDURE e nei parametri A dos Santos Fernandes V 2 1 Alle variabili PSQL e agli argomenti delle procedure possono essere applicati gli ordinamenti colla zioni Nelle viste pu essere utilizzato WHERE CURRENT OF Richiesta CORE 1213 V 2 1 L operatore sui cursori WHERE CURRENT OF pu percorrere un cursore su un record set di una vista come se fosse il cursore sul risultato di una SELECT su una tabella Ad esempio FOR SELECT FROM MY_VIEW INTO AS CURSOR VIEW_CURSOR DO BEGIN DELETE FROM MY_VIEW WHERE CURRENT OF VIEW _CURSOR END La variabile di contesto ROW_COUNT D Yemanov ROW_COUNT stata migliorata in modo tale che adesso riporta il numero di record recuperati da una frase SELECT 82 SQL Procedurale PSQL Per esempio pu essere usata per verificare se una SELECT INTO ha effettivamente assegnato qualcosa BEGIN SELECT COL FROM TAB INTO VAR IF ROW_COUNT 0 THEN XCEPTION NO_DATA FOUND END Vedere anche gli esempi pi oltre sull uso dei cursori espliciti in PSQL
18. dpb 1 dpb isc_dpb_shut_force isc_dpb_shut_full const int dpb_length dpb dpb_buffer isc_attach_database status_vector 0 employee db amp handle dpb_length dpb_buffer if status_vector 0 1 amp amp status_vector 1 isc_print_status status_vector else isc_detach_database status_vector amp handle Modifiche alla struttura su disco ODS On Disk Structure Le modifiche alla struttura su disco ODS includono Nuovo numero identificativo Firebird 2 0 crea i database con un ODS con versione 11 Aumentata la dimensione massima per i messaggi d eccezione V Khorsun La dimensione massima per i messaggi di eccezione aumentata da 78 a 1021 bytes Nuovo campo descrizione per i generatori C Valderrama Il campo RDB DESCRIPTION stato aggiunto alla tabella RDB GENERATORS cos da poter aggiungere testi descrittivi ai generatori creati Nuovi campi descrittivi per gli SQL Roles C Valderrama I campi RDB DESCRIPTION e RDB SYSTEM_FLAG sono stati aggiunti alla tabella RDB ROLES per per mettere rispettivamente un testo descrittivo e determinare i ruoli definiti dall utente 21 Modifiche alle API di Firebird e all ODS Riconoscimento del tipo di ODS N Samofatov Per distinguere i database Firebird da quelli Interbase stato introdotto il concetto di tipo di ODS Rapporto errori migliorato per DSQL C Valderrama Il parser del DSQL cerca ora di d
19. EXECUTE BLOCK un estensione al linguaggio SQL che permette l uso del PSQL dinamico all interno di una SELECT Ha l effetto di ottenere un blocco di codice PSQL autocontenuto in modo da essere eseguito in una SQL dinamico come se fosse una STORED PROCEDURE Sintassi EXECUTE BLOCK param datatype param datatype RETURNS param datatype param datatype 61 Novit nel Data Manipulation Language DML AS DECLARE VARIABLE var datatype BEGIN Per il client la chiamata isc_dsql_sql_info col parametro isc_info_sql_stmt_type riporta isc_info_sql_stmt_select se il blocco ha parametri in uscita La semantica della chiamata simile a quella di una SELECT il client ha un cursore aperto pu ricevere dati attraverso di esso e lo deve chiudere dopo l uso isc_info_sql_stmt_exec_procedure se il blocco non ha parametri in uscita La semantica della chiamata simile a quella di una EXECUTE il client non ha nessun cursore e l esecuzione continua fino alla fine del blocco o termina per aver incontrato una SUSPEND Il client deve preprocessare solo la testata dello statement SQL oppure usare invece di come indicatore di parametro perch nel corpo del blocco potrebbero esserci riferimenti a variabili locali o ad argomenti con il prefisso Esempio Se il comando SQL da usare E
20. Firebird 2 1 Release Notes Helen Borrie Collator Editor 4 Settembre 2009 Documento v 0213_13 per Firebird 2 1 3 Firebird 2 1 Release Notes 4 Settembre 2009 Documento v 0213_13 per Firebird 2 1 3 Helen Borrie Collator Editor Traduzione in italiano Umberto Masotti Sommario L Note Generali r correlati nedlio u iaia E E ie scnsseeaad ccsodet alare lz 1 Release intermedia 2 1 3 iii aula ili pala 1 Questioni notevoli ia LINE nina AL ANI cashes aa 1 Release intermedia 2 12 liti icc rale lieti 2 Lea release di correzione 2 1 1 ine lea aria 2 Descrivere tin problema ricatti ale alal Gatien dia Lidi ol a 3 Altra Documentazione eioen ie i 4 2 Ke novit di Firebird 2 siii st etoen eeaeee edb O E EE E A E E EAE E E glia le li zasa EE 5 Nuove caratteristiche implementate ss ssion een ne inka EEE A E aE Epa EET EnEn SEE ESE a Epa 5 Struttura su disco On Disk Structure cece ne ee cece ee ee cece ase eeeeasaeeeeessaaeeeeaaan ees 5 Trigger a livello Database eee zena ze ze e eee ze eee 5 SOE ed Osseti SOL ville ali da lia 5 SOL Proce dial eraat aaee rn alan lea aaa i 6 SI CULE ZZ A nina aaa T E biella lille paladini 7 Supporto alle lingue internazionali eee einer nere rene ne nere ne nine 7 Nuove piattaforme supportate e e i a a Oi ERa 7 AmMIMIDISTFAZIONE ci csrl E EE EEE E E dd che pab sess ianiena riad iano 8 Interfaccia remota risi teea
21. MON CALL_STACK call stack delle richieste PSOL attive MON CALL_ID ID della chiamata MON STATEMENT_ID ID dello statement DSQL di primo livello MON CALLER_ID ID del chiamante MON SOBIJECT_NAME nome dell oggetto PSQL MON OBJECT_TYPE tipo dell oggetto PSQL MONSTIMESTAMP data ed ora di inizio della richiesta MON SOURCE_LINE numero di linea del sorgente SQL MON SOURCE_COLUMN numero di colonna del sorgente SQL MON STAT_ID ID della statistica e La colonna MON STATEMENT_ID raggruppa gli stack di chiamate per statement DSQL di primo li vello che hanno cominciato la catena di chiamate Tale ID rappresenta una registrazione di statement attivo nella tabella MON STATEMENTS e Le colonne MON SOURCE_LINE e MON SOURCE_COLUMN contengono informazioni relative alla linea ed alla colonna del sorgente PSQL attualmente in esecuzione MONSIO_STATS statistiche di I O 114 Caratteristiche amministrative MON STAT_ID ID della statistica MON STAT_GROUP gruppo della statistica 0 database 1 attachment 2 transaction 3 statement 4 call MON PAGE_READS numero di pagine lette MON PAGE_WRITES numero di pagine scritte MON PAGE_FETCHES numero di pagine cercate MONSPAGE_MARKS numero di pagine con modifiche pendenti cio non ancora scritte MON RECORD_STATS statistiche a livello di record MON STAT_ ID ID della statistica MON STAT_GROUP gruppo della statistica 0 d
22. 000 125 vii Firebird 2 1 Release Notes Il Server Classic in POSIX ollose ani a iii alal 126 In tutte le piattafotme r riavere ia 126 Altri miglioramenti i rei ii esige ee ne ai ene ee en e 126 isc_service_query erroneamente rivelava il percorso completo di un db 126 Chiunque poteva leggere il log del server con le API di servizio i 127 Gestione del nuovo database della sicurezza 127 Effettuare l aggiornamento del DB della sicurezza i 127 13 Utilit d hned di comando pilastro ein e ali ail 129 Miglioramenti srt lui deri perire sevb sec ilari EENE EAEE EEE 129 Supporto ai TRIGGER di Database isare reniri raaa ei EE EE EN 129 Occultamento password c iui inii e ii iai i i 129 Servizi di Firebird siria tepee eta EA EE O EAE i eau EAA dial EE 129 Nuova utilit a linea di comando fbsvemgr iii eee cene ecc ei 129 Strumenti di Backup nua iaia We es SRE 133 Il nuovo backup incrementale eeeeseeeeeneneneeeeenenenenenneeeeenecseeesegeeesseeeneneeeseaeaeaees 133 gbak programma di utilit per copia trasporto e recupero iii 136 ISOL utilit di interrogazione irta iii 137 Novi switchin uni adi adria Aragon eden EARE EE EERE 137 Nuovi comandi e miglioramenti iciri 139 gsec per l autenticazione Lisi iii hi iaia 142 Valore di fit rno per SSe henou ani iaia iaia arri 143 pfix tilita del Server
23. 1089 iso 8859 6 arabic csISO 1987 ECMA 114 ASMO 708 8859 6 I ISO 8859 6 E E 100 1995 ibm 81 tin4 1988 14 8859_4 cp914 914 windows 28594 LatinCyrillic 1988 8859_5 cp915 915 windows 28595 LatinArabic 6 cp1089 13 iso 8859 7 greek greek8 E OT_928 167 Set di caratteri internazionali cp813 813 windows 28597 ibm 916_P100 1 iso ir 138 cp916 916 windows 28598 ibm 920_P100 1 iso ir 148 ISO_8859 9 1989 15 8859_9 cp920 920 windows 28599 ECMA 128 ibm 921_P100 1 ibm 923_P100 1 csisolatin0 ibm 942_P12A 1995 1998 ibm 921 ibm 923 csisolatin9 1999 ibm 942 ECMA 118 csISOLatinGreek iso ir 126 ISO_8859 7 1987 8859_7 1995 ibm 916 iso 8859 8 hebrew csISOLatinHebrew ISO_8859 8 1988 ISO 8859 8 I ISO 8859 8 E 8859 _8 1995 ibm 920 iso 8859 9 latin5 csISOLatin5 iso 8859 13 8859 13 cp921 921 iso 8859 15 Latin 9 19 8859 _ 15 latin0 iso8859_15_ fdis cp923 923 windows 28605 ibm 932 cp932 shift_jis78 sjis78 ibm 942_VSUB_VPUA ibm 932_VSUB_VPUA ibm 943_P15A 2003 ibm 943 Shift_JIS MS_Kanji csShiftJIs windows 31j csWindows31J x sjis x ms cp932 cp932 windows 932 cp943c IBM 943C ms932 pck sjis ibm 943_VSUB_VPUA ibm 943_P130 1999 ibm 943 Shift_JIS cp943 943 ibm 943_VASCII_VSUB_VPUA ibm 33722_P12A 1999 ibm 33722 ibm 5050 EUC JP Extended_UNIX_Code_Pac ked_Format_for_Japanese csEUCPkdFmt Japanese X EUC JP eucjis windows 51932 ibm 337
24. 11 Le novit di Firebird 2 Introduzione di modalit addizionali di spegnimento N Samofatov Sono stati implementate le modalit Single user utente singolo e full shutdown spegnimento completo usando il nuovo parametro state peri comandi gfix shut e gfix online Sintassi attuale gfix lt command gt lt state gt lt options gt lt command gt gt shut online lt state gt normal multi single full lt options gt force lt timeout gt tran attach normal state il database in linea multi state modalit spegnimento multi utente quello usuale sono permesse connessioni multiple di SY SDBA o del proprietario single state spegnimento single user solo una connessione viene permessa usata dal processo di recupero full state spegnimento completo o esclusivo non viene permessa alcuna connessione Per ulteriori dettagli vedere la sezione su Gfix in New Shutdown Modes nel capitolo dei programmi di utilit Per una lista dei simboli di stato di spegnimento ed esempi di di uso vedere Shutdown State in the API Migliorata la gestione dei NULL nelle UDF C Valderrama Passare un NULL SQL Possibilit di passare un NULL SQL attraverso un puntatore NULL vedere Signal SQL NULL in UDFs Le funzioni esterne della libreria ib_udf sono state aggiornate cos da permettere alle funzioni stringa ASCIL CHAR LOWER LPAD LTRIM RPAD RTIM SUBSTR e SUBSTRLEN di riporar
25. Pacchettizzazioni Debian Erik Kunze Germania Abilitazione dei database su periferica fisica raw device porting su SINIX Z Helen Borrie Australia Redattrice delle note di rilascio capo dell ortodossia del ver bo Firebird 154 Appendice A Le nuove funzioni integrate Firebird 2 1 Funzione Formato Descrizione ABS ABS lt number gt Riporta il valore assoluto di un numero select abs amount from transactions ACOS ACOS lt number gt Riporta l arco coseno di un numero L argomento de ve essere compreso tra 1 e 1 e riporta un valore tra 0 e cio 3 1416 select acos x from y ASCII_CHAR ASCII CHAR lt number gt Riporta carattere ASCII specificato dal codice L ar gomento deve essere tra 0 e 255 il risultato nel set di caratteri NONE select ascii char x from y ASCII_VAL ASCII VALI lt string gt Riporta il codice ASCII del primo carattere della stringa 1 Vale 0 se la stringa vuota 2 D un errore se il primo carattere multi byte select ascii_val x from y ASIN ASIN lt number gt Riporta l arco seno di un numero reale compreso tra 1 e 1 Riporta un risultato compreso tra 2 e 2 select asin x from y ATAN ATAN lt number gt Riporta l arco tangente di un numero reale che un valore compreso tra 2 e 2 select atan x from y ATAN2
26. Sintassi RDBSSET_CONTEXT lt namespace gt lt variabile gt lt valore gt RDBSGET_CONTEXT lt namespace gt lt variabile gt Queste funzioni sono in realta una specie di funzioni esterne che pero fanno parte integrante di tutti 1 database invece di dover essere richiamate da una libreria esterna caricata dinamicamente Le seguenti dichiarazioni sono fatte automaticamente dal motore alla creazione del database Dichiarazioni implicite DECLARE EXTERNAL FUNCTION RDB GET_CONTEXT VARCHAR 80 VARCHAR 80 RETURNS VARCHAR 255 FREE_IT DECLARE EXTERNAL FUNCTION RDB SET_CONTEXT VARCHAR 80 VARCHAR 80 VARCHAR 255 RETURNS INTEGER BY VALUE Uso RDB SET_CONTEXT e RDB GET_CONTEXT impostano e recuperano il valore attuale per una variabile di contesto Raggruppamenti di variabili di contesto con propriet simili sono reperiti con identificatori di spazi di nomi namespace Ogni spazio di nomi determina le regole per l uso quali ad esempio l accessibilit in lettura o scrittura da parte di un utente Nota Gli spazi di nomi e i nomi delle variabili sono sensibili alle maiuscole minuscole 71 Novit nel Data Manipulation Language DML RDB GET_CONTEXT recupera il valore attuale di una variabile Se la variabile non esiste nello spazio di nomi specificato la funzione riporta NULL RDB
27. riaprirla se necessario e seguire le istruzioni seguenti Queste sono le linee guida per gestire l analisi dei problemi 1 necessario poter descrivere un rapporto dettagliato del problema descrivendo la versione esatta del kit Firebird utilizzato di solito un numero di 5 cifre che segue la versione Inoltre bene aggiungere anche i dettagli della piattaforma utilizzata ad es sistema operativo processore Inoltre molto importante poter aggiungere un test riproducibile ed i relativi dati nel rapporto ed inviare tutto al nostro Tracker 2 Nel caso siete caldamente incoraggiati a farvi conoscere come field tester sottoscrivendo la relativa lista dei field testers ed inviando la miglior descrizione possibile dei vostri problemi 3 Per discutere su un problema od i particolari di una implementazione ci si pu iscrivere alla lista degli sviluppatori firebird devel In quella lista di posta elettronica si possono leggere tutti i problemi che arrivano al tracker e le relative discussioni riguardo a questa release Note Generali Altra Documentazione Si possono trovare alcuni README per molte delle nuove caratteristiche delle versioni 2 0 e 2 1 nel kit di installazione per default nel sottodirettorio doc Una pagina automatizzata delle Release Notes nel Tracker accede alle liste ed ai link per tutte le registrazioni di questa versione ivi presenti e tutte le build relative Si pu usare questo link Per vostra comod
28. 1 1995 ibm 874 ibm 9066 cp874 TIS 620 tis620 2533 eucTH cp9066 1162 windows 874 2000 TIS 620 windows 874 MS874 ibm 437_P100 1 windows 437 ibm 850_P100 1 windows 850 ibm 851_P100 1 ibm 852_P100 1 ibm 855_P100 1 ibm 856_P100 1 ibm 857_P100 1 1995 995 1995 1995 1995 1995 1995 ibm 437 ibm 850 ibm 851 ibm 852 ibm 855 ibm 856 ibm 857 IBM437 cp437 437 csPC8CodePage437 IBM850 cp850 850 csPC850Multilingual IBM851 cp851 851 csPC851 IBM852 cp852 852 csPCp852 windows 852 IBM855 cp855 855 csIBM855 csPCp855 cp856 856 IBM857 cp857 857 csIBM857 windows 857 168 Set di caratteri internazionali ibm 858_P100 1997 ibm 858 IBM00858 CCSID00858 CP00858 PC Multilingual 850 euro cp858 ibm 860_P100 1995 ibm 860 IBM860 cp860 860 csIBM860 ibm 861_P100 1995 ibm 861 IBM861 cp861 861 cp is csIBM861 windows 861 ibm 862_P100 1995 ibm 862 IBM862 cp862 862 csPC862LatinHebrew DOS 862 windows 862 ibm 863_P100 1995 ibm 863 IBM863 cp863 863 csIBM863 ibm 864_X110 1999 ibm 864 IBM864 cp864 csIBM864 ibm 865_P100 1995 ibm 865 IBM865 cp865 865 csIBM865 ibm 866_P100 1995 ibm 866 IBM866 cp866 866 csIBM866 windows 866 ibm 867_P100 1998 ibm 867 cp867 ibm 868_P100 1995 ibm 868 IBM868 CP868 868 csIBM868 cp ar ibm 869_P100 1995 ibm 869 IBM869 cp869 869 cp gr csIBM869 windows 869 ibm 878_P100 1996 ibm 878 KOI8 R koi8 csKOI8R cp878 ibm 901_P100 1999 ibm 901 ibm 902_P100 1999 ibm 902 ibm 922
29. 1 presenta la possibilit di monitorare dalla parte del server l attivit esistente relativa ad un certo database Il motore offre un insieme di cosiddette tabelle virtuali che danno all utente una fotografia delle attivit in corso per una certa base di dati La parola virtuale significa che il la tabella in questione non materializzata se non quando esplicitamente richiesto Tuttavia il relativo metadata stabilmente accessibile e consultabile nello schema Nota Le tabelle virtuali di monitoraggio esistono solo per i database con la ODS 11 1 e successive pertanto la migrazione con un ciclo di backup e restore necessaria prima di poter utilizzare questa caratteristica L idea Il punto chiave del sistema di monitoraggio un istantanea delle attivit activity snapshot Essa rappresenta lo stato corrente del database comprese una serie di informazioni sul DB stesso sui collegamenti e gli utenti attivi le transazioni i comandi preparati ed in esecuzione ed altro ancora Questa istantanea viene creata nel momento stesso in cui una qualsiasi delle tabelle di monitoraggio viene richie sta in una data transazione e viene conservata fino al termine della transazione in modo tale che le interrogazioni multitabellari esempio quelle master slave a tali tabelle possano riportare sempre una vista consistente dei dati In altre parole le tabelle di monitoraggio si comportano sempre come in una transazione snaps
30. 1097 cp1097 1097 100 1995 ibm 1112 cp1112 1112 100 1999 ibm 1122 cp1122 1122 100 1995 ibm 1123 cp1123 1123 cpibm1123 100 1997 ibm 1130 100 1998 ibm 1132 100 1997 ibm 1140 IBM01140 CCSID01140 CPO1 0 ebcdic us 37 euro 100 1997 ibm 1141 IBM01141 CCSID01141 CPO1 bcedic de 273 teuro 100 1997 ibm 1142 IBM01142 CCSID01142 CPO1 2 ebcdic dk 277 euro ebcdic no 277 euro 100 1997 ibm 1143 IBM01143 CCSID01143 CPO1 3 ebcdic fi 278 euro ebcdic se 278 euro 100 1997 ibm 1144 IBM01144 CCSID01144 CPO1 4 ebcdic it 280 euro 100 1997 ibm 1145 IBM01145 CCSID01145 CPO1 5 ebcdic es 284 euro 100 1997 ibm 1146 IBM01146 CCSID01146 CPO1 6 ebcdic gb 285 euro 100 1997 ibm 1147 IBM01147 CCSID01147 CPO1 7 ebcdic fr 297 euro 100 1997 ibm 1148 IBM01148 CCSID01148 CPO1 8 ebcdic international 500 euro 100 1997 ibm 1149 IBM01149 CCSID01149 CPO1 9 ebcdic is 871l euro 100 1999 ibm 1153 cpibm1153 170 Set di caratteri internazionali ibm 1154_P100 1999 ibm 1154 cpibm1154 ibm 1155_P100 1999 ibm 1155 cpibm1155 ibm 1156_P100 1999 ibm 1156 cpibm1156 ibm 1157_P100 1999 ibm 1157 cpibm1157 ibm 1158_P100 1999 ibm 1158 cpibm1158 ibm 1160_P100 1999 ibm 1160 cpibm1160 ibm 1164_P100 1999 ibm 1164 cpibm1164 ibm 1364_P110 1997 ibm 1364 cp1364 ibm 1371_P100 1999 ibm 1371 cpibm1371 ibm 1388_P103 2001 ibm 1388 ibm 9580 ibm 1390_P110 2003 ibm 1390 cpibm1390 ibm 1399_P110 2003 ibm 1399 ibm 16684_P110 2003 ibm 16684 ibm 4899_P100 1998 ibm 4899 cpibm4899 ib
31. 2 1 RelaxedAliasChecking un nuovo parametro di configurazione aggiunto al fine di eliminare la restri zione imposta in Firebird 2 0 x sull uso degli alias nelle relazioni ed i nomi di tabella nelle query Per esempio con RelaxedAliasChecking posto a vero 1 in firebird conf la seguente query non riporta errore in Firebird 2 1 mentre fallirebbe in v 2 0 x o in v 2 1 col parametro impostato al suo default cio 0 Dl B FIELD2 SELECT ATABLE FIE FROM ATABLE A ON A ID BTAB JOIN BTABLE B E ID 148 Novit e modifiche nei parametri di configurazione Attenzione Questa una utilit temporanea il cui scopo quello di concedere ai sistemi che hanno del codice per Interbase o per versioni vecchie di Firebird il tempo necessario a migrare ad una sintassi orientata allo standard SQL e Pertanto questo parametro va abilitato solamente se si ha nelle applicazioni o nei moduli PSQL del codice che ha questo tipo di problema Non deve essere considerato un invito a scrivere del codice non professio nale e Consideratela come una bomba a tempo Verr completamente rimosso in una versione successiva MaxFileSystemCache V Khorsun V 2 1 Imposta una soglia che determina quando la cache delle pagine di Firebird pu o meno essere duplicata nella cache del sistema Se questo parametro impostato ad un qualsiasi valore intero positivo il suo effetto dipende dalla dimensio
32. BIN_SHL v 2 1 lt lt BIN_SHR v 2 1 lt lt BIN_XOR v 2 1 lt lt BLOCK v 2 0 CELL V 2 1 lt lt CEILING v 2 1 lt lt COLLATION v 2 0 COMMENT v 2 0 COS E Cve2e1 lt lt COSH va 2 1 lt COTTA lt lt DATEADD v 2 1 lt lt DATEDIFF v 2 1 lt lt DECODE v 2 1 lt lt DIFFERENCE v 2 0 EXP v 2 1 lt lt FLOOR v 2 1 lt lt GEN_UUID v 2 1 lt lt GENERATED v 2 1 lt lt HASH v 2 1 lt lt IIF v 2 0 LIST v 2 1 lt lt LN v 2 1 lt lt LOG v 2 1 lt lt LOG10 v 2 1 lt lt LPAD v 2 1 lt lt MATCHED v 2 1 lt lt ATCHING v 2 1 lt lt MAXVALUE v 2 1 lt lt ILLISECOND v 2 1 lt lt INVALUE v 2 1 lt lt OD v 2 1 lt lt NEXT v 2 0 OVERLAY v 2 1 lt lt PAD v 2 1 lt lt PL PsA Ly lt PLACING v 2 1 lt lt POWER v 2 1 lt lt PRESERVE v 2 1 lt lt RAND v 2 1 lt lt REPLACE v 2 1 lt lt RESTART v 2 0 RETURNING v 2 0 REVERSE v 2 1 lt lt ROUND v 2 1 lt lt RPAD v 2 1 lt lt SCALAR_ARRAY v 2 0 SEQUENCE v 2 0 SIGN v 2 1 lt lt SIN v 2 1 lt lt SINH v 2 1 lt lt SPACE v 2 1 lt lt 92 Nuove parole chiave e modifiche SOR TAN TAN TRU WEE ACT CAS Ta Zali lt lt v 2 1 lt lt H NC K
33. Cursori espliciti D Yemanov In PSQL si possono ora dichiarare ed usare cursori multipli I cursori espliciti sono disponibili anche nelle strutture DSQL EXECUTE BLOCK oltre che nelle STORED PROCEDURE e nei TRIGGER Sintassi DECLARE VARIABLE lt cursor_name gt CURSOR FOR lt select_statement gt OPEN lt cursor_name gt FETCH lt cursor_name gt INTO lt var_name gt lt var_name gt CLOSE lt cursor_name gt Esempi 1 DECLARE RNAME CHAR 31 DECLARE C CURSOR FOR SELECT RDBSRELATION_NAME FROM RDBSRELATIONS BEGIN OPEN C WHILE 1 1 DO BEGIN FETCH C INTO RNAME IF ROW_COUNT 0 THEN sJEAVE SUSPEND DECLARE RNAME CHAR 31 ECLARE FNAME CHAR 31 DECLARE C CURSOR FOR is 83 SQL Procedurale PSQL ECT RDBSFIELD_NAME po RDBSRELATION_FIELDS RDBSRELATION_NAME RNAME R BY RDBSFIELD_POSITION bi ECT RDBSRELATION_NAME INTO RNAME RDBSRELATIONS EN C bi H C INTO FNAME E C END Nota e Ladichiarazione di un cursore ammessa solo nella sezione delle dichiarazioni del PSQL blocco procedura o trigger che sia come qualsiasi altra regolare dichiarazione di variabile locale I nomi dei cursori devono essere univoci all in
34. DROP DEFAULT e Sintassi per modificare le eccezioni e ALTER EXTERNAL FUNCTION e COMMENT ON per descrizioni del metadata e Estensioni a CREATE VIEW e Creare le FK senza bisogno dell accesso esclusivo e Logica modificata per aggiornare i dati nelle viste e Identificatori descrittivi per i sottotipi dei BLOB e CREATE COLLATION Trigger a livello database Adriano dos Santos Fernandes v 2 1 Un trigger di database un modulo scritto in PSQL che viene eseguito in associazione ad un evento di connessione o di transazione Gli eventi e relativo ordine sono come segue CONNECT e Viene stabilita una connessione ad un database e parte una transazione e vengono eseguiti i trigger le eccezioni non gestite fanno rollback della transazione e disconnettono il client e sono riportate al client e la transazione confermata 33 Novit sul Data Definition Language DDL DISCONNECT e Parte una transazione e Vengono eseguiti i trigger le eccezioni non gestite fanno rollback della transazione e disconnettono la connessione e sono ignorate e La transazione confermata e Si viene scollegati TRANSACTION START I trigger sono eseguiti alla creazione della nuova transazione le eccezioni non gestite sono riportate al client e fa rollback della transazione TRANSACTION COMMIT I trigger sono eseguiti alla conferma della transazione le eccezioni non gestite fanno rollback del punto di salvataggio del trigger la conferma abo
35. Dichiarazione originale declare filter pesh input_type 0 output_type 3 entry_point f module name p Dichiarazione alternativa declare filter pesh input_type binary output_type acl entry_point f module name p 42 Novit sul Data Definition Language DDL Per dichiarare un nome per un sottotipo di blob definito dall utente necessario ricordarsi di effettuare il COM MIT dopo l inserzione che viene effettuata come nell esempio seguente da comandi ISQL SQL gt insert into rdbStypes CON gt values RDBSFIELD_SUB_TYP SQL gt commit SQL gt declare filter pesh2 input_type xdr output_type text CON gt entry_point p2 module_name p SQL gt show filter pesh2 BLOB Filter PESH2 Input subtype 100 Output subtype 1 Filter library is p Entry point is p2 Fl 100 XDR test type 0 43 Novit nel Data Manipulation Language DML In questa parte si tratta delle novit e dei miglioramenti aggiunti a quella parte del linguaggio SQL dedicato alla manipolazione dei dati durante lo sviluppo di Firebird 2 Quelli identificati come introdotti nella versione 2 1 sono disponibili solo con database in ODS 11 1 e superiori Importante Un nuovo parametro di configurazione RelaxedAliasChecking stato aggiunto a firebird conf in Firebird 2 1 al fine di permettere una certa compatibilit con le versioni precedenti rilassando le restrizioni di Firebird 2 0 x quando ci sono n
36. Esempio select blob_column from table where blob_column collate unicode foo Confronti sul contenuto completo dei BLOB Si possono effettuare operazioni di confronto sull intero contenuto di un BLOB di testo Conversioni sul set di caratteri dei BLOB Si possono effettuare conversioni fra i set di caratteri durante l assegnazione di un BLOB ad una stringa o ad un altro BLOB INTL Plug in I set di caratteri e gli ordinamenti sono installati usando un manifest file documento di configurazione in formato particolare Il manifest file deve essere messo nel sottodirettorio int 1 dell installazione cio rootdir int1 in Linux o C Programmi Firebird Firebird_2_1 int1l in Windows con l estensione conf Viene usato per trovare i set di caratteri e gli ordinamenti nelle librerie Se un set di caratteri o un ordinamento sono elencati pi di una volta non viene caricato e viene inserito un errore nel log Il file int1 fbintl conf un esempio di manifest file da cui sono state estratte le righe seguenti lt intl_module fbint1 gt filename S this fbintl lt intl_module gt lt charset IS08859_1 gt intl_ module fbintl collation ISO8859_1 collation DA_DA collation DE_DE 102 Supporto alle lingue internazionali INTL collation EN_UK collation EN_US collation ES_ES collation PT_BR collation PT_PT lt charset gt lt charset WIN1250 gt intl_module fbintl collat
37. Firebird 2 come security2 fdb 7 Far ripartire Firebird 127 Sicurezza Ora dovrebbe essere possibile collegarsi al server Firebird 2 utilizzando i vecchi login e password NULL nel campo RDB PASSWD Nelle versioni di Firebird precedenti alla 2 0 era possibile avere utenti con password a NULL A partire dalla versione 2 0 in poi nel database della sicurezza il campo RDB PASSWD vincolato ad essere NOT NULL Tuttavia per evitare eccezioni durante lo script di aggiornamento il campo creato dallo script come annullabile Se si sicuri di non avere password vuote nel database della sicurezza potete modificare lo script a mano prima di lanciarlo Ad esempio si pu modificare la linea RDBSPASSWD RDBSPASSWD in RDBSPASSWD RDBSPASSWD NOT NULL Attenzione sul parametro LegacyHash Se si configura LegacyHash 1in firebird conf la sicurezza di Firebird non funziona pi per bene Per raddrizzare le cose necessario fare quanto segue 1 Cambiare la password di SYSDBA 2 Fare in modo che gli utenti cambino la loro password in 2 0 ogni utente pu cambiare la sua password 3 Rimettere LegacyHash a 0 cio al valore di default oppure commentarla 4 Fermare e far ripartire Firebird per attivare la modifica alla configurazione 128 Capitolo 13 Utilita a linea di comando Miglioramenti Supporto ai TRIGGER di Database V 2 1 Un nuovo parametro stato aggiunto a gbak nbackup e isql per non eseg
38. Gq tu 0 D t 5 move data from temporary table and drop it INSERT INTO RDBSUSERS RDBSUSER_NAME RDBSSYS_USER_NAME RDBSGROUP_NAME RDBSUID RDBSGID RDBS PRIVILEGE RDBSCOMMENT RDBSFIRST_NAME RDBSMIDDLE_NAME RDBSLAST_NAME RDBSPASSWD SELECT USER_NAME SYS_USER_NAME GROUP_NAME UID GID PRIVILEGE COMMENT FIRST_NAME MIDDLE_NAME LAST_NAME PASSWD FROM UTMP COMMIT T E E DROP TABLE UTMP COMMIT Nota Questo campo andrebbe vincolato a NOT NULL Per informazioni al riguardo si veda Nullability of RDB PASSWD nel capitolo relativo alla sicurezza 174
39. HAVI F O AVING lt condizioni di raggruppamento gt LAN lt lista di elementi PLAN gt RDER BY lt lista di valori per l ordinamento gt ROWS lt value gt TO lt value gt lt espressione tabellare gt lt nome tabella gt lt tabella in join gt lt tabella derivata gt lt tabella in join gt lt cross join gt lt qualified join gt lt cross join gt lt espressione tabellare gt CROSS JOIN lt espressione tabellare gt lt qualified join gt lt espressione tabellare gt INNER LEFT RIGHT FULL OUTER JOIN lt espressione tabellar ON lt join condition gt lt tabella derivata gt lt espressione di select gt Conclusioni e La modalit FOR UPDATE ed il blocco di riga WITH LOCK possono essere effettuati solo sull insieme di dati risultante non possono essere applicati ad una subquery 78 Novit nel Data Manipulation Language DML e Le unioni con UNION sono possibili in qualsiasi subquery e Le clausole FIRST SKIP PLAN ORDER BY ROWS sono permesse in ogni subquery Note e Pu essere specificata nella stessa SELECT solo una fra FIRST SKIP o ROWS altrimenti mischiando le sintassi avviene un errore di sintassi e Una frase INSERT accetta una espressione di selezione SELECT per definire un insieme di righe da inserire in una tabella La parte di SELECT relativa supporta tutte le caratteristiche definit
40. HRE PE E E A in eee ested ets 52 Nuovi tipl di JOIN lei ea oiran 53 I default per LINSER sicari ina iaia aelred ai 55 Compatibilit fra testo VARCHAR e BLOB eee eee eee 55 Comparazione sul contenuto completo dei BLOB di testo einen 55 RDB DB_KEY riporta NULL nelle OUTER JOIN 55 Riammesso l ordinamento nelle colonne BLOB e ARRAY L eeeeeeesseereeeneneneneneneneneneeaees 56 Funzioni integrate iii i LAO iti 56 Funzioni migliorate gi dalla versione 2 0 x uc ee ene ee eee 58 In DSQL la scansione dei nomi di tabella pi rigida eee 59 La frase EXECUTE BLOCK oisinn eneee id Ea aa ea ai 61 Tabelle derivate Derived Tables oppure DT eee eee eee eee eee 62 Sintassi per ROLLBACK RETAIN sentipenetan ineca tenir ini 64 Sintassi ROW S 0 radiali Sais E ae EE aire ewes 64 Miglioramenti alla gestione delle UNION cccceeeececececececececececececececececeeecececeeeeeeeeeseeeees 65 Miglioramenti nella gestione del NULL eee ezine ze ze cei 67 Le subquery e l INSERT possono accettare insiemi UNION 69 Nuove estensioni alle sintassi di UPDATE e DELETE eee eee eee eee 69 Estensioni alle variabili di CONtesto eee 70 Miglioramenti nella gestione dei PLAN specificati dall utente 74 Migliorie nelle operazioni di ordinamento ceeecececececec
41. ION CADE RE E_IT ESTRICT OLE YP qe Hw TZ hi EA BASE GRO CAC 10G NUM RDAY v E v EKDAY NAME HE FILE v 2 1 lt lt EMPORARY v 2 1 lt lt We2alL lt lt v 2 1 lt lt Parole chiave non pi riservate VeZO v 2 0 vix 0 v 2 0 2 0 2 0 20 E 7 2 0 Non piu riservate come parole chiave v 2 0 UP_COMMIT_WAIT v 2 0 LOG_BUFS v 2 0 v 2 0 v2 0 RAW_PARTITIONS v 2 0 CHECK_POINT_LEN v 2 0 LOG_BUF_SIZE v 2 0 93 Capitolo 9 Indici e ottimizzazioni Ottimizzazioni in V 2 1 I miglioramenti nell ottimizzatore in v 2 1 includono v 2 1 Riduzione nelle letture dagli indici per MIN e MAX Le aggregazioni MIN MAX indicizzate costringevano a tre letture degli indici mentre invece basta una sola Cos con un indice ascendente sulla colonna non annullabile COL la query SELECT MIN COL FROM TAB avrebbe dovuto essere completamente equivalente a SELECT FIRST 1 COL FROM TAB RDER BY 1 ASC effettuando entrambi una sola lettura di record Tuttavia la prima query richiedeva tre letture indicizzate mentre la seconda effettuava solo l unica lettura prevista Ora entrambe effettuano una sola lettura La stessa ottimizzazione si applica alla funzione MAX se collegata ad un indice DESC Clausola PLAN miglior
42. Rapida Domini in PSQL COLLATE nelle STORED PROCEDURE WHERE CURRENT OF nelle viste ROW_COUNT riporta il numero di righe di una SELECT Cursori esplicitati Gli argomenti delle STORED PROCEDURE possono avere un default Operatore di controllo del flusso LEAVE lt label gt Le variabili di contesto OLD ora sono in sola lettura Stack Trace per le eccezioni PSQL UDF utilizzabili come procedure Domini in PSQL Adriano dos Santos Fernandes V 2 1 Ora possibile usare un dominio per dichiarare il tipo di dato degli argomenti e delle variabili nei moduli PSQL In funzione dell esigenza si pu dichiarare un argomento o una variabile usando in alternativa il solo identificatore di dominio al posto del tipo di identificatore nativo in modo che la variabile erediti tutti gli attributi del dominio il solo tipo di dato del dominio senza ereditare pertanto i vincoli di CHECK ed il valore di DEFAULT se dichiarati nel dominio preponendo le parole TYPE OF nella dichiarazione vedi sintassi qui sotto Sintassi data_type lt builtin data_type gt lt domain_name gt TYPE OF lt domain_name gt Esempi CRE ATE DOMAIN DOM AS INTEGER 81 SQL Procedurale PSQL CREATE PROCEDURE SP Il TYPE OF DOM I2 DOM RETURNS O1 TYPE OF DOM 02 DOM AS DECLARE VARIABLE V1 TYPE OF DOM DECLARE VARIABLE V2 DOM BEGIN END
43. SQL 99 che permettono di specificare al livello DDL i richiesti intervalli di incremento A meno che non ci sia la impellente necessit di usare un passo che non sia 1 si raccomanda di usare l espressione NEXT VALUE FOR anzich la funzione GEN_ID 2 GEN ID lt name gt 0 permette di sapere qual il valore corrente di un generatore ma non dovrebbe mai essere usato con frasi di INSERT o UPDATE perch si corre il grosso rischio di violare il vincolo di unicit se ci sono processi concorrenti 77 Novit nel Data Manipulation Language DML Articoli SELECT e sintassi delle espressioni Dmitry Yemanov La semantica e Una frase SELECT si usa per riportare dati al chiamante un modulo PSQL o un programma client e Una espressione di selezione SELECT recupera le parti dai dati per costruire colonne che possono far parte o dell insieme finale risultante o di un qualsiasi insieme intermedio Le espressioni di selezione sono note anche come subquery Regole sintattiche lt frase di select gt lt espressione di select gt FOR UPDATE WITH LOCK lt espressione di select gt lt specifiche di query gt UNION ALL DISTINCT lt specifiche di query gt lt specifiche di query gt SELECT FIRST lt valore gt SKIP lt valore gt lt lista di selezione gt FROM lt lista di espressioni tabellari gt WHERE lt condizioni di ricerca gt GROUP BY lt lista valori di raggruppamento gt
44. Santos Fer set di caratteri WIN1252 nandes P H Alba nez WIN1257 WIN1257_LV Ordinamento Lettone O Loa A Karya kin s WIN1257_LT Ordinamento Lituano O Loa A Karya kin 165 Set di caratteri internazionali Set di caratteri Ordinamento Descrizione Implementato da i WIN1257_EE Ordinamento Estone O Loa A Karya kin WIN1258 n a Sottoinsieme del set di caratteri Vietnami ta WIN1258 Nguyen The Phuong A dos Santos Fernandes UCS_BASIC Supporto di Unicode 4 0 col set di caratte ri UTF8 ed ordinamento UCS_BASIC A dos Santos Fer nandes UNICODE Supporto di Unicode 4 0 col set di caratte ri UTF8 ed ordinamento UNICODE A dos Santos Fer nandes UNICODE_CI Supporto per Unicode 4 0 con il set di ca ratteri UTF8 ed ordinamento indifferente alle maiuscole minuscole A dos Santos Fer nandes ISO8859_1 FR_FR_CI AI V 2 1 Ordinamento per lalingua france se Ignora gli accenti e le maiuscole CP943C CP943C_UNICODE V 2 1 Set di caratteri giapponese A dos Santos Fer nandes A dos Santos Fer nandes TIS620 TIS620_UNICODE V 2 1 Set di caratteri tailandese single byte Insiemi di caratteri a singolo byte CYRL DOS437 DOS737 DOS775 DOS850 DOS852 DOS857 DOS858 DOS860 DOS861 DOS862 DOS863 DOS864 DOS865 DOS866 DOS869 ISO8859_1 IS08859_13 ISO08859_2 IS0O8859_3 IS08859 4 ISO8859_5 IS08859_6 ISO
45. Supporto alle lingue internazionali INTL lt charset NAME gt intl_module fbintl collation NAME REAL NAME lt charset gt Registrare un set di caratteri in un database Per registrare il modulo in un database lanciare la procedura sp_register_character_set ilcui sorgente si trova nel sottodirettorio misc intl sql della radice di Firebird 2 1 Uso della Stored Procedure Un esempio Questa ad esempio una dichiarazione in fbintl conf lt charset GB gt intl_module fbintl collation GB GB18030 lt charset gt La STORED PROCEDURE ha due parametri una stringa che l identificatore del set di caratteri come dichia rato nel file di configurazione ed un intero che il massimo numero di byte che occupa un singolo carattere in quella codifica Nel nostro esempio execute procedure sp_register_character_set GB 4 La frase CREATE COLLATION Sintassi per CREATE COLLATION CREATE COLLATION lt name gt FOR lt charset gt FROM lt base gt FROM EXTERNAL lt name gt NO PAD PAD SPACE CASE SENSITIVE CASE INSENSITIVE ACCENT SENSITIVE ACCENT INSENSITIV lt specific attributes gt E Nota SS Uist Attributi specifici devono essere separati da punto e virgola cio e sono sensibili alle maiuscole Esempi fod CREATE COLLATION UNICODE_ENUS_CI FOR UTF8 ROM UNICODE
46. almeno un elemento non recursivo ancoraggio o elemento fisso I membri non recursivi devono essere messi prima nella UNION I membri recursivi sono separati dagli elementi di ancoraggio fissi e gli uni dagli altri con una clausola UNION ALL cio membro non recursivo ncora UNION ALL DISTINCT membro non recursivo ncora UNION ALL DISTINCT membro non recursivo ncora UNION ALL membro recursivo UNION ALL membro recursivo I riferimenti fra le varie CTE non devono avere circolarit 47 Novit nel Data Manipulation Language DML Le aggregazioni DISTINCT GROUP BY HAVING e le funzioni di aggregazione SUM COUNT MAX ecc non sono permesse nei membri recursivi e Un membro recursivo pu avere uno ed un solo un riferimento a s stessa e solo nella sua clausola FROM e Unriferimento recursivo non pu partecipare ad una OUTER JOIN Esempio di una CTE recursiva WITH URSIVE DEPT_YEAR_BUDGET AS tad Gi Q SELECT FISCAL_YEAR DEPT_NO SUM PROJECTED_BUDGET AS BUDGET FROM PROJ_DEPT_BUDGET GROUP BY FISCAL YEAR DEPT_NO is EPT TREE AS SELECT DEPT_NO HEAD _DEPT DEPARTMENT CAST AS VARCHAR 255 AS INDENT FROM DEPARTMENT WHERE HEAD _DEPT IS NULL UNION ALL SELECT D DEPT_NO D HEAD D
47. basate su espressioni di selezione 2 Se una clausola PLAN contiene descrizioni di accesso non valide allora o viene riportato un errore oppure la clausola errata viene silenziosamente ignorata ci dipende dalla gravit dell errore 3 Il tipo di PLAN specificato con ORDER lt navigational_index gt INDEX lt filter_indices gt viene riportato dal motore e pu essere usato nei PLAN fatti dall utente a partire da FB 2 0 Migliorie nelle operazioni di ordinamento A Brinkman Nelle operazioni di ordinamento sono stati fatti alcuni utili sviluppi GROUP BY e ORDER BY su un lt alias gt I nomi di alias sono ora permessi in entrambe le clausole Esempi 1 ORDER BY SELECT RDBSRELATION_ID AS ID ROM RDBSRELATIONS ORDER BY ID Hi 2 GROUP BY SELECT RDBSRELATION_NAME AS ID COUNT ROM RDBSRELATION_FIELDS GROUP BY ID rj GROUP BY su espressione arbitraria Una condizione di GROUP BY pu ora contenere una qualsiasi espressione valida Esempio GROUP BY SUBSTRING CAST A B 2 AS VARCHAR 15 FROM 1 FOR 2 Ordinamento di SELECT attraverso un numero implicito L ordinamento per grado cio per posizione del numero di colonna adesso pu funzionare anche con SELECT 76 Novit nel Data Manipulation Language DML Esempio SELECT FROM RDBSRELATIONS ORDER BY 9 ORDER BY numerici e parametri attenzione Stando alle regole a p
48. caratteri La procedura rdb fix_metadata riporta le stesse informazioni di rdb check_metadata ma cambia i testi dei meta dati Importante Deve essere lanciato una ed una sola volta 109 1 isql percorso al tuo database fdb 2 SQL gt input Sfbroot misc upgrade metatdata metadata_charset_create sql 3 SQL gt select from rdb fix metadata WIN1251 sostituire WIN1251 col set di caratteri 4 SQL gt commit Supporto alle lingue internazionali INTL Dopo ci si possono rimuovere le procedure di aggiornamento Rimuovere le procedure di aggiornamento 1 isql percorso al tuo database fdb 2 SQL gt input fbroot misc upgrade metadata metadata_charset_drop sql Set di caratteri supportati Vedere Appendice B alla fine di queste note di rilascio per la lista completa di tutti i set di caratteri supportati 110 Capitolo 11 Caratteristiche amministrative Firebird gradualmente aggiunge sempre nuove caratteristiche per snellire l amministrazione delle basi di dati Firebird 2 1 vede l introduzione di una nuova famiglia di tabelle di sistema attraverso le quali gli amministratori possono monitorare all istante le transazioni e i comandi attivi in una base di dati Questi strumenti adottano una nuova caratteristica del DDL della versione 2 1 Tabelle temporanee globali Global Temporary Tables per dare queste istantanee Tabelle di monitoraggio Dmitry Yemanov Firebird 2
49. col numero della pi vecchia transazione nella copia privata della pagina con l elenco delle transazioni transaction inventory page detta TIP isc_info_tra_oldest_active e Per le transazioni read committed riporta il numero della transazione corrente e Per tutte le altre transazioni riporta il numero della pi vecchia transazione attiva al momento d inizio della transazione corrente isc_info_tra_oldest_snapshot Riporta il numero della minore tra_oldest_active fra tutte le transazioni attive all inizio della transazione corrente Nota Questo valore usato come soglia high water mark dal sistema di garbage collection 18 Modifiche alle API di Firebird e all ODS isc_info_tra_isolation Riporta il livello di isolamento della transazione corrente Il formato del dato riportato il seguente isc_info_tra_isolation 1 isc_info_tra_consistency isc_info_tra_concurrency 2 isc_info_tra_read_committed isc_info_tra_no_rec_version isc_info_tra_rec_version Cio per transazioni tipo Read Committed vengono riportati due elementi isolation level e record versioning policy mentre per le altre transazioni si riporta solo un elemento isolation level isc_info_tra_access Riporta il modo di accesso sola lettura oppure lettura scrittura della transazione corrente Il formato degli elementi ritornati il seguente isc_info_tra_access 1 isc_info_tra_readonly isc_info_tra_readwrite i
50. come indicatore Il problema di fondo mantenere la semplicit tipica delle dichiarazioni senza descrittori ed al tempo stesso essere in grado di segnalare il NULL Il motore normalmente passava i parametri alle UDF per riferimento In pratica ci significa passare un punta tore al dato per indicare che abbiamo un NULL Tuttavia non si pu correre il rischio di rompere un impreci sato numero di UDF esistenti pubbliche e private che al momento non si aspettano un NULL Era necessario migliorare la sintassi per far richiedere esplicitamente la gestione del NULL La soluzione pertanto restringere la richiesta per segnalare il NULL alle sole UDF che sono in grado di interagire col nuovo scenario Per evitare di aggiungere nuove parole chiave la parola NULL viene aggiunta al tipo del parametro dell UDF senza effettuare altre modifiche Esempio declare external function sample int null 145 Funzioni esterne UDF returns int by value Usando gi le funzioni della ib_udf e per sfruttare segnalazione e riconoscimento del NULL in alcune funzioni ci si pu connettere al database e lanciare lo script misc upgrade ib_udf_upgrade sql che nella cartella di Firebird ed effettuare il commit Attenzione Si raccomanda di fare questo quando non ci sono altri utenti connessi al database Il codice nelle funzioni elencate in quello script stato modificato per riconoscere has il NULL solo quando viene segnala
51. dato 1 select ceil val from x 2 select ceil 2 1 ceil 2 1 from rdb database riporta 3 2 156 Le nuove funzioni integrate Funzione Formato Descrizione CHAR_LENGTH CHAR_LENGTH lt string gt Riporta il numero di caratteri in una stringa o un e lt string_expr gt JARACTER_LENGTH spressione select rdbSrelation_name char_length rdb relation_name char_length trim rdbSrelation_name from rdbSrelations COS COS lt number gt Valuta il coseno di un angolo espresso in radianti ri portando un valore compreso tra 1 ed 1 select cos x from y COSH COSH lt number gt Riporta il coseno iperbolico di un numero select cosh x from y COT COT lt number gt Riporta la cotangente cio 1 tan argument select cot x from y DATEADD Vedi sotto Riporta un valore date time timestamp aumentato o diminuito secondo quanto specificato Formato DATEADD lt number gt lt timestamp_part gt TO lt date_time gt DATEADD lt timestamp_part gt lt number gt lt date_time gt timestamp_part YEAR MONTH DAY HOUR MINUTE SECOND MILLISECOND 1 YEAR MONTH e DAY non possono essere usati con espression di tipo TIME 2 HOUR MINUTE SECOND e MILLISECOND non possono essere usati con espressioni di tipo DATE 3 Tutti i timestamp_part possono essere usati
52. e vengono invece tenute aggiornate nel file delle differenze fino alla fine dell integrazione Qui c almeno la met di tutta la logica di lettura e scrittura di NBak provata usando PIO modificato su file esistenti che contenevano dati sporchi NBackup Le responsabilit funzionali di NBackup sono 1 rendere possibile un modo conveniente di lanciare ALTER DATABASE BEGIN END BACKUP 2 sistemare il database dopo la copia del file cambiando fisicamente lo stato da nbak_state_diff a nbak_state_normal nella testata del database 3 creare e recuperare backup copie di sicurezza incrementali Le copie di sicurezza incrementali sono multi livello Ci significa che ad esempio facendo un backup di livello 2 ogni giorno ed un backup di livello 3 ogni ora ogni backup di livello 3 contiene tutte le pagine modificate dall inizio del giorno momento in cui stato fatto l ultimo backup di livello 2 fino al momento in cui viene fatto il backup di livello 3 Fare il backup Le copie incrementali seguono il seguente algoritmo 1 2 lanciano ALTER DATABASE BEGIN BACKUP per redirezionare le scritture al file delle differenze Controllano SCN e GUID del backup pi recente del livello precedente Accodano le pagine di database che hanno un SCN maggiore di quello trovato al passo 2 nel file di backup Scrivono il GUID della copia di livello precedente nell header rendendo possibile la verifica della consi sten
53. errore Datatype unknown SF Bug 1371274 che compariva tentando certi CAST stato elimi nato Ora possibile usare CAST per avvisare il motore del tipo di dato di certi parametri Esempio SELECT CAST AS INT FROM RDBSDATABASE 58 Novit nel Data Manipulation Language DML Argomenti espressione per SUBSTRING O Loa D Yemanov V 2 0 x La funzione integrata SUBSTRING pu ricevere ora nei parametri espressioni valutabili come interi Precedentemente la funzione integrata SUBSTRING poteva accettare solo valori interi come secondo e terzo parametro rispettivamente posizione iniziale e lunghezza Ora tali argomenti possono essere costituiti da qual siasi espressione che possa avere un valore numerico tra cui parametri host risultati di funzione espressioni subquery ecc ecc Suggerimento Se nel tentativo di usare questa caratteristica ci sono errori di invalid token ricordarsi che le espressioni usate negli argomenti spesso devono essere racchiuse tra parentesi tonde Modifiche ai risultati ottenuti da SUBSTRING V 2 1 x Per aderire allo standard la lunghezza in caratteri applicando una SUBSTRING ad un campo VAR CHAR o CHAR adesso un VARCHAR della stessa lunghezza dichiarata o dedotta per il valore del primo argomento In Firebird 2 0 e 1 5 il valore era un CHAR con la stessa lunghezza in caratteri del valore dichiarato o implicito ancora del primo argomento Tale r
54. essere molto migliorate scavalcando completamente il si stema operativo e recuperando il database direttamente su una periferica disco fisica Infatti un database Fire bird pu essere ricreato su un qualsiasi tipo di periferica a blocchi Spostare un database su una periferica fisica Spostare un database su una periferica fisica semplice come recuperare una copia direttamente su una partizione non formattata nel sistema di dischi locale Ad esempio gbak c miacopia fbk dev sda7 recupera la copia di nome miacopia fbk nel terzo disco logico della partizione estesa del primo disco rigido SCSI o SATA disk0 Nota Il database non ha altro nome che il nome della periferica stessa nell esempio dato il nome del database proprio dev sda7 Gestione particolare di nbak nbackup Per evitare che il file differenziale del programma di utilit fisico nbackup venga scritto nel direttorio dev bisogna attribuirgli un nome file completo in modo esplicito Questo si ottiene usando ad esempio ISQL attra verso il seguente comando 24 Miglioramenti di Firebird 2 1 isql dev sda7 SQL gt alter database add difference file tmp dev_sda7 Al fine di mantenere la copia fatta con nbak entro dimensioni ragionevoli utile sapere quanto spazio del disco stato al momento occupato Lo switch s di nbackup riporta la dimensione del database in pagine di database nbackup s 1 dev sda7 71173 Non va
55. gli utenti Firebird su un server Windows Vedere Sicurezza con Windows Trusted Users Supporto alle lingue internazionali Il comando CREATE COLLATION v 2 1 Il comando DDL CREATE COLLATION stato introdotto per creare un ordinamento lessicografico ovviando alla necessit di utilizzare uno script Vedere CREATE COLLATION Ordinamenti Unicode dovunque v 2 1 Due nuovi ordinamenti Unicode possono essere applicati ad ogni set di caratteri usando un nuovo mec canismo Vedere UNICODE Collations Nuove piattaforme supportate Windows 2003 64 bit D Yemanov Richieste CORE 819 e CORE 682 v 2 1 La piattaforma a 64 bit Windows AMD64 e Intel EM64T supportata per i modelli Classic Superserver ed Embedded Le novit di Firebird 2 Amministrazione Monitoraggio dei database attraverso SQL v 2 1 stato implementato un sistema di monitoraggio in tempo reale transazioni tabelle ecc in SQL attra verso nuove tabelle di sistema virtuali Vedere Monitoring Tables Nel set di tabelle ce n una chiamata MON DATABASE che contiene molte delle informazioni contenute nell header del database che non era possibile ottenere precedentemente in SQL si tratta di informazioni quali versione della struttura su disco ODS il dialetto SQL l intervallo di sweep OIT e OAT ed altro ancora Si pu utilizzare l informazione ottenuta dalle tabelle di monitoraggio per cancellare una query interminabile Vedere Cancel a
56. il database con l utilizzo di alcuni script Si raccomanda fortemente di disconnettersi e riconnettersi al database dopo ciascun passo Il database deve essere gi stato portato in ODS11 1 attraverso un ciclo di backup e di restore utilizzando gbak Ovviamente prima di iniziare a fare qualsiasi cosa farsi una copia di sicurezza del database Nell esempio seguente fbroot rappresenta il percorso del direttorio radice dell installazione di Firebird ad esempio opt firebird su Linux oppure C Programmi Firebird Firebird_2_1 su Windows Gli esempi indicano i percorsi per Linux Su Windows vanno indicati secondo il suo standard Creare le procedure nel database 1 isql percorso al tuo database fdb 2 SQL gt input fbroot misc upgrade metadata metadata_charset_create sql Verificare il database 1 isql percorso al tuo database fdb 2 SQL gt select from rdb check_metadata La procedura rdb check_metadata elenca tutti gli oggetti che verifica e Se non viene elevata nessuna eccezione i meta dati del database sono a posto e si pu proseguire alla sezione Rimuovere le procedure d aggiornamento e Altrimenti l ultimo oggetto listato prima dell eccezione quello che ha problemi Aggiustare i meta dati Per sistemare i meta dati bisogna sapere in che set di caratteri stato creato l oggetto Lo script d aggiornamento funziona correttamente solo se tutti 1 meta dati sono stati creati usando lo stesso set di
57. menti generali per Firebird 2 1 Quando il motore ha bisogno di pi spazio su disco alloca un blocco che 1 16 dello spazio gi occupato dal database ma non meno di 128 KB e non maggiore del valore di DatabaseGrowthIncrement Il valore di 149 Novit e modifiche nei parametri di configurazione DatabaseGrowthIncrement pu essere innalzato per aumentare la dimensione massima di allocazione dei nuovi blocchi dal default di 128 MB Impostandolo a zero si disabilita la preallocazione Nota e Il limite minimo della dimensione del blocco bloccato appositamente a 128 KB e non pu essere modi ficato e Non c preallocazione per i file ombra del database database shadow files e La preallocazione disabilitata per i database che hanno attiva l impostazione No reserve ExternalFileAccess A Peshkov Come modificata in Firebird 2 un nuovo file esterno viene creato per default nella directory specificata per prima in ExternalFilesAccess LegacyHash A Peshkov Questo parametro permette di rigettare in Firebird 2 un vecchio hash DES nel database di sicurezza aggiornato Se non si usa la procedura di aggiornamento del database di sicurezza questo parametro non influenza l opera tivit di Firebird Un hash DES non pu arrivare nel nuovo security2 fdb Vedere anche nella sezione relativa alla sicurezza in Security DB Upgrade per istruzioni sulle metodologie di aggiornamento da Firebird 1 5 del secu
58. necessario per costruire query ancora pi complesse e possono far parte di JOIN come se fossero normali tabelle o viste Altri dettagli in Tabelle derivate nel capitolo relativo al DML Le novit di Firebird 2 Supporto PSQL ai cursori nominativi D Yemanov Sono supportati pi cursori nominativi cio espliciti in PSQL e nello statement DSQL EXECUTE BLOCK Altre informazioni nel capitolo sul PSQL Cursori esplicitati Rifatto il protocollo su Windows D Yemanov Sono state fatte due modifiche sostanziali al protocollo in Windows Protocollo Locale XNET Firebird 2 0 ha modificato la precedente implementazione del protocollo di trasporto locale spesso chiamata IPC oppure IPServer con una completamente nuova chiamata XNET Ha esattamente lo stesso obiettivo permettere un modo efficiente di collegare un server locato sulla stessa macchina del client senza l uso di un nodo remoto nella stringa di connessione La nuova implementazione differente e risolve tutti i problemi noti del precedente sistema Come il vecchio IPServer anche XNET usa memoria condivisa per la comunicazione fra processi Tuttavia XNET elimina l uso di messaggi window per inviare richieste di connessione ed inoltre implementa una diversa logica di sincronizzazione Benefici di XNET rispetto IPServer Oltre a dare un protocollo di comunicazione pi robusto XNET porta con s alcuni evidenti benefici effetti e funziona col Classic Server e funzion
59. piena compatibilit con le versioni di Firebird precedenti impedendo l autenticazione trusted Authentication Trusted Il database della sicurezza viene ignorato e viene usata la sola autenticazione di Windows Sotto certi aspetti l autenticazione Windows pi sicura di quella nativa nel senso che non n pi n meno sicura del sistema operativo in cui gira Authentication Mixed Questa l impostazione di default Per mantenere il comportamento compatibile se sono impostate nell ambiente le variabili ISC_US ISC_PASSWORD queste vengono prese e usate al posto dell autenticazione trusted DG Re Nota L autenticazione trusted pu essere forzata a sovrastare le variabili d ambiente quando sono state impostate vedere le note qui sotto Forzare l autenticazione trusted Nel caso in cui sia necessaria l autenticazione trusted e c la possibilit di trovare impostate ISC_USER e ISC_ PASSWORD c un nuovo parametro in DPB che pu essere aggiunto al DPB isc_dpb_trusted_auth Molte delle utilit a linea di comando di Firebird supportano parametri attraverso lo switch tru sted la forma abbreviata disponibile secondo le regole usuali per abbreviare gli switch Nota Le utilit gli e nbackup non seguono questa linea esse usano switch a singola lettera che uno stile un po vecchiotto Lo switch per gli nel caso K Per nbackup invece spiegato qui sotto La possibilit di forz
60. risultati errati Esempio select from rdb relations where rdb relation_id lt select rdb relation_id from rdbSdatabase Questa query esegue solo una lettura da rdb database invece di valutare la subquery per ogni riga di rdb rela tions Supporto per la sintassi ROLLBACK RETAIN D Yemanov Firebird 2 0 aggiunge un opzionale clausola RETAIN allo statement DSQL ROLLBACK per renderlo sim metrico al COMMIT RETAIN 14 Le novit di Firebird 2 Vedere ROLLBACK RETAIN nel capitolo sul DML Nei server Win32 non viene pi letta la Registry D Yemanov La ricerca del direttorio radice stata modificata in modo tale che i processi server su Windows non cercano pi di leggere la Registry Importante Le utilit a linea di comando leggono e controllano ancora la Registry Altri miglioramenti all ottimizzatore A Brinkman Nelle procedure dell ottimizzatore sono stati migliorati i calcoli per la scelta degli indici 15 Capitolo 3 Modifiche alle API di Firebird e all ODS API Application Programming Interface Sono state effettuate alcune necessarie modifiche alle API di Firebird Queste includono Restrizioni nel DPB all utente generico A Peshkov Dalla versione 2 1 2 Alcuni parametri di DPB sono stati resi inaccessibili all utente generico in modo da chiudere alcuni buchetti pericolosi In alcuni casi questi riguardano impostazioni che potrebbero modificare le impostazioni nell he
61. server Firebird Questo pericolo specialmente per il Superserver che effettua fin dalla versione 1 5 un autenticazione dell utente molto veloce Il server Classic pi lento poich deve creare un nuovo processo per ogni connessione collegarsi al database della sicurezza attraverso quella connessione e preparare una richiesta alla tabella RDB USERS prima di poter validare login e password Il Superserver bufferizza le connessioni e le richieste permettendo una validazione dell utente molto pi veloce Data la lunghezza massima di 8 byte delle tradizionali password di Firebird l attacco brutale ha una ragionevole possibilit di successo per irrompere nell installazione Firebird La versione 2 0 del Superserver ha una protezione attiva per rendere pi difficili gli attacchi Dopo alcuni tentativi di accesso falliti l utente e l indirizzo IP vengono bloccati per alcuni secondi impedendo per un breve periodo ogni tentativo di accesso successivo con quel nome utente OPPURE da quel particolare indirizzo IP 123 Sicurezza Non sono richieste impostazioni o configurazioni per questa caratteristica Viene automaticamente attivata ap pena parte il SuperServer Firebird 2 0 Usare Windows Security per autenticare gli utenti Alex Peshkov V 2 1 A partire da Firebird 2 1 in poi si pu utilizzare la sicurezza di Windows Trusted User per autenticare gli utenti su una piattaforma Windows Il contesto di sicurezza della Trusted User
62. sono attivi al momento SELECT ATT MONSUSER ATT MONSREMOTE_ADDRESS S MONSSQL_TEXT STMT MONSTIMESTAMP FROM MONSATTACHMENTS AT JOIN MONSSTATEMENTS STMT ON ATT MONSATTACHMENT_ID STMT MONSATTACHMENT_ID WHERE ATT MONSATTACHMENT_ID lt gt CURRENT_CONNECTION AND STMT MONSSTATE 5 Listare gli stack delle chiamate per tutte le connessioni WITH RECURSIVE HEAD AS SELECT CALL MONSSTATEMENT_ID CALL MONSCALL_ID CALL MONSOBJECT_NAME CALL MONSOBJECT_TYPE FROM MONSCALL_STACK CALL WHERE CALL MONSCALLER_ID IS NULL UNION ALL SELECT CALL MONSSTATEMENT_ID CALL MONSCALL_ID CALL MONSOBJECT_NAME 116 Caratteristiche amministrative CALL MONSOBJECT_TYPE FROM MONSCALL_ STACK CALL JOIN HEAD ON CALL MONSCALLER_ID HEAD MONSCALL_ID SELECT MONSATTACHMENT_ID MONSOBJECT_NAME MONSOBJECT_TYPE FROM HEAD JOIN MONSSTATEMENTS STMT ON STMT MONSSTATEMENT_ID HEAD MONSSTATEMENT_ID WHERE STMT MONSATTACHMENT_ID lt gt CURRENT_CONNECTION Cancellare una query gi lanciata Le query interminabili e lunghe possono essere bloccate e cancellate da una connessione separata Non c nessu
63. supportato 65 521 il pi grande numero primo inferiore a 65 536 Il valore minimo 101 e il nuovo numero di default per gli hash slots stato impostato a 1009 e la dimensione della tabella di lock di default stata aumentata a 1 Mb su tutte le piattaforme Sconsigliate le dimensioni di pagina di 1K e 2K D Yemanov Caratteristica richiesta CORE 969 Sono sconsigliate le dimensioni di pagina da 1K e da 2K perch sono inefficienti Nota Questa restrizione alle pagine piccole si applica ai database nuovi ODS 11 e oltre Ci si pu collegare alle vecchie basi di dati indipendentemente dalla loro dimensione di pagina Problemi in allocazione su disco V Khorsun Caratteristica richiesta CORE 1229 Fino a Firebird 2 1 non essendoci regole particolari nell allocare lo spazio per le pagine dei file di database a causa delle dipendenze delle pagine che gestisce autonomamente per servire la strategia di careful write ha sempre scritto le nuove pagine appena allocate in ordine qualsiasi Per i database con ODS 11 1 e successive 1 server Firebird a partire dalla versione 2 1 usano un algoritmo per allocare lo spazio su disco per risolvere due problemi riconosciuti associati al sistema precedente 1 Disastri provocati da condizioni di disco pieno Nel momento in cui la memoria tampone ha tante pagine sporche dirty pages e Firebird ha necessit di chiedere lo spazio per una nuova pagina per scrive
64. un oggetto possono rilasciare i diritti su quell oggetto ad altri utenti Inoltre tali diritti possono essere resi ereditabili con la clausola WITH GRANT OPTION In tal caso il garante d al garantito i diritti di diventare a sua volta garante per lo stesso oggetto Il garante originale pu rimuovere questa concessione al garantito con il comando REVOKE GRANT OPTION FROM user Tuttavia c una forma secondaria che coinvolge i ruoli Invece di specificare gli stessi diritti per diversi utenti che presto diventa un incubo nella manutenzione si pu creare un ruolo assegnare a questo nuovo ruolo un insieme di diritti ed infine garantire quel ruolo ad uno o pi utenti Ogni modifica ai diritti del ruolo influenzer i diritti di tutti gli utenti a cui stato garantito quel ruolo Si dice anche che tutti gli utenti appartenenti a quel ruolo hanno i medesimi diritti Simmetricamente con la clausola WITH ADMIN OPTION il garante di solito il creatore del ruolo attribuisce ai garantiti la possibilit di diventare a loro volta garanti per lo stesso ruolo Fino a FB v2 questa abilit non poteva essere rimossa senza mettere mano direttamente alle tabelle di sistema Ora il garante originale pu rimuovere la concessione ad attribuire le garanzie del ruolo ad altri utenti con il comando REVOKE ADMIN OPTION FROM user Clausole di SET DROP DEFAULT per il comando ALTER TABLE C Valderrama I domini permettono di modificare o rimuovere i loro
65. viene passato al server Firebird e se ha successo viene usato per determinare la sicurezza in Firebird a partire dal nome utente Omettendo semplicemente i parametri utente e password dal DPB SPB si applica automaticamente l autentica zione attraverso Windows Trusted User in quasi tutti i casi Vedere la sezione sull Environment sotto per le eccezioni Esempio dimostrativo Supponiamo di entrare nel server Windows SRV con l utente Mario e di connettersi al server Firebird SRV con isgl senza specificare un utente ed una password Firebird in questo modo isql srv employee A questo punto si fa SQL gt select CURRENT_USER from rdbSdatabase si ottiene una cosa come USER SRV Mario Privilegi SQL Gli utenti Windows possono ricevere garanzie di accesso agli oggetti e ai ruoli del database allo stesso modo degli utenti Firebird standard similmente a quanto sempre stato disponibile per gli utenti dei database Firebird ospitati su Unix e Linux Amministratori Se un amministratore locale o un membro del gruppo predefinito di Amministratori di Dominio si connette a Firebird utilizzando l autenticazione trusted viene connesso come SYSDBA Configurazione del parametro Authentication Il nuovo parametro Authentication stato aggiunto in firebird conf per configurare il metodo si autentica zione in Windows I possibili valori sono 124 Sicurezza Authentication Native Permette la
66. w SQL gt select from t order by c collate unicode Sviluppi nella V 2 1 La versione 2 1 aggiunge delle funzionalit relative a 1 usarei set di caratteri ICU definendoli in fbintl conf 2 L ordinamento UNICODE charset_UNICODE disponibile per tutti set di caratteri in fbintl 3 attributi per usare gli ordinamenti 4 Frasi SQL per CREATE DROP COLLATION 5 Comando SHOW COLLATION ed estrazione degli ordinamenti in ISQL 6 Verifica della buona formattazione dei BLOB di testo 7 Translitterazione dei BLOB di testo in automatico Set di caratteri ICU Tutti i set di caratteri non grandi e basati su ASCII presenti in ICU possono essere usati da Firebird 2 1 Per ridurre la dimensione del kit in distribuzione si personalizzato ICU per includere solo i set di caratteri essenziali e quelli per i quali c stata una specifica richiesta Se il set di caratteri di cui si ha bisogno non incluso si possono sostituire le librerie ICU con altri moduli reperibili al nostro sito o gi installati nel sistema operativo Registrare un modulo per set di caratteri ICU Per usare un modulo per set di caratteri alternativo bisogna registrarlo in due parti 1 nel file di configurazione dei linguaggi del server int1 fbintl conf 2 in ogni database che richiede di usarlo Registrare un set di caratteri nel server Usando un editor di testi registrare il nuovo set di caratteri nel manifest file int 1 fbint1 conf come segue 104
67. zione degli utenti dove sono memorizzati i nomi e le password degli utenti stata rinominata RDBSUSERS Non esiste pi la tabella users ma una nuova vista su RDB USERS che nominata USERS Attraverso tale vista gli utenti possono cambiarsi le loro password Per dettagli sul nuovo database vedere Nuovo database della sicurezza nella sezione sull autenticazione pi oltre in questo capitolo Per istruzioni sul come aggiornare dalla precedente versione del database della sicurezza fare riferimento alla fine di questo capitolo alla sezione Gestione del nuovo database di sicurezza Usare il sistema di autenticazione degli utenti di Windows V 2 1 A partire da Firebird 2 1 si pu utilizzare il sistema di autenticazione degli utenti di Windows Trusted User security per verificare le credenziali degli utenti Firebird su una piattaforma Windows Il contesto degli utenti convalidati viene passato al server Firebird invece del nome utente e password e se positivo viene usato per determinare il nome utente Firebird Per dettagli vedere pi avanti la sezione Sicurezza con Windows Trusted Users Migliorata la crittografia delle password A Peshkov Il sistema di criptazione decriptazione delle password adesso usa un migliore algoritmo di calcolo Gli utenti possono modificarsi la password A Peshkov Il SYSDBA rimane il proprietario del database della sicurezza Tuttavia gli utenti possono modificarsi la loro propria passwor
68. 1 possono godere di alcuni benefici dalla riduzione dei round trips sebbene queste vecchie interfaccie a differenza delle nuove rispondono sempre con grossi pacchetti per la isc_dsql_prepare d Un altro risparmio nel round trip chiamato defer execute esecuzione ritardata in cui le richieste SE LECT vengono trattenute dal momento immediatamente precedente alla isc_dsql_execute fino alla 26 Miglioramenti di Firebird 2 1 chiamata API dello stesso statement Il beneficio diventa visibile sopratutto quando c una gran quantit di richieste SELECT il cui risultato riempie uno o due pacchetti di rete Questo funziona solo se il client ed il server sono v 2 1 o superiore Nota Un possibile effetto collaterale potrebbe avvenire se fallisse l i sc_dsql_execute con una eccezione tale eccezione viene allora riportata al client in risposta alla chiamata API che viene in quel momento eseguita in altre parole invece di essere riportato l errore dalla isc_dsql_execute verrebbe riportato da isc_dsql_fetch isc_dsql_info o qualsiasi altra chiamata API attualmente richiesta dalla chiamata op_execute Nella maggior parte dei casi l effetto collaterale sarebbe trasparente potrebbe mostrarsi nel caso in cui un qualche errore avvenga con valori default per parametri o variabili PSQL e verrebbe allora evidenziato come un vettore di eccezioni dove le eccezioni sono inviate in un insolita sequenza Le modifiche funzionano si
69. 1131_P100 1997 ibm 1131 ibm 1133_P100 1997 ibm 1133 ibm 1381_P110 1999 ibm 1381 urroman windows 10029 x mac c macc windows 10081 mactr hp roman8 roman8 r8 csHPRoman8 Adobe Standard Encoding Adobe Latinl cp1006 1006 cp1098 1098 cp1124 1124 cp1125 epIl13l cp1381 1381 ibm 37_P100 1995 ibm 37 IBM037 ibm 037 bcdic cp wt En coding bed ic cp us ebcdic cp ca bcdic cp nl csIBM037 cp037 037 cpibm37 cp37 ibm 273_P100 1995 ibm 273 IBM273 CP273 csIBM273 ebcdic de cpibm273 169 Set di caratteri internazionali 273 ibm 277_P100 1 ibm 278_P100 1 ibm 280_P100 1 cpibm280 280 ibm 284_P100 1995 ibm 284 cpibm284 284 ibm 285_P100 1995 ibm 285 ebcdic gb cpibm285 285 ibm 290_P100 1995 ibm 297_P100 1995 cpibm297 297 ibm 420_X120 1999 ibm 424_P100 1995 ibm 500_P100 1995 ebcdic cp ch cpibm500 500 ibm 290 ibm 297 ibm 420 ibm 424 ibm 500 ibm 803_P100 1999 ibm 803 ibm 838_P100 1995 ibm 838 ibm 870_P100 1995 ibm 870 ebcdic cp yu csIBM870 ibm 871_P100 1995 ibm 871 ebcdic is cpibm871 871 ibm 875_P100 1995 ibm 918_P100 1995 ibm 930_P120 1999 ibm 933_P1 ibm 935_P1 ibm 937_P1 ibm 939_P1 ibm 1025_P ibm 1026_P ibm 1047_P ibm 1097_P ibm 1112_P ibm 1122_P ibm 1123_P ibm 1130_P ibm 1132_P ibm 1140_P cpibml1l ibm 1141_ cpibml1l ibm 1142_ cpibml1l ibm 1143_ cpibml1l ibm 1144_ cpibml1l ibm 1145_ cpibml1l ibm 1146_ cpibml1l ibm 1147_ cpibml1l ibm 1
70. 123 END 90 Capitolo 8 Nuove parole chiave e modifiche Le seguenti parole chiave sono state aggiunte o hanno cambiato il loro stato a partire da Firebird 1 5 Quelle marcate con un asterisco non sono presenti nello standard SQL Nuove parole riservate BIT_LENGTH v 2 0 BOTH v 2 0 CHAR_LENGTH v 2 0 CHARACTER_LENGTH v 2 0 CLOSE v 2 0 CONNEC v 2 1 lt lt CROSS v 2 0 DISCONNECT v 2 1 lt lt F G I ETCH v 2 0 LOBAL v 2 1 lt lt NSENSITIVE v 2 1 lt lt sEADING v 2 0 sOWER v 2 0 OCTET_LENGTH v 2 0 OPEN v 2 0 RECURSIVE v 2 1 lt lt ROWS v 2 0 SENSITIVE v 2 1 lt lt START v 2 1 lt lt TRAILING v 2 0 TRIM v 2 0 Spostate da non riservate a riservate USING v 2 0 Parole chiave aggiunte come non riservate ABS v 2 1 lt lt ACCENT v 2 1 lt lt ACOS v 2 1 lt lt 91 Nuove parole chiave e modifiche ALWAYS v 2 1 lt lt ASCII_CHAR v 2 1 lt lt ASCII_VAL v 2 1 lt lt ASIN v 2 1 lt lt ATAN v 2 1 lt lt ATAN2 v 2 1 lt lt BACKUP v 2 0 BIN_AND v 2 1 lt lt BIN_OR v 2 1 lt lt
71. 148_ cpibml1l ibm 1149_ cpibmll ibm 1153_ TT B DOB TD BRT BRO BT BRD SB DW BD BW eS ibm 875 ibm 918 ibm 930 1995 ibm 277 IB csIBM277 ebcdic dk cpibm27 1995 ibm 278 IB csIBM278 ebcdic sv cpibm27 1995 ibm 280 IB 2 7 2 2 IBM2 IBM2 IB IB 2 2 IB IB IB 4 4 5 cp80 IB IBM8 IB IB IB 77 cp277 277 EBCDIC CP DK EBCD IC CP NO 78 cp278 278 80 CP280 84 CP284 85 CP285 90 97 cp290 cp297 20 24 00 cp420 cp424 CP500 3 70 CP870 bcdic cp fi ebcdic cp it ebcdic cp es ebcdic cp gb bed csIB csIB csIB EBCDIC UP kana cs ebcdic cp fr csIB 875 cp875 875 918 CP918 ebcdic cp ar2 csIBM918 ibm 5026 cp930 cpibm930 930 14 14 14 14 14 14 14 14 14 14 ic cp s 280 284 285 IBM2 90 2 97 ebcdic cp arl csIBM420 420 ebcdic cp he csIB ebcdic cp be csIB 424 424 500 Thai csIBMThai cp838 838 ibm 9030 bcdic cp roec 871 ebcdic cp is csIBM871 CP871 cp114 cp114 cp114 cp114 cp114 cp114 cp114 cp114 cp114 cp114 10 1995 ibm 933 cp933 cpibm933 933 10 1999 ibm 935 cp935 cpibm935 935 10 1999 ibm 937 cp937 cpibm937 937 20 1999 ibm 939 ibm 931 ibm 5035 cp939 939 100 1995 ibm 1025 cp1025 1025 100 1995 ibm 1026 IBM1026 CP1026 csIBM1026 1026 100 1995 ibm 1047 IBM1047 cpibm1047 100 1995 ibm
72. 155 Le nuove funzioni integrate Funzione Formato Descrizione ATAN2 lt number1 gt Riporta l arco tangente del rapporto number 1 num lt number2 gt ber2 Ripora un valore tra e select atan2 x y from z BIN_AND BIN_AND lt number gt Riporta l AND binario effettuato su tutti gli argo lt number gt menti presenti select bin_and flags 1 from x BIN_OR BIN_OR lt number gt Riporta l OR binario effettuato su tutti gli argomenti lt number gt presenti select bin_or flagsl flags2 from x BIN_SHL BIN_SHL lt n1 gt lt n2 gt Riporta lo shift left binario effettuato sugli argomenti interi n1 lt lt n2 select bin_shl flagsl 1 from x BIN_SHR BIN_SHR lt n1 gt lt n2 gt Riporta lo shift right binario effettuato sugli argo menti interi nl gt gt n2 select bin_shr flagsl 1 from x BIN_XOR BIN_XOR lt number gt Riporta lo XOR binario effettuato su tutti gli argo lt number gt menti presenti select bin_xor flagsl flags2 from x BIT_LENGTH BIT_LENGTH lt string gt Riporta la lunghezza di una stringa in bit lt string_expr gt select rdbSrelation_name bit_length rdb relation_name bit_length trim rdb relation_name from rdb relations CEIL CEIL CEILING lt number gt Riporta il pi piccolo intero maggiore o uguale all ar CEILING gomento
73. 22_VPUA IBM eucJP ibm 33722_P120 1999 ibm 33722 ibm 5050 cp33722 33722 ibm 33722_VASCII_VPUA ibm 954_P101 2000 ibm 954 100 2002 ibm 1373 windows 950 windows 950 2000 Big5 csBig5 windows 950 x big5 10 1999 ibm 950 cp950 950 macos 2566 10 2 Big5 HKSCS bigS5hk HKSCS BIG5 100 2003 ibm 1375 Big5 HKSCS 100 2002 ibm 1386 cp1386 windows 936 ibm 1386_VSUB_VPUA windows 936 2000 GBK CP936 MS936 windows 936 110 1999 ibm 1383 GB2312 csGB2312 EUC CN ibm eucCN hp15CN cp1383 1383 ibm 1383_VPUA 100 1995 ibm 5478 GB_2312 80 chinese iso ir 58 gb2312 1980 GB2312 1980 0 ibm 1373_P1 ibm 950_P11 ibm 1375_P1 ibm 1386_P1 ibm 1383_P1 ibm 964 ibm 949 ibm 949 ibm 970 EUC JP EUC TW ibm eucTW cns11643 cp964 964 cp949 949 ibm 949_VASCII_VSUB_VPUA cp949c ibm 949_VSUB_VPUA EUC KR KS_C_5601 1987 windows 51949 csEUCKR ibm eucKR KSC_5601 5601 ibm 970_VPUA ibm 5478_P1 csIS058GB231280 ibm 964_P110 1999 ibm 964_VPUA ibm 949_P110 1999 ibm 949_P11A 1999 ibm 970_P110 1995 ibm 971_P100 1 ibm 1363_VSUB_VPUA 1997 ibm 1 ibm 1363_P1 csKSC5601 ibm 1363_P1 L1B 1 1998 ibm 1 1995 ibm 971 ibm 971_VPUA 1363 KS_C_5601 1987 KS_C_5601 1989 KSC_5601 11987 korean iso ir 149 5601 cp1363 ksc windows 949 L10 1 1363 ibm 1363_VASCII_VSUB_VPUA windows 949 2000 windows 949 KS_C_5601 1987 KS_C_5601 1989 csKSC56011987 korean iso ir 149 ms949 KSC_5601 ibm 1162_P 100 1 ibm 874_P100 1 1999 ibm
74. 8859_7 IS0O08859_ 8 ISO8859_9 KOI8R KOI8U NEXT TIS620 WIN1250 WIN1251 WIN1252 WIN1253 WIN1254 WIN1255 WIN1256 WIN1257 and WIN1258 Insiemi di caratteri ICU UTF 8 ibm 1208 ibm 1209 ibm 5304 ibm 5305 windows 65001 cp1208 UTE 16 ISO 10646 UCS 2 unicode csUnicode ucs 2 UTE 16BE x utf 16be ibm 1200 ibm 1201 ibm 5297 ibm 13488 ibm 17584 windows 1201 cp1200 cp1201 UTF16_BigEndian UTE 16LE x utf 16le ibm 1202 ibm 13490 ibm 17586 UTF16_LittleEndian windows 1200 UTF 32 ISO 10646 UCS 4 csUCS4 ucs 4 UTE 32BE UTF32_BigEndian ibm 1232 ibm 1233 ignoto 166 Set di caratteri internazionali U UTF16_Platform UTF16_Opposite UTF32_ Platform UTF32_Opposite UTF 7 windows I SCSU BOCU 1 csBOCU CESU 8 F 32LE UTF32_LittleEndian Endian Endian Endian Endian 65000 IAP mailbox name 1 ibm 1234 1SO 8859 1 ibm 819 IBM819 cp819 latinl 8859 1 csISOLatinl iso ir 100 ISO_8859 1 1987 11 819 US ASCII ASCII ANSI_X3 4 1968 ANSI_X3 4 1986 ISO_646 irv 1991 iso_646 irv 1983 IS0646 US us csASCII iso ir 6 cp367 ascii 646 windows 20127 ISO_2022 locale ja version 0 ISO 2022 JP csISO2022JP ISO_2022 locale ja version 1 ISO 2022 JP 1 JIS JIS_Encoding ISO_2022 locale ja version 2 IS0O 2022 JP 2 csIS02022UP2 ISO_2022 locale ja version 3 JIS7 csJISEncoding ISO_2022 lo
75. E che FORCED WRITES TRUE che non avrebbero dato problemi connettendosi a Firebird 1 x 2 0 x o 2 1 0 2 1 1 tentando di connettersi a FB 2 1 2 e successivi come utente generico non SYSDBA la connessione viene rifiutata con ISC ERROR CODE 335544788 Unable to perform operation You must be either SYSDBA or owner of the database Impossibile effettuare l operazione Devi essere SYSDBA o proprietario del database Pulizia in ibase h D Yemanov A Peshkov Il file da includere in linguaggio C ibase h stato ripulito in modo tale che non siano pi incluse definizioni private nelle parti di interfaccia pubbliche Scadenza del blocco nelle transazioni WAIT A Karyakin D Yemanov Questa nuova caratteristica estende la gestione delle transazioni WAIT dando la possibilit di definire un tempo finito per la transazione corrente Alla scadenza viene lanciato un errore isc_lock_timeout Gli intervalli possono essere specificati a livello di transazione usando nell API la nuova costante di TPB isc_tpb_lock_timeout Nota L equivalente DSQL viene effettuato attraverso la clausola LOCK TIMEOUT lt value gt dello statement SET TRANSACTION isc_dsql_sql_info include ora anche gli alias della relazione D Yemanov Per ritrovare anche gli alias delle relazioni se necessario stata estesa la chiamata isc_dsql_sql_info Miglioramenti a isc_blob_lookup_desc A dos Santos Fernandes isc_blob_lookup_de
76. EPT D DEPARTMENT H INDENT FROM DEPARTMENT D JOIN DEPT_TREE ON D HEAD_DEPT H DEPT_NO SELECT D DEPT_NO D INDENT D DEPARTMENT AS DEPARTMENT B_1993 BUDGET AS B_1993 B_1994 BUDGET AS B_1994 B_1995 BUDGET AS B_1995 B_1996 BUDGET AS B_1996 FROM DEPT_TREE D LEFT JOIN DEPT_YEAR_BUDGET B_1993 ON D DEPT_NO B_1993 DEPT_NO AND B_1993 FISCAL_YEAR 1993 LEFT JOIN DEPT_YEAR_BUDGET B_1994 ON D DEPT_NO B_1994 DEPT_NO AND B_1994 FISCAL_YEAR 1994 LEFT JOIN DEPT_YEAR_BUDGET B_1995 ON D DEPT_NO B_1995 DEPT_NO AND B_1995 FISCAL_YEAR 1995 LEFT JOIN DEPT_YEAR_BUDGET B_1996 ON D DEPT_NO B_1996 DEPT_NO AND B_1996 FISCAL_YEAR 1996 48 Novit nel Data Manipulation Language DML La funzione LIST Oleg Loa Dmitry Yemanov v 2 1 Questa funzione riporta una stringa che il concatenamento di tutti i valori non NULL di un raggruppa mento Riporta NULL se non ci sono valori non NULL Formato lt list function gt LIST ALL DISTINCT lt espressione gt lt delimitatore gt lt delimitatore gt lt stringa gt lt parametro gt lt variabile gt Regole sintattiche 1 Se non si specifica n ALL e neppure DISTINCT si intende implicitam
77. ERT Se la JOIN non riporta nessun record non viene effettuata nessuna operazione e pertanto neanche la INSERT Esempio MERGE INTO customers c USING SELECT FROM customers_delta WHERE id gt 10 cd ON c id cd id WHEN MATCHED THEN UPDATE SE name cd name WHEN NOT MATCHED THEN INSERT id name VALUES cd id cd name Nuovi tipi di JOIN Adriano dos Santos Fernandes v 2 1 Sono stati introdotti due nuovi tipi di JOIN la join NAMED COLUMNS colonne in comune e la join NATURAL Sintassi e regole lt named columns join gt lt table reference gt lt join type gt JOIN lt table reference gt USING lt column list gt lt natural join gt lt table reference gt NATURAL lt join type gt JOIN lt table primary gt Named columns join colonne in comune 1 Tutte le colonne specificate nella lista di colonne lt column list gt devono esistere da entrambe le parti cio nelle tabelle destra e sinistra 2 Viene automaticamente creata una equi join lt tabella sinistra gt lt colonna gt lt tabella desta gt lt colonna gt per ogni colonna elencata e se ce n pi di una vengono fra di loro tutte collegate da AND 53 Novit nel Data Manipulation Language DML 3 Nella lista di campi specificati per l output della SELECT le colonne specificate in USING pos son
78. ES 3 333 END 1 Eccezione utente da un trigger SQL INSERT INTO ERR VALUES 2 2 Statement failed SQLCODE 836 exception 3 ID 2 At trigger ERR_BI 2 Eccezione utente da una procedura chiamata da un trigger SQL INSERT INTO ERR VALUES 3 3 Statement failed SQLCODE 836 exception 3 ID 3 At procedure ERR_1 At trigger ERR_BI 3 Eccezione in esecuzione in un trigger divisione per zero SQL INSI ERT INTO ERR VALU ES 4 4 Statement failed SQLCODE 802 arithmetic exception numeric overflow or string truncation At trigger ERR_BI SQL EXECUTE PROCE Statement failed exception 3 ID 3 At procedure DURE SOLCO ERR_L1 Eccezione utente da una procedura ERR_1 DI F Du 836 Eccezione utente da una procedura ad un livello pi profondo dello stack SQL EXECUTE PROCEDURE ERR_2 Statement failed SQLCODE 836 exception 3 ID 3 At procedure ERR_1 At trigger ERR_BI At procedure ERR_2 89 SQL Procedurale PSQL Chiamare una UDF come una procedura N Samofatov In PSQL le UDF supportate ad esempio RDB SET_CONTEXT possono essere chiamate come se fossero funzioni che non riportano nulla come le procedure dell Object Pascal Ad esempio BEGIN RDBSSET_CONTEXT USER_TRANSACTION MY_VAR
79. Firebird 1 5 e precedenti Le scansioni di tabelle da parte dell utente non rimuovono le versioni dei record non pi usate ma provocano la notifica al thread di GC di ogni pagina dove viene trovato una versione di record non pi usata Il motore inoltre ricorda quei numeri di pagina dove le frasi di UPDATE e DELETE hanno creato delle versioni obsolete e combined l installazione default per Superserver sono attivi sia il GC in background che il cooperativo 10 Le novit di Firebird 2 Nota Il server di tipo Classic ignora questo parametro e lavora sempre in modalit cooperativa Completamento della API di servizio al motore Classic N Samofatov E stato completata la codifica delle API di servizio per l architettura Classic Sono pertanto disponibili tutte le funzioni API sia su Linux che su Windows per i server Classic senza limitazione alcuna Sono state eliminate pure tutte le problematiche note riguardo agli errori di gsec riportate nelle precedenti versioni di Firebird Scadenza del tempo di blocco nelle WAIT Transactions A Karyakin D Yemanov Tutte le versioni di Firebird hanno due modi di attesa per le transazioni NO WAIT e WAIT Il modo NO WAIT significa che i conflitti di blocco e di abbraccio mortale deadlock sono riportati immediatamente mentre con WAIT la transazione attende bloccata finch le transazioni concorrenti finiscono venendo confermate commit o rinunciate rolled back Questa
80. Gli utenti pertanto de vono essere pratici della versione attuale delle API di servizio Il file di definizioni delle API ibase h nella cartella di installazione di Firebird include va preso come primaria fonte di informazioni su quanto disponibile supportato dalla lettura In inglese del manuale InterBase 6 0 beta API Guide Parametri Specificare il gestore del servizio Il primo parametro richiesto nella linea di comando il gestore dei servizi Services Manager a cui ci si vuole collegare e Per una connessione locale usare il semplice simbolo service_mgr e Per collegarsi ad un server remoto bisogna usare il formato con il nome del server nomeserver ser vice_mgr Specificare i successivi blocchi dei parametri di servizio SPB Successivamente vanno specificati gli SPB Service Parameter Block con eventuali valori richiesti Ogni SPB pu essere opzionalmente prefisso da un singolo simbolo Per le lunghe linee di comando che usual mente servono con fbsvcmgr l uso di uno migliora la leggibilit della linea di comando Confrontare ad esempio le seguenti sono linee di comando su singola linea ignorare gli a capo messi per necessit di stampa fbsvemgr service_mgr user sysdba password masterke action _db_stats dbname employee sts_hdr_ pages fbsvemgr service_mgr user sysdba password masterke action_db_stats dbnam mploy sts_hdr_pages Sintassi degli SPB La sintassi degli SPB che fbsv
81. L Disabilita le espansioni cambiando l ordine di un carattere in un gruppo di caratteri Valido per ordinamenti su set di caratteri ad un byte Formato DISABLE EXPANSIONS 0 1 Esempio DISABLE EXPANSIONS 1 ICU VERSION Specifica quale versione della libreria ICU deve essere usata I valori validi sono quelli definiti in nel file di configurazione int 1 fbint1l conf nella dichiarazione intl_module icu_versions Valido per UNICODE e UNICODE_ CI Formato ICU VERSION default major minor Esempio ICU VERSION 3 0 LOCALE Specifica un ordinamento locale Valido per UNICODE e UNICODE_CI Richiede la versione completa delle librerie ICU Formato LOCALE xx_XX Esempio LOCALE en_US MULTI LEVEL Usa pi di un livello per effettuare gli ordinamenti Valido per ordinamenti su set di caratteri ad un solo byte Formato MULTI LEVEL 01 1 Esempio MULTI LEVEL 1 SPECIALS FIRST Ordina i caratteri speciali spazi simboli ecc prima dei caratteri alfanumerici Valido per ordinamenti su set di caratteri a singolo byte Formato SPECIALS FIRST 01 1 Esempio SPECIALS FIRST 1 107 Supporto alle lingue internazionali INTL Modifiche agli ordinamenti in V 2 1 Spagnolo L ordinamento ES_ES come il nuovo ES_ES_CI_A I automaticamente usa gli attributi DISABLE COM PRESSIONS 1 SPECIALS FIRST 1 Nota Gli attributi sono memorizzati al momento della creazione del database pertanto tale modifica non si
82. L Stack Trace V Khorsun Le API client possono ora estrarre un semplice stack trace dallo Status Vector di errore quando avviene un ec cezione nell esecuzione di un PSQL stored procedure o trigger Uno stack trace rappresentato da ina stringa massimo 2048 byte e consiste di tutti i nomi di STORED PROCEDURE e TRIGGER a partire dal punto in cui avvenuta l eccezione risalendo fino alla chiamata pi esterna Se la traccia pi lunga di quanto specificato al momento viene troncata Elementi aggiuntivi sono in coda allo Status Vector come segue isc_stack_trace isc_arg_string lt string length gt lt string gt isc_stack_trace un nuovo codice di errore con valore 335544842L Esempi Creazione di metdata CREATE TABLE ERR ID INT NOT NULL PRIMARY KEY NAME VARCHAR 16 CREATE EXCEPTION EX Q bo D QO W D LA ve PROCEDURE ERR_1 AS BEGIN EXCEPTION EX ID 3 CREATE OR ALTER TRIGGER ERR_ BI FOR ERR BEFORE INSERT AS HEN EXCEPTION EX ID 2 IF NEW ID 3 HEN EXECUTE PROCEDURE ERR_1 88 SQL Procedurale PSQL IF NEW ID 4 THEN NEW ID 1 0 END CREATE OR ALTER PROCEDURE ERR_2 AS BEGIN INSERT INTO ERR VALU
83. N NEXT_TRANSACTION successivo numero di transazione MON PAGE_BUFFERS numero di pagine allocate in cache MON SQL_DIALECT dialetto SQL del database MON SHUTDOWN_MODE tipo di shutdown attuale 0 online 1 multi user shutdown 2 single user shutdown 3 full shutdown MON SWEEP_INTERVAL intervallo sweep MON READ_ONLY flag di sola lettura MON FORCED_WRITES flag forced writes attivo MON RESERVE_SPACE flag per spazio riservato MON CREATION_DATE data ed ora di creazione MONSPAGES numero di pagine allocate su disco MON BACKUP_STATE stato attuale di backup fisico 0 normal 1 stalled 2 merge MON STAT_ID ID della statistica MONS ATTACHMENTS connessioni correnti 112 Caratteristiche amministrative MON ATTACHMENT_ID ID della connessione MON SERVER_PID server process ID MONSSTATE stato della connessione 0 idle 1 active MON SATTACHMENT_NAME nome della connessione MONSUSER nome utente MON ROLE ruolo della connessione MON REMOTE_PROTOCOL nome del protocollo remoto MON REMOTE_ADDRESS indirizzo remoto MON REMOTE_ PID ID del processo client remoto MONS REMOTE_PROCESS pathname del processo client remoto MON CHARACTER_SET_ID character set della connessione MONSTIMESTAMP data ed ora della connessione MON GARBAGE_COLLECTION flag per la garbage collection MON STAT_ID ID della statistica e Le colonne MON REMOTE_ PID e M
84. Nuove parole chiave e modifiche iui ALL 91 Nuove parole riservate i lirica ala ian aio 91 Spostate da non riservate a riservate 0 0000000000000 000000000000 0000000006001 91 Parole chiave aggiunte come non riservate tetetete etere tetetettrerererereeeeererees 91 Parole chiave non pi riservate iiunsrinia alal aeneon iatale 93 Non pi riservate come parole chiave 93 9 Indici e GHtMIZZAZIONI dalia Dior ii iaia fisica 94 vi Firebird 2 1 Release Notes Ottimizzazioni In Vi2 l ia aio ln LR il ai alia 94 Clausola PLAN migliorata irriserva eiye iee E EEEE iaia iaia 94 Miglioramenti all ottimizzatore eseeesesesesererertrtrttttttttttttttttt ttt ttt ttt ttt ttr rte tetttetetetererererererees 94 Per tutti database tti riot iaren aaa a a aae E i aa i E NE ORE 95 Pert soli database in ODS II ose ese roert iiare ie T ee a a EE meee 96 Miglioramenti agli indici ina ino a a E une e ge Maes aa aih 97 Superato il limite a 252 byte per indice cece cece cecececeeeeeeeeeeeeeeeceeeeeeeeseeeeeeeeeeeeeees 97 Espressioni nesli indici ri er leali cai pena 97 Modifiche alla gestione dei NULL ecccccecccecececececeeeeeeeeeeeeeeeceeeeeeeeeceeeeeeeeeeeeeeeee se 98 Miglioramenti nella compressione degli indici 98 Manutenzione della selettivit per segmento eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
85. ON REMOTE_PROCESS sono valorizzate solo se il client di versione successiva alla 2 1 e La colonna MONSREMOTE_PROCESS pu contenere un valore che non un path se un applicazione ha specificato un nome di processo personalizzato attraverso un DPB e La colonna MON GARBAGE_COLLECTION indica se permesso il GC da questa connessione come specificato dal DPB in isc_attach_database MONS TRANSACTIONS transazioni in essere MON TRANSACTION_ID ID della transazione MON ATTACHMENT_ID ID della connessione MONSSTATE stato della transazione 0 idle stato dopo la prepare prima dell inizio dell esecuzione e dopo la chiusura del cursore 1 active stato durante l esecuzione e lettura del cursore MONSTIMESTAMP data ed ora di start della transazione MON TOP_TRANSACTION top transaction vedi sotto MON SOLDEST_TRANSACTION numero della Oldest Interesting Transaction locale MON SOLDEST_ACTIVE numero della Oldest Active Transaction locale MONSISOLATION_MODE isolation mode 0 consistency 1 concurrency 2 read committed record version 3 read committed no record version MON LOCK_TIMEOUT timeout per il lock 1 attesa infinita 0 nessuna attesa N timeout impostato ad N secondi MON READ_ONLY flag di sola lettura MON AUTO_COMMIT flag di auto commit MON AUTO_UNDO flag di auto undo vedi sotto MON STAT_ID ID della statistica 113 Caratteristiche amministrative e MONSTOP_TRANSACTION il l
86. PLAN T1 INDEX IDX1 CREATE INDEX IDX2 ON T2 COMMIT Lee SE COMPUTED BY EXTRACT YEAR FROM COL2 EXTRACT MONTH FROM COL2 LECT FROM T2 ORDER BY EXTRACT YEAR FROM COL2 EXTRACT MONTH FROM COL2 PLAN T2 ORDER IDX2 Nota 1 L espressione usata nel predicato della condizione deve essere identico all espressione usata nella dichia razione dell indice affinch il motore possa scegliere il percorso con accesso indicizzato L indice definito non sarebbe utilizzabile per l accesso o l ordinamento se le espressioni sono diverse 2 Le espressioni per gli indici hanno le stesse caratteristiche e limitazioni degli altri indici eccetto il fatto che per definizione non possono essere composite o multi segmento Modifiche alla gestione dei NULL V Khorsun A Brinkman Le chiavi a NULL sono ignorate per il controllo di unicit V Khorsun Se un nuovo valore introdotto in un indice univoco il motore salta tutte le chiavi a NULL prima di verificare se la chiave duplicata Questo da un miglioramento nelle prestazioni in quanto a partire dalla v 1 5 i NULL non vengono pi considerati duplicati I NULL sono ignorati nello scorrimento dell indice quando ha senso ignorarli A Brinkman Precedentemente le chiavi a NULL erano sempre lette per tutti i predicati A partire dalla v 2 0 le chiavi a NULL sono generalmente i
87. Per la lista completa con esempi vedere Funzioni integrate I BLOB corti possono trasformarsi in VARCHAR lunghi v 2 1 A vari livelli di valutazione il motore adesso tratta i BLOB di testo di dimensione entro i 32 765 byte come se fossero VARCHAR Pertanto funzioni come CASTO LOWER UPPERQ TRIM e SUBSTRING funzionano su questi BLOB cos come la concatenzione e l assegnazione ai tipi carattere Vedere Compatibilit fra testo e BLOB Uso di SUBSTRING con i BLOB di testo Se il primo argomento della funzione SUBSTRING un BLOB di testo riporta un BLOB e non pi un VARCHAR lt para gt SQL Procedurale Uso dei domini per definire variabili ed argomenti in PSQL v 2 1 Le variabili locali e gli argomenti di ingresso uscita PSQL per le stored procedure possono essere ora dichiarate usando i domini invece dei tipi di dato canonici Vedere Domini in PSQL Le novit di Firebird 2 COLLATE nelle Stored Procedure e nei Parametri v 2 1 Ordinamenti lessicografici possono essere applicati agli argomenti e alle variabili PSQL Vedere COL LATE nelle STORED PROCEDURE Miglioramenti nella gestione degli errori PSQL V Khorsun Richiesta CORE 970 v 2 1 Negli errori PSQL adesso sono evidenziati anche linea e colonna in cui avvenuto l errore Sicurezza Utenti autenticati attraverso la sicurezza di Windows v 2 1 Il sistema di validazione degli utenti di Windows pu essere utilizzato per autenticare
88. R EXCEPTION CREATE OR ALTER EXCEPTION crea un eccezione se non esiste gi oppure la modifica senza alcun effetto sulle sue dipendenze ALTER EXTERNAL FUNCTION C Valderrama x E stata implementato il comando ALTER EXTERNAL FUNCTION in modo da permettere la modifica dell entry_point o del module_name della dichiarazione di una UDF quando questa non pu essere ri mossa a causa di dipendenze attualmente insistenti sulla sua definizione COMMENT ON C Valderrama Il comando COMMENT ON stato implementato per permettere l inserimento di descrizioni e commenti nel metadata Syntax Pattern COMMENT ON DATABASE IS txt NULL COMMENT ON lt basic_type gt name IS txt NULL COMMENT ON COLUMN tblviewname fieldname IS txt NULL COMMENT ON PARAMETER procname parname IS txt NULL Una stringa vuota di commento cio equivale a NULL in quanto il codice interno nel caso DYN funziona in quel modo per i blob lt basic_type gt DOMAIN TABLE VIEW PROCEDURE 40 Novit sul Data Definition Language DDL TRIGGER EXTERNAL FUNCTION FILTER EXCEPTION GENERATOR SEQUENCE INDEX ROLE C C S HARACTER SET OLLATION ECURITY CLASS hon implementato in quanto il tipo nascosto Estensioni alle specifiche di CREATE VIEW D Yemanov Nelle specifiche di una vista si possono usare adess
89. Running Query Maggiori informazioni di contesto Nel contesto sono state aggiunte informazioni sulla versione del motore server in modo da recuperarle attraverso una SELECT alla funzione RDB GET_CONTEXT Vedere More Context Information Nuovo programma di utilit a linea di comando fbsvcmgr V 2 1 La nuova utility fbsvcmgr serve come interfaccia a linea di comando all API di servizio abilitando l accesso ad ogni servizio eventualmente abilitato in Firebird Sebbene ci siano molti strumenti di amministrazione che si interfacciano all API di servizio attraverso un inter faccia grafica il nuovo strumento risolve il problema degli amministratori che devono accedere a sistemi Unix remoti attraverso un interfaccia unicamente testuale Precedentemente una tale richiesta richiedeva un program matore Qui i dettagli Interfaccia remota v 2 1 Il protocollo remoto stato ampiamente migliorato per operare meglio nelle reti lente dal momento stesso in cui i driver vengono aggiornati per utilizzare le modifiche I controlli hanno mostrato una diminuzione di round trip API del 50 circa con una diminuzione del 40 dei round trip TCP Vedere Remote Interface Improvement Tabelle derivate A Brinkman Il supporto per le tabelle derivate in DSQL cio subqueries nella clausola FROM come definite nello standard SQL200X Una tabella derivata un set derivato da uno statement dinamico di SELECT Le tabelle derivate possono essere innestate se
90. SET_CONTEXT imposta un valore per la specificata variabile se possibile l accesso in scrittura La funzione riporta il valore 1 se la variabile esisteva gi valorizzata al momento della chiamata altrimenti riporta 0 Per eliminare una variabile da un contesto impostarla a NULL Nomi di spazi predefiniti Sono disponibili un certo numero di spazi di nomi prefissati USER_SESSION Permette l accesso a variabili definite dall utente specifiche per la sessione corrente Si possono definire ed impostare 1 valori a variabili con qualsiasi nome in questo contesto USER_TRANSACTION Offre le stesse possibilit del precedente per a livello di singola transazione SYSTEM Permette un accesso in sola lettura alle seguenti variabili predefinite NETWORK_PROTOCOL Il protocollo di rete utilizzato dal client per connettersi I valori attualmente definiti sono TCPv4 WNET XNET e NULL CLIENT_ADDRESS L indirizzo di rete del client remoto come stringa Il valore per i protocolli TCPv4 un indirizzo IP nella forma xxx xxx xxx xxx oppure per il protocollo XNET l ID del processo locale oppure per ogni altro protocollo NULL DB_NAME Nome canonico del database corrente Pu essere il nome dell alias se la connessione attra verso i nomi di file disabilitata con DatabaseAccess NONE in firebird conf oppure il nome del file completo per esteso ISOLATION_LEVEL Il livello di isolamento della transazio
91. SIX rererere 14 Rifatta la gestione degli invarianti in PSQL eee rene 14 Supporto per la sintassi ROLLBACK RETAIN cece ceeneeeeeececececeaaeaeeeeeeceeeceaaeaeeeseeees 14 Nei server Win32 non viene pi letta la Registry 0 ee eeeeseeeeeeeeneeennnneeeeseeeneeaeaeaeaeaeaeaees 15 Altri miglioramenti all ottimizzatore cece ceceeececececeeececececececececeseeeeeeeeeseeeeeeeeeees 15 3 Modifiche alle API di Firebird e all ODS eee eee re rene ne rene zenenee 16 API Application Programming Interface eeeeeeeeeeeeeeeeeeeneeeeeeeseeeseeaaeaeaeaeaeaeaeaeaeaeaeaees 16 Restrizioni nel DPB all utente generico iii ieri rene re nere ne nere ne rene ne nere ne nere nenenenenee 16 Pulizia in ibasel anta Male an iaia ih za 17 Scadenza del blocco nelle transazioni WAIT eeececececececececececececeeeseeeeeeeeeeeeeeeens 17 isc_dsql_sql_infoQ include ora anche gli alias della relazione n 17 Miglioramenti a isc_blob_lookup_desc i 17 API identifica la versione del client daai E EE E REA 17 Aggiunte alla struttura isc_database_inf0 iene rene re nere ne nere ne rene ne nenenee 18 Aggiunte alla struttura isc_transaction_info 18 iv Firebird 2 1 Release Notes Miglioramenti alle API di Servizio inr nb E E E E E EE ER E 19 Nuo
92. WARRANTY OF ANY KIND either express or implied See the License for the specific language governing rights and limitations under the License The Original Code was created by Alex Peshkov on 16 Nov 2004 for the Firebird Open Source RDBMS project Copyright c 2004 Alex Peshkov and all contributors signed below All Rights Reserved Contributor s 1 temporary table to alter domains correctly CREATE TABLE UTMP USER_NAME VARCHAR 128 CHARACTER SET ASCII SYS_USER_NAME VARCHAR 128 CHARACTER SET ASCII GROUP_NAME VARCHAR 128 CHARACTER SET ASCII UID INTEGER GID INTEGER PASSWD VARCHAR 64 CHARACTER SET BINARY PRIVILEGE INTEGER COMMENT BLOB SUB_TYPE TEXT SEGMENT SIZE 80 CHARACTER SET UNICODE_FSS FIRST_NAME VARCHAR 32 CHARACTER SET UNICODE_FSS DEFAULT _UNICODE_FSS MIDDLE_NAME VARCHAR 32 CHARACTER SET UNICODE_FSS DEFAULT _UNICODE_FSS LAST_NAME VARCHAR 32 CHARACTER SET UNICODE_FSS DEFAULT _UNICODE_FSS 172 Aggiornamento del Database della Sicurezza per Firebird 2
93. XECUTE BLOCK X INTEGER X RETURNS Y VARCHAR AS DECLARE V INTEGER BEGIN INSERT INTO T VALUES X 7 SELECT FROM T INTO Y SUSPEND END Il comando SQL preprocessato deve essere EXECUTE BLOCK X INTEGER RETURNS Y VARCHAR AS DECLARE V INTEGER BEGIN INSERT INTO T VALUES X 7 SELECT FROM T INTO Y SUSPEND END Tabelle derivate Derived Tables oppure DT A Brinkman Il supporto per le tabelle derivate in DSQL che sono sottoquery poste nella clausola FROM stato aggiunto come definito nello standard SQL200X Una tabella derivata un insieme di righe ottenute da una frase SELECT dinamica Le tabelle derivate possono essere innestate se necessario per costruire complesse query e possono far parte di JOIN come se fossero normali tabelle o viste 62 Novit nel Data Manipulation Language DML Sintassi SELECT lt elenco di selezioni gt FRO lt elenco riferimenti tabellari gt lt elenco riferimenti tabellari gt lt riferimento tabellare gt lt virgola gt lt riferimento tabellar lt riferimento tabellare gt lt tabella primaria gt lt tabella di join gt lt tabella primaria gt lt tabella gt AS lt pseudonimo gt lt tabella derivata gt lt tabella derivata gt lt espressione query gt AS lt pseudonimo gt lt parentesi aperta
94. YS AS PK 1 CREATE SEQUENCE D Yemanov x E stata introdotta la parola chiave SEQUENCE come sinonimo di GENERATOR in accordo con lo standard SQL 99 SEQUENCE un termine descritto nelle specifiche SQL mentre GENERATOR un termine compa tibile InterBase L uso della sintassi standard SEQUENCE raccomandata nelle applicazioni Un generatore di sequenza un meccanismo per generare valori numerici interi incrementali uno alla volta Un generatore di sequenza un oggetto dello schema con nome che in dialetto 3 BIGINT mentre in dialetto 1 INTEGER Sintassi REATE SEQUENCE GENERATOR lt nome gt ROP SEQUENCE GENERATOR lt nome gt GENERATOR lt nome gt TO lt valore_partenza gt sTER SEQUENCE lt nome gt RESTART WITH lt valore_partenza gt EN_ID lt nome gt lt valore_di_incremento gt EXT VALUE FOR lt nome gt zoapnvoa Get Esempi 1 CREATE SEQUENCE S_EMPLOYEE 38 Novit sul Data Definition Language DDL ALTER SEQUENCE S_EMPLOYEE RESTART WITH 0 Vedere anche le note su NEXT VALUE FOR Avvertimento ALTER SEQUENCE come SET GENERATOR un bel modo per rovinare la generazione dei valori delle chiavi REVOKE ADMIN OPTION D Yemanov SYSDBA il creatore del database ed il proprietario di
95. YS_USER_NAME RDBSUSER_NAME RDB GROUP_NAME RDBSUSER_NAME RDBSUID RDBSUID RDBSGID RDBSGID RDBSPASSWD RDBSPASSWD SEE NOTE BELOW Privilege level of user mark a user as having DBA privilege RDB PRIVILEGE RDBSUSER_PRIVILEGE RDBSCOMMENT RDBSCOMMENT RDB FIRST_NAME RDB NAME_PART RDB MIDDLE_NAME RDB NAME_PART RDB LAST_NAME RDB NAME_PART COMMIT 173 Aggiornamento del Database della Sicurezza per Firebird 2 CREATE VIEW USERS USER _NAME SYS_USER NAME GROUP_NAME UID GID PASSWD PRIVILEGE COMMENT FIRST_NAME MIDDLE_NAME LAST_NAME FULL NAME AS E T SELECT RDB USER_NAME RDBSSYS_USER_NAME RDBSGROUP_NAME RDBSUID RDBSGID RDB PASSWD RDBSPRIVILEGE RDB COM RDBSFIRST_NAME RDBSMIDDLE_NAME RDB LAST_NAME RDBSfirst_name _UNICODE_FSS RDB middle_ name _UNICODE_FSS RDBSlast_name FROM RDBSUSERS WHERE CURRENT _USER SYSDBA OR CURRENT_USER RDBSUSERS RDBSUSER_NAME Gis a H COMMIT GRANT ALL ON RDB USERS to VIEW USERS GRANT SELECT ON USERS to PUBLIC GRAN E PASSWD GROUP_NAME UID GID FIRST_NAM MIDDLE_NAME LAST_NAME ON USERS TO PUBLIC COMMIT mo W Fl
96. _P100 1999 ibm 922 cp922 922 ibm 4909_P100 1999 ibm 4909 ibm 5346_P100 1998 ibm 5346 windows 1250 cp1250 ibm 5347_P100 1998 ibm 5347 windows 1251 cp1251 ibm 5348_P100 1997 ibm 5348 windows 1252 cp1252 ibm 5349_P100 1998 ibm 5349 windows 1253 cp1253 ibm 5350_P100 1998 ibm 5350 windows 1254 cp1254 ibm 9447_P100 2002 ibm 9447 windows 1255 cp1255 windows 1256 2000 windows 1256 cp1256 ibm 9449_P100 2002 ibm 9449 windows 1257 cp1257 ibm 5354_P100 1998 ibm 5354 windows 1258 cp1258 ibm 1250_P100 1995 ibm 1250 windows 1250 ibm 1251_P100 1995 ibm 1251 windows 1251 ibm 1252_P100 2000 ibm 1252 windows 1252 ibm 1253_P100 1995 ibm 1253 windows 1253 ibm 1254_P100 1995 ibm 1254 windows 1254 ibm 1255_P100 1995 ibm 1255 ibm 5351_P100 1998 ibm 5351 windows 1255 ibm 1256_P110 1997 ibm 1256 ibm 5352_P100 1998 ibm 5352 windows 1256 ibm 1257_P100 1995 ibm 1257 ibm 5353_P100 1998 ibm 5353 windows 1257 ibm 1258_P100 1997 ibm 1258 windows 1258 macos 0_2 1 macos 6 10 macos 7_3 1 10 2 macintosh mac csMacintosh windows 10000 2 x mac greek windows 10006 macgr 10 2 x mac cyrillic windows 10007 maccy macos 29 10 2 x mac central macos 35 10 2 x mac turkish ibm 1051_P100 1995 ibm 1051 ibm 1276_P100 1995 ibm 1276 csAdobeStandardEncoding ibm 1277_P100 1995 ibm 1277 ibm 1006_P100 1995 ibm 1006 ibm 1098_P100 1995 ibm 1098 ibm 1124_P100 1996 ibm 1124 ibm 1125_P100 1997 ibm 1125 ibm 1129_P100 1997 ibm 1129 ibm
97. a con TCP IP che con NetBEUI Sono compatibili con le versioni precedenti pertanto le applicazioni esistenti restano funzionali Tuttavia usando un strato software che implementa una propria versione del protocollo remoto come Jaybird JDBC driver ed il FirebirdClient NET driver il codice esistente non in grado di abilitare questi miglioramenti a meno di non aggiornare anche gli strati software intermedi Modifiche alle API XSQLVAR A dos Santos Fernandes Per passare l identificatore del set di caratteri della connessione oppure il set di caratteri di un BLOB quando il set di caratteri della connessione NONE si usa l elemento XSOLVAR sqlscale dei BLOB di tipo testo Ottimizzazione Ottimizzazione per scansioni multiple degli indici V Khorsun Caratteristica richiesta CORE 1069 Nel caso in cui pi di un indice deve essere letto a causa di congiunzioni AND stata operata una ottimizzazione Ottimizzate varie operazioni bitmap V Khorsun Caratteristica richiesta CORE 1070 27 Miglioramenti di Firebird 2 1 Nel caso in cui i valori sono per lo pi consecutivi sono state ottimizzate le operazioni bitmap set test e clear Configurazione e regolazione Aumentati i limiti ed i default del Lock Manager D Yemanov Caratteristiche richieste CORE 958 e CORE 937 e stato aumentato il massimo numero di hash slot da 2048 a 65 536 Poich il valore da usare deve essere un numero primo il massimo
98. a con servizi non interattivi e le sessioni terminali e elimina i blocchi quando vengono tentate una certo numero di connessioni contemporanee Prestazioni Ci si aspetta che XNET sia un po pi veloce di IPServer o al peggio uguale Svantaggi L unico svantaggio che sono fra loro incompatibili Questo fa s che la versione di fbclient dll debba per forza essere identica alla versione del server che si sta usando fbserver exe o fb_inet_server exe Non possibile instaurare una connessione locale se questo dettaglio viene ignorato Una connessione TCP localhost attraverso tra client e server disaccoppiati risolve il problema naturalmente Modifiche al protocollo WNET NetBEUI Il protocollo WNET noto anche come NetBEUI non permette pi la personificazione del client Le novit di Firebird 2 In tutte le precedenti versioni di Firebird le richieste remote attraverso WNET venivano eseguite nel contesto di un client security token Poich il server soddisfa ogni connessione in accordo alle sue credenziali di sicurezza questo significa che se la macchina client in un sistema operativo interno ad un dominio NT quell utente dovrebbe avere permessi fisici appropriati per accedere al file del database alle librerie UDF ecc nel sistema di file del server Questa situazione contraria a quanto generalmente viene visto come un appropriata impostazione per proteggere i database in un sistema client server Tale pers
99. a directory di installazione di Firebird cercando di connettervisi si riceve il messaggio d errore Cannot attach to password database Impossibile collegarsi al database delle password Le cosa stanno cos per scelta progettuale Un database della sicurezza di una versione precedente di Firebird non pu essere utilizzato direttamente in Firebird 2 0 o successivi Il database della sicurezza rinnovato nella struttura si chiama security2 fdb x Per riutilizzare un vecchio database della sicurezza necessario lanciare lo script di aggiornamento security_database sql che nella sotto cartella upgrade dell installazione del server Firebird Nota Una copia dello script anche in Appendice C Effettuare l aggiornamento del DB della sicurezza Per effettuare tale aggiornamento seguire questa procedura 1 mettere il vecchio database della sicurezza in un posto sicuro ma non nella cartella della nuova installazione di Firebird Farne una copia per tenerla comunque a disposizione 2 Far partire Firebird 2 usando il suo originale nuovo security2 fdb 3 Convertire il vecchio database della sicurezza a ODS11 cio farne il backup ed il restore usando Firebird 2 0 Senza questo passo lo script security_database sql non funzioner 4 Connettersi a quest ultimo dopo il restore come SYSDBA e lanciare lo script 5 Fermareil servizio Firebird 6 Copiare il database aggiornato nella cartella di installazione di
100. a linea non cambia e rimane fissato a 32767 byte Migliorato l aiuto da comando M Kubecek Se si adoperano dei parametri sconosciuti isql mostra tutti i suoi parametri da linea di comando e la relativa spiegazione invece sella semplice lista di switch permessi opt firebird bin isql Unknown switch usage isql options lt database gt a all extract metadata incl legacy non SQL tables b ail bail on errors set bail on c ache lt num gt number of cache buffers ch arset lt charset gt connection charset set names d atabase lt database gt database name to put in script creation e cho echo commands set echo on ex tract extract metadata i nput lt file gt input file set input m erge merge standard error m2 merge diagnostic n oautocommit no autocommit DDL set autoddl off now arnings do not show warnings o utput lt file gt output file set output pag elength lt size gt page length p assword lt password gt connection password q uiet do not show the message Use CONNECT r ole lt role gt role name r2 lt role gt role uses quoted identifier sqldialect lt dialect gt SQL dialect set sql dialect t erminator lt term gt command terminator set term u ser lt user gt user name X extract metadata z show program and server version gsec per l autenticazione Le modifiche all utilit gsec includono 142 Utilit a linea di com
101. abile di contesto CURRENT_TIMESTAMP ed il letterale NOW ora riportano le frazioni di secondo in millisecondi Specificabile la precisione in secondi in CURRENT_TIME e CURRENT_TIMESTAMP CURRENT_TIME e CURRENT_TIMESTAMP ora possono opzionalmente specificare una precisione nei se condi La caratteristica disponibile sia in DSQL che in PSQL Sintassi CURRENT_TIME lt precisione gt CURREN IMESTAMP lt precisione gt Esempi 1 SELECT CURRENT_TIME FROM RDBSDATABASE 2 SELECT CURRENT_TIME 3 FROM RDBSDATABASE 3 SELECT CURRENT_TIMESTAMP 3 FROM RDBSDATABASE 70 Novit nel Data Manipulation Language DML Nota 1 La massima precisione specificabile 3 che significa l accuratezza ad un millesimo di secondo Questa precisione potrebbe essere aumentata in futuro 2 Senonsispecifica la precisione i valori di default impliciti sono e 0 per CURRENT_TIME e 3 per CURRENT_TIMESTAMP Nuove funzioni di sistema per gestire le variabili di contesto N Samofatov I valori delle variabili di contesto possono ora essere ottenuti usando le funzioni di sistema RDB GET_CONTEXT e RDB SET_CONTEXTO Queste nuove funzioni integrate accedono in SQL ad infor mazioni relative alla connessione e transazione attuali Attraverso di esse possibile ora gestire dati di contesto definiti dall utente associandoli alla transazione o alla connessione
102. ader del database e potenzialmente provocare disastri se non effettuate sotto il controllo dell amministratore in altri iniziano operazioni che sono riservate al solo SYSDBA Esse sono e isc_dpb_shutdown and isc_dpb_online e isc_dpb_gbak_ attach isc_dpb_gfix_attach and isc_dpb_gstat_attach e isc_dpb_verify e isc_dpb_no_db_triggers e isc_dpb_set_db_sql_dialect e isc_dpb_sweep_interval e isc_dpb_force_write e isc_dpb_no_ reserve e isc_dpb_set_db_readonly e isc_dpb_set_page_buffers on Superserver Il parametro isc_dpb_set_page_buffers pu essere ancora usato da utenti generici in architetture Classic per impostare temporaneamente la dimensione del buffer solo per quella sessione di quel particolare utente Quando usato dal SYSDBA in entrambe le architetture Superserver o Classic modifica il numero dei buffers direttamente nell header del database facendo pertanto una modifica permanente alla dimensione di default del buffer 16 Modifiche alle API di Firebird e all ODS Per gli sviluppatori ed utenti di software ed interfacce per l accesso ai dati Questa modifica coinvolge tutti i parametri di DPB elencati che sono esplicitamente impostati sia includendoli nel DPB attraverso valori di default delle propriet o abilitandoli in strumenti o applicazioni che accedono al database come utenti ordinari Per esempio un applicazione Delphi che imposta nelle propriet dei parametri del database sia RESERVE PAGE SPACE TRU
103. ae e Eie a e aa e Eea taea de idee ai 8 Tabelle de rivate vidienes erei ili Te e e EE S T e T ni lhi 8 Supporto PSQL ai cursori nominativi cece cece cece ceceeececececececececececeeeceseeeeeeeeeeeeeeeeeees 9 Rifatto il protocollo su Windows eanes eee Ea e e a aT E T 9 Rielaborazione del sistema di Garbage Collection 10 Completamento della API di servizio al motore Classic 11 Scadenza del tempo di blocco nelle WAIT Transactions eee eeeeeeeeeeeeeeeeeeeeeeeeeeeeeneeees 11 Nuova implementazione degli operatori di ricerca nelle stringhe seeeeseseseeeeeeeeeeeneneeees 11 Rifacimento delle viste aggiornabili eeeeeeeecececececeeececececececeeececeseeeeeeeeeeeeeeeeeess 11 Introduzione di modalit addizionali di spegnimento 12 Migliorata la gestione dei NULL nelle UDF eee ener 12 Controllo in Run time per il sovradimensionamento in concatenazione 12 Modifiche alla logica di sincronizzazione iii 13 Supporto alle piattaforme a 64 bit eee eeeeeeeeereeeeeeeeeeeeeeeeeeeseeeseeeseeeeeeeneeeeeeeege 13 Aumentati i limiti di conteggio dei record eececccececeeeceeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeess 13 Miglioramenti peril debugging ojear naz enel eri 13 Migliorata la gestione delle connessioni su Superserver PO
104. ando valore di ritorno per gsec C Valderrama gsec adesso riporta un codice di errore quando non viene usato interattivamente Zero indica successo ogni altro valore indica problemi gfix utilit del server Le modifiche apportate alla utilit gfix includono Nuovi stati 0 modi di shutdown N Samofatov D Yemanov Le opzioni di gfix shut down sono state estese per includere i due stati o modi extra per gestire lo shutdown Nuova sintassi gfix lt comando gt lt stato gt lt opzioni gt lt comando gt shut online lt stato gt normal multi single full lt opzioni gt force lt timeout gt tran attach stato normal database online stato multi modo shutdown multi utenza quello compatibile permesse connessioni illimitate da SYSD BA proprietario stato single shutdown in singola utenza solo una connessione permessa usato dal processo di restore stato full shutdown completo o esclusivo non sono permesse connessioni Nota Multi lo stato di default per il comando shut normal invece quello del comando online I modi possono essere modificati sequenzialmente secondo questo ordine normal lt gt multi lt gt single lt gt full Esempi gfix shut single force 0 gfix shut full force 0 gfix online singl gfix online 143 Utilit a linea di comando Non si pu usare shut per fa
105. anti select tan x from y TANH TANH lt number gt Riporta la tangente iperbolica di un numero select tanh x from y TRIM Vedi sotto V 2 0 x Elimina i caratteri terminali per default gli spazi dalla fine sinistra e o destra di una stringa se condo quanto specificato TRIM lt left paren gt lt trim specification gt lt trim character gt FROM lt value expression gt lt right paren gt lt trim specification gt LEADING TRAILING BOTH lt trim character gt lt value expression gt Regole 1 Se non si specifica lt trim specification gt si assume BOTH 2 Se manca il lt trim character gt si assume 3 Se sono specificati lt trim specification gt e o lt trim character gt deve esserci anche FROM 163 Le nuove funzioni integrate Funzione Formato Descrizione 4 Se mancano sia lt trim specification gt che lt trim character gt FROM non va aggiunto Esempio A select rdb relation_name trim leading RDB from rdb relation_name from rdb relations where rdb relation_ name starting with RDB Esempio B select trim rdb relation_name is a system table from rdb relations where rdb system_ flag 1 TRUNC TRUNC lt number gt Riporta la parte intera di un numero fino ad una scala lt number gt specificata 1 select trunc x from y 2 select trunc 2 8 trunc 2 8 from rdbSdatabase
106. applica a database con ODS precedente alla 11 1 L ordinamento ES_ES_CI AI stato standardizzato all uso corrente UTF 8 Ordinamento insensibile alle maiuscole per UTF 8 Vedere la richiesta CORE 972 Conversione del testo dei meta dati La versione 2 0 x di Firebird aveva due problemi relativi al set di caratteri ed all estrazione dei meta dati 1 Creando o modificando gli oggetti il testo associato ai meta dati non viene traslitterato dal set di caratteri del Client a quello del sistema UNICODE_FSS per tali colonne BLOB Invece venivano memorizzati i bytes cos come stavano nudi e crudi I tipi di testo influenzati da questa cosa erano i sorgente PSQL le descrizioni testi associati a vincoli ed indici e cos via Nota Anche nella versione attuale 2 1 x il problema pu ancora accadere se un operazione CREATE oppure ALTER viene effettuata col set di caratteri della connessione a NONE o UNICODE_FSS e si usano dati non UNICODE_FSS 2 Leggendo i BLOB di testo la translitterazione dal set di caratteri del BLOB al set di caratteri client non veniva effettuata Riparare il testo dei meta dati Se i meta dati del tuo database sono stati creati con una codifica non ASCII bisogna riparare il database per poter leggere i meta dati correttamente dopo un aggiornamento alla versione 2 1 108 Supporto alle lingue internazionali INTL Importante La procedura e composta da pi passaggi attraverso
107. are l esecuzione al primo errore incontrato Non verranno pi eseguiti i successivi comandi dello script in ingresso e isql riporta un codice di errore al sistema operativo e Sono stati coperti sicuramente la maggior parte dei casi ma siccome questo un lavoro in itinere se si dovessero trovare eventualmente degli errori non riconosciuti dalla isql bisognerebbe informarne il progetto 137 Utilit a linea di comando Al momento non si differenzia per tipo o codice di errore qualsiasi valore riportato diverso da zero deve essere considerato un errore In funzione di altre opzioni come o m e m2 isql pu mostrare il messaggio d errore su video oppure inviarlo ad un file Alcune caratteristiche e Anche se si eseguono script annidati isql termina qualsiasi esecuzione e ritorna al sistema operativo non appena incontra un errore Si possono ottenere script annidati quando uno script A richiamato nella linea di comando contiene a sua volta il comando INPUT per caricare lo script B e cos via Isql non effettua controlli culla recursione diretta o indiretta pertanto se il programmatore sbaglia e lo script A chiama s stesso o carica uno script B che a sua volta richiama A isql continua finch esaurisce la memoria o il database riporta un errore al che se stato attivato bail ferma ogni attivit ed esce e Gli errori di DML sono colti durante la preparazione o l esecuzione ci dipende dal tipo di errore e In molti cas
108. argli l autenticazione trusted deve essere ancora implementata Esempio C Pr bin gt isgl srv db entra usando l autenticazione trusted C Pr bin gt set ISC_USER utentel C Pr bin gt set ISC_PASSWORD 12345 C Pr bin gt isgl srv db entra usando utentel specificato nell ambiente C Pr bin gt isgql trust srv db entra usando l autenticazione trusted Importante Le regole in Windows per i nomi utente nei domini permettono nomi pi lunghi del massimo di 31 caratteri permesso da Firebird per i nomi utente Il limite di 31 caratteri assicurato e a partire dalla V 2 1 viene disa bilitata la possibilit di entrare con nomi pi lunghi Questa rimane la situazione finch non verr implementata in una futura versione di Firebird la mappatura degli oggetti del sistema operativo con gli oggetti del database 125 Sicurezza Il Server Classic in POSIX Per ragioni sia tecniche che storiche il server Classic in POSIX con client embedded particolarmente vulnera bile riguardo alla sicurezza Gli utenti che accedono ai database attraverso l embedded DEVONO almeno avere i diritti di accesso in lettura al database della sicurezza Questa la principale ragione che ha determinato la necessit di implementare una migliore crittazione delle password Un utente malevolo con accesso utente a Firebird avrebbe potuto facilmente fare una copia del data base della sicurezza portarsela a casa e con calma for
109. artire da Firebird 1 5 si pu fare una ORDER BY lt espressione gt e tale lt espressione gt pu essere sia una variabile che un parametro Si sarebbe tentati di pensare che fare un ORDER BY lt numero gt possa permettere sostituire lt numero gt con un parametro di input o una espressione contenente un parametro Tuttavia mentre il parser DSQL non respinge la clausola ORDER BY parametrizzata se risolve ad un intero l ottimizzatore richiede un valore costante assoluto per poter identificare la posizione nella lista generata della colonna o campo derivato su cui effettuare l ordinamento Se un parametro accettato dal parser il risultato sottoposto ad un ordinamento fittizio e il risultato non sar ordinato L espressione NEXT VALUE FOR D Yemanov L espressione NEXT VALUE FOR lt sequence_name gt conforme a SQL 99 stata aggiunta come sinonimo di GEN_ID lt generator name gt 1 integrando l inserimento della sintassi SQL standard CREATE SEQUENCE come equivalente di CREATE GENERATOR Esempi SELECT GEN_ID S_EMPLOYEE 1 FROM RDBSDATABASE INSERT INTO EMPLOYEE ID NAME VALUES NEXT VALUE FOR S_EMPLOYEE John Smith Nota 1 Attualmente i valori di incremento diversi da 1 uno possono essere gestiti solo con la funzione GEN_ID Si prevede nelle future versioni di supportare la gestione di generatori completamente secondo lo standard
110. ata D Yemanov V 2 0 x Una clausola PLAN permette opzionalmente di specificare le istruzioni di accesso ai dati al il motore e di fargli ignorare quelle calcolate dall ottimizzatore I miglioramenti in Firebird 2 permettono di specificare altri percorsi possibili al motore Ad esempio PLAN A ORDER IDX1 INDEX IDX2 IDX3 Per altri dettagli fare riferimento all argomento Miglioramenti ai PLAN nel capitolo del DML Miglioramenti all ottimizzatore Questa sezione presenta l insieme delle modifiche effettuate in Firebird 2 per migliorarne le prestazioni 94 Indici e ottimizzazioni Per tutti i database Il primo gruppo di modifiche influenza versione ODS del database inclusi pertanto quelli non ancora aggiornati alla ODS 11 x Miglioramenti vari O Loa D Yemanov e Algoritmi pi rapidi nel gestire l albero delle pagine sporche Firebird 2 offre una gestione pi efficiente delle pagine modificate il cosiddetto albero delle pagine spor che Ci influenza tutti i tipi di modifiche dei dati effettuate in una singola transazione ed elimina alcuni noti problemi di rallentamento delle prestazione quando si ha una buffer di cache maggiore di 10K pagine Questo inoltre migliora le prestazioni in generale nella modifica dei dati e Lacache delle pagine stata aumentata a 128K pagine 2GB nel caso di pagine da 16Kbyte Calcoli pi veloci per IN ed OR O Loa Il predicato IN con costanti o pi valori
111. atabase 1 attachment 2 transaction 3 statement 4 call MON RECORD_SEQ_READS numero di record letti sequenzialmente MON RECORD_IDX_READS numero di record letti da indice MON RECORD_INSERTS numero di record inseriti MON RECORD_UPDATES numero di record aggiornati MON RECORD_DELETES numero di record cancellati MON RECORD_BACKOUTS numero di record dove una nuova versione di record primaria esistente o di una sua modifica cancellata da un rollback o dal richiamo di un punto di salvataggio MON RECORD_PURGES numero di record in cui la catena di record version sta per essere pulita delle versioni non pi necessarie all OAT o da transazioni pi recenti MON RECORD_EXPUNGES numero di record in cui la catena di record version sta per essere eliminata a causa di cancellazioni in transazioni pi vecchie della OAT Nota Le descrizioni testuali dei valori di tutti gli stati e modi esistenti si trova nella tabella di sistema RDB TYPES Uso La creazione di uno snapshot istantanea normalmente un operazione veloce ma ci potrebbe essere un certo ritardo in caso di notevole carico di lavoro specialmente nel Classic Server Le linee guida per minimizzare l impatto del monitoraggio in tali condizioni vedere oltre nelle linee guida sulle prestazioni Per ricevere i dati di monitoraggio occorre essere connessi in modo valido ad un database Le tabelle di moni toraggio danno informazioni solo sul d
112. atabase connesso Se ci si connette a pi database sullo stesso server ognuno deve essere connesso e monitorato separatamente 115 Caratteristiche amministrative Le variabili di sistema CURRENT_CONNECTION e CURRENT_TRANSACTION possono essere utilizzate per filtrare i dati relativi rispettivamente alla attuale connessione o transazione del chiamante Queste variabili cor rispondono infatti alle colonne ID delle tabelle di monitoraggio appropriate Esempi Per quanto spiegato finora al fine di ottenere prove significative bene sperimentare su un database con pi connessioni attive e collegandosi come SYSDBA o come proprietario del database 1 Ottenere gli ID di tutti i processi di un Classic Server che al momento caricano la CPU ELECT MONSSERVER_PID FROM MONSATTACHMENTS WHERE MONSATTACHMENT_ID lt gt CURRENT_CONNECTION AND MONSSTATE 1 2 Ottenere informazioni sulle applicazioni client SELECT MONSUSER MONSREMOTE_ADDRESS ONSREMOTE_PID ONS TIMESTAMP FROM MONSATTACHMENTS WHERE MONSATTACHMENT_ID lt gt CURRENT_CONNECTION 3 Recuperare il livello di isolamento della transazione attuale n rl ECT MONSISOLATION_MODE ROM MONSTRANSACTIONS WHERE MONSTRANSACTION_ID CURRENT_TRANSACTION ti 4 Recuperare gli statement che
113. ativo in grado di impostare il flag O_SYNC La tecnica usata adesso introdotta nella versione Beta 2 di Firebird 2 1 quella di riaprire il file Questo do vrebbe garantire la corretta operativit in ogni sistema operativo premesso che la chiamata di sistema open funzioni correttamente sotto questo aspetto Apparentemente finora nessuno ha mostrato questo tipo di problemi 23 Miglioramenti di Firebird 2 1 Il team di sviluppo di Firebird non si riesce a spiegare perch un tale buco possa rimanere irrisolto per due anni dopo essere stato immesso nel Linux kernel s bug tracker Apparentemente in Linux un problema documentato diventa una caratteristica Soluzione rapida per le versioni di Firebird precedenti Questo un suggerimento per una soluzione rapida al problema per le versioni precedenti di Firebird usare l opzione sync su ogni partizione montata con un database Firebird installato Un esempio di una linea in etc fstab dev sda9 usr database ext3 noatime sync 1 2 Database su periferiche fisiche A Peshkov Quando un database in modo Forced Writes cresce rapidamente l O del sistema di file pu degradare molto le prestazioni Su Linux che privo delle chiamate a sistema per far crescere in modo efficiente la dimensione del database le prestazioni con le Forced Writes possono essere fino a tre volte pi lente che con la scrittura asincrona In presenza di tali condizioni le prestazioni possono
114. attiva attraverso un comando SET Essi possono essere usati solo come opzioni della linea di comando isql r2 per passare un nome di ruolo con maiuscole e minuscole C Valderrama Il solo scopo di questo parametro permettere di specificare il nome di un ruolo che contiene caratteri sia maiuscoli che minuscoli e Lo switch di default per questo parametro r Ovviamente in tal caso i ruoli passati nella linea di comando sono convertiti tutti in maiuscolo e Con lo switch r2 il ruolo viene passato al motore esattamente come scritto nella linea di comando Nuovi comandi e miglioramenti I seguenti comandi sono stati aggiunti o migliorati 139 Utilit a linea di comando Ctrl C per interromepre il flusso di un interrogazione M Kubecek A dos Santos Fernandes Richiesta CORE 704 V 2 1 In una sessione interattiva di isql ora si pu interrompere una SELECT usando Ctrl C Notare questo semplicemente blocca il recupero delle righe dalla memoria di ingresso non cancella l esecuzione della query Estensione del comando SHOW SYSTEM di isql A dos Santos Fernandes Richiesta CORE 978 V 2 1 Il comando SHOW lt tipo_di_oggetto gt serve per mostrare all utente tutti gli oggetti di quel tipo Il comando SHOW SYSTEM era stato pensato per mostrare gli oggetti di sistema ma fin ora visualizzava solo le tabelle di sistema Ora elenca le UDF predefinite di sistema incorporate in FB 2 Pu essere migl
115. ausola WITH non pu essere interna ad un altra clausola WITH cio non possono essere innestate Esempio di una CTE non recursiva 46 Novit nel Data Manipulation Language DML WITH DEPT_YEAR_BUDGET AS SELECT FISCAL YEAR DEPT_NO SUM PROJECTED_BUDGET AS BUDGET FROM PROJ_DEPT_BUDGET GROUP BY FISCAL_YEAR DEPT_NO SELECT D DEPT_NO D DEPARTMENT B_1993 BUDGET AS B_1993 B_1994 BUDGET AS B_1994 B_1995 BUDGET AS B_1995 B_1996 BUDGET AS B_1996 FROM DEPARTMENT D EFT JOIN DEPT_YEAR_BUDGET B_1993 ON D DEPT_NO B_1993 DEPT_NO AND B_1993 FISCAL_YEAR 1993 EFT JOIN DEPT_YEAR_BUDGET B_1994 ON D DEPT_NO B_1994 DEPT_NO AND B_1994 FISCAL_YEAR 1994 EFT JOIN DEPT_YEAR_BUDGET B_1995 ON D DEPT_NO B_1995 DEPT_NO AND B_1995 FISCAL_YEAR 1995 EFT JOIN DEPT_YEAR_BUDGET B_1996 ON D DEPT_NO B_1996 DEPT_NO AND B_1996 FISCAL_YEAR 1996 WHERE EXISTS SELECT FROM PROJ_DEPT_BUDGET B WHERE D DEPT_NO B DEPT_NO Regole per le CTE recursive Una CTE recursiva autoreferenziante ha un riferimento a s stessa Una CTE recursiva una UNION di membri recursivi e non recursivi Deve essere presente
116. booleani in OR fra loro sono calcolati pi rapidamente Le operazioni con mappe di bit sparsi sono state ottimizzate per gestire i predicati OR e IN lt lista di costanti gt pi efficacemente migliorando le prestazioni su queste operazioni Ricerca su UNIQUE migliorato A Brinkman L ottimizzatore ora usa un costo pi realistico per accedere attraverso un indice UNIQUE Altre ottimizzazioni sulle condizioni NOT D Yemanov Le condizioni con NOT sono state semplificate ed ottimizzate attraverso l uso di un indice quando possibile Esempio Distribuzione di HAVING alla clausola WHERE Se la clausola HAVING o una SELECT di livello pi esterno riferiscono ad un campo da raggruppare questa congiunzione viene distribuita pi in profondit nel percorso esecutivo rispetto al raggruppamento permettendo cos la scansione di un indice In altre parole permette alla clausola HAVING non solo di essere utilizzata in questo caso come una WHERE ma anche di essere ottimizzata allo stesso modo 95 Indici e ottimizzazioni Esempi select rdb relation_id count from rdb relations group by rdb relation_id having rdb relation_id gt 10 select from select rdb relation_id count from rdb relations group by rdb relation_id as grp id cnt where grp id gt 10 In entrambi questi casi si effettua una scansione attraverso l indice invece che una lettura completa Distribuzione di UNION ai percorsi interni Ques
117. cale ja version 4 JIS8 ISO_2022 locale ko version 0 ISO 2022 KR csISO2022KR ISO_2022 locale ko version 1 ibm 25546 ISO_2022 locale zh version 0 ISO 2022 CN ISO_2022 locale zh version 1 ISO 2022 CN EXT HZ HZ GB 2312 ISCII version 0 x iscii de windows 57002 iscii dev ISCII version 1 x iscii be windows 57003 iscii bng windows 57006 x iscii as ISCII version 2 x iscii pa windows 57011 iscii gur ISCII version 3 x iscii gu windows 57010 iscii guj ISCII version 4 x iscii or windows 57007 iscii ori ISCII version 5 x iscii ta windows 57004 iscii tml ISCII version 6 x iscii te windows 57005 iscii tlg ISCII version 7 x iscii ka windows 57008 iscii knd ISCII version 8 x iscii ma windows 57009 iscii mlm gb18030 ibm 1392 windows 54936 LMBCS 1 lmbcs LMBCS 2 LMBCS 3 LMBCS 4 LMBCS 5 LMBCS 6 LMBCS 8 LMBCS 11 LMBCS 16 LMBCS 17 LMBCS 18 LMBCS 19 ibm 367_P100 1995 ibm 367 IBM367 ibm 912_P100 1 csISOLatin2 iso ir 101 ibm 913_P100 2000 ibm 91 995 ibm 91 12 iso 8859 2 ISO_8859 2 1987 latin2 12 8859_2 cp912 912 windows 28592 13 iso 8859 3 ISO_8859 3 1988 latin3 csISOLatin3 iso ir 109 13 8859 3 cp913 913 windows 28593 ibm 914_P1 iso ir l ibm 915_P1 iso ir l 100 1995 ibm 91 100 1995 ibm 91 ibm 1089_P100 1995 ibm 1 iso ir ibm 813_P1 110 ISO_8859 4 144 ISO_8859 5 127 ISO _8859 6 1089 windows 28596 ISO 8859 14 iso 8859 4 latin4 csISOLa 15 iso 8859 5 cyrillic csISO
118. chi Quindi quando viene letta la regione di memoria condivisa il processo di lettura ispeziona tutti i blocchi rimuovendo la spazzatura cio eliminando 1 blocchi che appartengono a processi terminati e ricompattando lo spazio della memoria condivisa Notifiche Ogni processo del server ha un indicatore della sua possibilit di rispondere ad una richiesta di monitoraggio nel momento stesso in cui viene fatta Quando una connessione utente lancia una interrogazione su una qualunque 117 Caratteristiche amministrative tabella di monitoraggio il processo attivo su quella connessione notifica a tutti gli altri processi una richiesta di informazioni aggiornate Tali processi rispondono aggiornando i loro blocchi nella regione di memoria con divisa spegnendo poi l indicatore di pronto alle richieste di monitoraggio Una volta che tutti i processi notificati hanno terminato l aggiornamento dei blocchi il processo richiedente legge la memoria condivisa filtra i vari elementi in funzione dei permessi dell utente trasforma la rappresentazione interna dei dati in campi di registrazioni e riempie in memoria le tabelle di monitoraggio Tutti i processi che sono rimasti inattivi dopo l ultimo monitoraggio rimangono coll indicatore di pronto spen to indicando che non hanno nulla da aggiornare nella memoria condivisa L indicatore spento significa che ver ranno ignorati dalle notifiche e pertanto che sono esentati dall effettuare i
119. clusa la v 2 0 x pertanto bisogna fare attenzione nello specificare tutti gli swirtch richiesi fornendo il nome del database e del file di backup nell ordine corretto con lo switch se vice_mgr 132 Utilit a linea di comando L accesso ai servizi privilegiati consentito solo a SYSDBA A Peshkov Richiesta CORE 787 L accesso alle informazioni riportate dalle API di servizio riguardanti gli utenti ed i percorsi alle cartelle dei database stato inibito agli utenti non amministratori Tuttavia un utente non privilegiato pu ottenere infor mazioni su s stesso Strumenti di Backup Ci sono molte novit in Firebird 2 per fare copie di sicurezza dei database un nuovo programma di utilit per ottenere copie incrementali in linea e altri miglioramenti alla gbak per evitare alcuni trappoloni in cui avrebbero potuto incorrere gli utenti finali II nuovo backup incrementale N Samofatov Un sistema per effettuare copie di sicurezza veloci on line a livello di pagina ed incrementale stato imple mentato ex novo Il sistema di backup composto di due parti e NBak il modulo di supporto al motore e NBackup lo strumento che realmente effettua il backup Nbak Le incombenze funzionali di NBAK sono 1 redirezionare le scritture sui file di differenza quando richiesto frase ALTER DATABASE BEGIN BAC KUP 2 produrre un GUID che fotografa il database e scriverlo nella testata dello stess
120. cmgr in grado di capire coincide con quanto si trova nel file ibase h o nella documentazione delle API di InterBase 6 0 eccetto che una certa forma d abbreviazione pu essere usata per ridurre un po la lunghezza delle linee di comando Ecco come funziona Tutti i parametri SPB hanno una di queste due forme 1 isc_spb_VALORE oppure 2 isc_VALORE1_svc_ VALORE2 In fbsvemgr c bisogno solamente delle parti VALORE VALORE1 oppure VALORE2 quando si deve scrivere il parametro Di conseguenza nel caso 1 si scrive semplicemente VALORE mentre nel caso 2 si deve scrivere VALOREI_VALORE 2 Ad esempio 130 Utilit a linea di comando isc_spb_dbname gt dbname isc_action_svc_backup gt action backup isc_spb_sec_username gt sec_usernam isc_info_svc_get_env_lock gt info_get_env_lock e cos via Nota L eccezione isc_spb_user_name pu essere specificata sia come user_name o pi semplicemente con user Non realistico descrivere tutti i parametri di SPB in queste note di rilascio Nella documentazione di InterBase 6 0 beta il tutto prende circa 40 pagine La successiva sezione evidenzia solo alcune note differenze tra il modo di operare di fbsvcmgr e quello che si potrebbe arguire dalla vecchia documentazione di Interbase fbsvcmgr sintassi specifica Cosa fare e cosa non fare Con fbsvcmgr si effettua una singola azione e quando ne il caso se ne ottiene il suo
121. con espressioni TIMESTAMP Esempi select dateadd day 1 current_date as yesterday from rdb database oppure con la sintassi alternativa select dateadd 1 day to current_date as yesterday from rdb database 157 Le nuove funzioni integrate Funzione Formato Descrizione DATEDIFF Vedi sotto Riporta un valore numerico che rappresenta l inter vallo di tempo esistente fra i due valori date time ti mestamp Formato DATEDIFF lt timestamp_part gt FROM lt date_time gt TO lt date_time gt DATEDIFF lt timestamp_part gt lt date_time gt lt date_time gt timestamp_part YEAR MONTH DAY HOUR MINUTE SECOND MILLISECOND 1 Il valore riportato positivo quando il secondo termine maggiore del primo zero se sono uguali negativo viceversa 2 Il confronto di espressioni DATE con espressioni TIME non valido 3 YEAR MONTH e DAY non possono essere usati con tipi TIME 4 HOUR MINUTE SECOND e MILLISECOND non possono essere usati con espressioni DATE 5 Tutti i valori timestamp_part possono essere usati con espressioni timestamp Esempio select datediff DAY cast TOMORROW as date 10 current_date as datediffresult from rdb database DECODE Vedi sotto DECODE un abbreviazione per l espressione CA SE WHEN ELSE Formato DECODE lt expression gt lt search gt lt re
122. confuso il risultato qui dato con il numero di blocchi occupati nella periferica e quindi la dimensione di pagina con la dimensione del blocco fisico della periferica Il valore riportato 77173 il numero di pagine di database occupate La dimensione fisica in bytes si calcola con numero delle pagine dimensione della pagina Se non si conosce la dimensione di pagine si pu interrogare l header del database con gstat h gstat h dev sda7 Database dev sda7 Database header page information Flags 0 Checksum 12345 Generation 43 Page size 4096 lt ODS version 11 1 Esempi dell uso di nbackup su una periferica fisica 1 Si pu utilizzare uno script per fare la copia usando direttamente lo switch s per ottenere l output Ad esempio DbFile dev sda7 DbSize nbackup L DbFile S exit 1 dd if SDbFile ibs 4k count DbSize compress and record DVD nbackup N DbFile 2 Usando nbackup si pu fare una copia fisica direttamente col comando nbackup B 0 dev sda7 tmp lv1 0 Ulteriori informazioni sulle periferiche fisiche Sebbene non siano noti problemi specifici ad oggi sull uso delle periferiche fisiche per i database bisogna tenere presente che e lacrescitareale e potenziale di un database fisico non molto ovvia per un utente finale rispetto a quello che invece viene gestito dal file system di un sistema operativo Se l ambiente di installazione dal cliente fuori 25 Migliora
123. cord di dati singleton in risposta all esecuzione di una operazione su una singola registrazione non consentito specificare tale clausola nelle frasi che inseriscono aggiornano o cancellano pi di un record Nota In DSQL si riporta comunque una riga anche se nessun record ha soddisfatto le condizioni per l operazione e quindi nessun record stato toccato Pertanto a questo stadio dell implementazione c la possibilit di riportare un record vuoto cio contenente tutti NULL Questo potrebbe essere modificato in una futura release In PSQL invece se il comando non influisce su nessuna registrazione non riporta valori e pertanto nessuna delle variabili di ritorno specificate nella clausola INTO viene modificata Regole sintattiche generali INSERT INTO VALUES RETURNING lt column_list gt INTO lt variable_list gt INSERT INTO SELECT RETURNING lt column_list gt INTO lt variable_list gt UPDATE OR INSERT INTO VALUES RETURNING lt column_list gt INTO lt variable_list gt UPDATE po ETURNING lt column_list gt INTO lt variable_list gt DELETE FROM ETURNING lt column_list gt INTO lt variable_list gt Lo Regole nell uso della clausola RETURNING 1 La parte della clausola INTO cio la lista delle variabili
124. d 153 Le squadre del progetto Firebird 2 Autore Paese Attivit principale Ryan Baldwin Inghilterra Sviluppo del Jaybird Type 2 driver Evgeny Putilin Federazio ne Russa Implementazione delle STORED PROCEDURES in Java Carlos Guzman Alvarez Spagna Sviluppo e coordinamento del provider NET per Firebird fi no al 2007 Jiri Cincura Repubbli ca Ceca Sviluppo e coordinamento del provider NET per Firebird a partire dal gennaio 2008 Alexander Potapchenko Russia Coordinatore del driver ODBC JDBC per Firebird David Rushby d Konstantin Kuznetsov U S A Federazio ne Russa Coordinamento e sviluppo dell interfaccia Python KInterbase per Firebird fino alla sua morte per incidente nel luglio 2007 Pacchettizzazioni Solaris Intel Paul Vinkenoog Olanda Coordinatore del progetto di documentazione Firebird scrit tore di documentazione e sviluppo di utilit Norman Dunbar Inghilterra Documentazione Pavel Menshchikov Federazio ne Russa Traduttore della documentazione Tomneko Hayashi Giappone Traduttore della documentazione Umberto Mimmo Masotti Italia Traduttore della documentazione Olivier Mascia Belgio Sviluppatore dell interfaccia C IBPP reimplementazione dei servizi di installazione per Win32 Oleg Loa Federazio ne Russa Contribuzioni varie Grzegorz Prokopski Ungheria
125. d 120 Sicurezza Solo il server pu connettersi al database di sicurezza A Peshkov Anche il programma di utilit gsec ora usa le API di servizio Il server rifiuta qualsiasi tipo di accesso al security2 fdb se non attraverso le API del gestore dei servizi Services Manager Protezione attiva contro gli attacchi brutali A Peshkov I tentativi di accedere al server usando tecniche brutali sugli nominativi e le password sono rilevati e bloccati e Da ogni client remoto obbligatorio connettersi con la password e Iclient che cercano di effettuare troppi tentativi di connessioni sono bloccati per un certo periodo di tempo Il supporto di protezione contro gli attacchi brutali stato incluso nelle funzioni di connessione sia delle API di Firebird sia delle API di servizio Per altri dettagli vedere Protezione dagli attacchi brutali Vulnerabilit varie chiuse A Peshkov C Valderrama Alcune note vulnerabilit nell API sono state chiuse Attenzione Va notato che rimettere la funzionalit del server redirection multi hop in Firebird 2 pu potenzialmente reintrodurre una nuova vulnerabilit Per tale ragione ci controllato da un parametro in firebird conf Redirection che non va abilitato a meno che non sappia esattamente tutte le reali implicazioni di ci che si sta facendo In questi giorni la possibilit di re direzionare ad altri server le richieste considerata pericolosa Supponendo di avere un
126. dare che allora il tipo DATE era ci che adesso il tipo TIMESTAMP select NOW from rdb database riporta data ed ora di sistema In un database con ODS 10 o superiore quella frase riporta solo la stringa NOW Bisogna pertanto forzare il tipo del dato con CAST per ottenere adesso il risultato voluto select cast NOW as TIMESTAMP from rdbSdatabase Per molto tempo probabilmente gi da IB 6 c stata una non documentata sintassi abbreviata per forzare qualsiasi letterale non solo quelli di data ed ora Attualmente definito nello standard Molti di noi semplice mente non sapevano di questa possibilit Questa sintassi ha la forma lt tipo di dato gt lt letterale gt Con l esempio di CAST precedente in mente l espressione sintattica abbreviata select TIMESTAMP NOW from rdb database Questo tipo di sintassi abbreviata pu essere utilizzata anche in altri modi L esempio seguente mostra un ope razione aritmetica sulle date con un letterale predefinito update mytable set OVERDUE where DATE YESTERDAY DATE_DUE gt 10 Li 80 Capitolo 7 SQL Procedurale PSQL Una manciata di miglioramenti stata aggiunta alle estensioni del PSQL di Firebird 2 In evidenza ci sono le nuove capacit ad usare i domini e gli ordinamenti alfabetici collazioni nella dichiarazione delle variabili e degli argomenti nelle procedure e nei trigger Ricerca
127. default Sembra naturale pertanto che anche i campi di tabella possano essere maneggiati allo stesso modo senza manipolazione delle tabelle di sistema Sintassi ALTER TABLE t ALTE ALTER TABLE t ALTE COLUMN c SET DEFAULT default_value COLUMN c DROP DEFAULT Nota e I campi di tipo array non possono avere un valore di default e Cambiando il tipo del dato si rischia di lasciare il suo valore di default precedente Questo perch ad un campo pu essere assegnato il tipo di un dominio che ha un default ma il campo ha la possibilit di sovra scrivere tale dominio D altra parte ad un campo si pu dare direttamente un nuovo tipo di dato nel qual caso il default appartiene logicamente al campo ed mantenuto in un dominio creato e gestito in automatico dietro le quinte 39 Novit sul Data Definition Language DDL Sintassi per modificare le eccezioni D Yemanov I comandi di DDL RECREATE EXCEPTION e CREATE OR ALTER EXCEPTION richiesta SF 1167973 sono stati implementati permettendo di ricreare oppure di creare o modificare una eccezione definita dall utente in funzione della sua attuale esistenza RECREATE EXCEPTION RECREATE EXCEPTION si comporta esattamente come CREATE EXCEPTION se l eccezione non esiste ancora Se esiste gi la sua definizione viene completamente sostituita a meno che non vi siano dipendenze che blocchino la modifica CREATE OR ALTE
128. e Durante lo sviluppo di Firebird 1 era stato aggiunto allo switch V erbose della gbak un opzionale argomento numerico lt contatore gt sia per il backup che per il restore Era stato pensato per specificare un numero ed ottenere un conteggio delle righe processate aggiornato ogni intervallo di righe specificato Poich procurava effetti collaterali indesiderati stato rimosso ancora prima che uscisse Firebird 1 Purtroppo sebbene non lo sia mai stato era stato documentato come esistente nelle note di rilascio ed in altri posto ISQL utilit di interrogazione Il lavoro sull ISQL ha comportato un gran quantitativo di correzioni e l introduzione di un certo numero di utili nuove caratteristiche Una particolarit da notare che ora i tipi CHAR e VARCHAR definiti col set di caratteri OCTETS cio di fatto BINARY ora mostrano il contenuto in formato esadecimale Attualmente questa caratteristica non pu essere cambiata Nuovi switch Sono stati aggiunti 1 seguenti switch alla linea di comando b ail cio termina D Ivanov C Valderrama Lo switch b nella linea di comando impone a isql di terminare riportando al sistema operativo un errore quando viene utilizzata in modalit non interattiva Usando degli script in ingresso nella linea di comando completamente inappropriato permettere alla isql di continuare l esecuzione di una serie di comandi dopo che avvenuto un errore Pertanto l opzione b ail fa termin
129. e Estensioni alle variabili di contesto e Miglioramenti ai PLAN e GROUP BY e ORDER BY con alias e GROUP BY su espressione e Ordinamento di SELECT per numero ORDER BY numerici e parametri attenzione e NEXT VALUE FOR e Articoli 1 SELECT e sintassi delle espressioni 2 Tipo del dato risultante da un aggregazione 3 la sezione chiamata La sintassi abbreviata trucchetto per i letterali di data Common Table Expressions Vlad Khorsun Basato sul lavoro di Paul Ruizendaal per il progetto Fyracle v 2 1 Una espressione di tabella comune in inglese common table expression o pi brevemente CTE come una vista definita localmente all interno di una query principale Il motore tratta una CTE come una tabella derivata e non viene effettuata nessuna materializzazione intermedia dei dati Benefici delle CTE L uso delle CTEs permette di specificare query dinamioche che possono essere anche recursive e Il motore inizia l esecuzione a partire da un elemento non recursivo e Per ogni riga valutata esegue ciascun membro recursivo uno alla volta usando i valori attuali della riga esterna come parametri e Se l istanza attualmente in esecuzione di un membro recursivo non produce righe l esecuzione risale di un livello e recupera la riga successiva dalle righe dell elemento esterno Nel caso di una CTE recursiva il carico di lavoro per la memoria e la CPU molto inferiore di quello di una equivalente STORED PROCEDURE recursiva
130. e di memo rizzazione Pertanto bisogna leggere tutte le pagine prima di poter validare un criterio di ricerca Indexed retrieval accesso indicizzato usa un particolare metodo indicizzato range index scan per trovare le righe che concordano con il criterio di ricerca dato Le corrispondenze trovate sono combinate in una mappa di bit sparsi sparse bitmap che viene ordinata per numeri di pagina in modo da dover leggere una pagina solo una volta Dopo di ch le pagine dei dati vengono lette e da esse si recuperano le righe richieste Navigational scan scansione in ordine utilizza un indice per riportare le righe in certo ordine se si pu effettuare una tale operazione e L indice ad albero binario viene percorso dal nodo pi a sinistra a quello pi a destra e Se un qualsiasi criterio di ricerca definito su una colonna specificata anche in una clausola ORDER BY la navigazione limitata da un qualche sottoalbero ristretto che dipende dal predicato e Se un qualche criterio di ricerca definito su colonne indicizzate allora si effettua per prima cosa un range index scan e ogni chiave recuperata ha il suo ID validato nel bitmap risultante A quel punto si legge la pagina dati e si recupera la riga richiesta Nota Una scansione in ordine navigational scan provoca una lettura in ordine sparso delle pagine in quanto le letture non sono ottimizzate Una operazione di SORT sort operation effettua un ordinament
131. e gt IS NOT DISTINCT FROM lt valore gt Esempi 1 SELECT FROM Tl JOIN T2 ON T1 NAME IS NOT DISTINCT FROM T2 NAME SELECT FROM T WHERE T MARK IS DISTINCT FROM test Precisazioni essenziali 1 Il predicato DISTINCT non considera distinti due valori NULL pertanto non riporta un risultato scono sciuto come i predicati di uguaglianza disuguaglianza Come il predicato IS NOT NULL pu essere solamente o vero o falso Per maggiori informazioni sui NULL Per maggiori informazioni su come sono valutati i confronti che coinvolgono campi a NULL esaminare la Guida sull uso di NULL nel linguaggio SQL di Firebird Firebird Null Guide disponibile in italiano sul sito di Firebird nell Indice dei documenti 2 Il predicato NOT DISTINCT pu essere ottimizzato usando un indice se disponibile 67 Novit nel Data Manipulation Language DML Ammorbidita la regola per i NULL espliciti D Yemanov Un esplicito NULL pu essere ora usato come un valore in tutte le espressioni senza dare un errore di sintassi Pertanto espressioni come le seguenti sono adesso valide A N B gt N A N B l U U ULL N LL LL Nota Tutte queste espressioni sono valutate a NULL La modifica non altera il significato dell espressione per il motore semplicemente la fa accettare come espressione valida Modifiche all ordinamento de
132. e il set di caratteri NONE Due speciali set di caratteri NONE e OCTETS possono essere utilizzati nelle dichiarazioni Tuttavia OCTETS non pu essere specificato per le connessioni I due set sono simili tranne che per NONE il carattere spazio ASCII 0x20 mentre per OCTETS 0x00 NONE e OCTETS sono speciali nel senso che usano nelle conversioni regole differenti da quelle degli altri set di caratteri e Negli altri set di caratteri le conversioni sono effettuate in questo modo CHARSET1 gt UNICODE gt CHAR SET2 e Con NONE OCTETS i bytes che compongono le stringhe sono copiati direttamente cos come sono NO NE OCTETS gt CHARSET2 e CHARSETI gt NONE OCTETS Miglioramenti I miglioramenti apportati da questo nuovo sistema includono 100 Supporto alle lingue internazionali INTL Controllo sulla corretta formazione Alcuni set di caratteri specialmente a byte multipli non accettano proprio qualsiasi stringa Ora il sistema verifica che le stringhe siano corrette quando le assegna da NONE OCTETS e quando le stringhe sono inviate al client sia come statement che come parametri Maiuscole In Firebird 1 5 x solo i caratteri ASCII sono convertiti in maiuscole nell ordinamento default binario di qual siasi set di caratteri che quello usato quando non viene specificata la COLLATION Per esempio isql q ch dos850 SQL gt create database test fdb SQL gt create table t c char 1 character set d
133. e in Firebird 1 5 In Firebird 1 5 si usa l algoritmo DES due volte per criptare la password prima dal client e poi dal server prima di confrontarle col dato memorizzato nel database della sicurezza Tuttavia questa sequenza viene completamente rotta quando SYSDBA cambia una password Il client effettua due volte il calcolo e memorizza il risultato nel database della sicurezza Pertanto la gestione della password completamente dipendente dal client o meglio definita dal client Firebird 2 calcolo lato server Per utilizzare sistemi di criptazione pi robusti stato necessario un altro approccio La password criptata da memorizzare sul server dovrebbe essere sempre calcolata dal server stesso Tale schema esiste gi in Firebird all interno delle API di servizio Questo port alla decisione di utilizzarle per ogni attivit client relativa alla gestione degli utenti Adesso gsec e le funzioni API isc_user_ con uguale add modify o delete usano tutte le API di servizio per accedere al database della sicurezza L eccezione l accesso embedded al server Classic su sistemi POSIX vedere sotto Effettuare modifiche alla gestione delle password diventato abbastanza semplice sempre effettuata dal ser ver Non pi un compito della gsec calcolare la password criptata per il database della sicurezza chiede sem plicemente al server di fare il lavoro Vale la pena notare che la nuova gsec funziona anche con Firebird pi vecc
134. e nel metadata del siste ma ma con dati temporanei I dati provenienti da differenti connessioni o transazioni in funzione della defini zione sono isolati gli uni dagli altri ma il metadata della GTT condiviso fra tutte le connessioni e transazioni Pertanto ci sono due tipi di GTT e con dati persistenti per tutta la durata della connessione un cui riferita la specifica GTT e con dati persistenti per tutta la durata della transazione in cui si utilizzata la GTT Sintassi e regole per le GTT CREATE GLOBAL TEMPORARY TABLE ON COMMIT lt DELETE PRESERVE gt ROWS Questo crea il metadata della tabella temporanea nel sistema La clausola ON COMMIT imposta il tipo della tabella temporanea ON COMMIT PRESERVE ROWS tutti i dati lasciati nella tabella alla fine della transazione restano a disposizione nel database fino al termine della connessione ON COMMIT DELETE ROWS tutti i dati nella tabella data sono eliminati dal database immediatamente alla fine della transazione ON COMMIT DELETE ROWS il default se non si usa la clausola opzionale ON COMMIT CREATE GLOBAL TEMPORARY TABLE un comando DDL che processato dal motore come una normale CREATE TABLE Allo stesso modo non possibile la CREATE o la DROP di una GTT all interno di un trigger o di una procedura Tipo della relazione Le definizione delle GTT sono distinte nel catalogo di sistema l una dall altra e dalle tabe
135. e nelle frasi UPDATE 0 DELETE Disponibile sia in DSQL che in PSQL 64 Novit nel Data Manipulation Language DML Sintassi SELECT ORDER BY lt expr_list gt ROWS lt exprl gt TO lt expr2 gt Esempi 1 SELECT FROM T1 UNION ALL SELECT FROM T2 ORDER BY COL ROWS 10 TO 100 SELECT COL1 COL2 ECT COL3 FROM T3 ORDER BY COL4 DESC ROWS 1 wn It HH DELETE FROM T5 ORDER BY COL5 ROWS 1 Note essenziali 1 Quando si omette lt expr2 gt allora ROWS lt expr1 gt ha lo stesso significato di FIRST lt expr1 gt Quando si usano entrambe le espressioni lt exprl gt e lt expr2 gt allora ROWS lt expr1 gt TO lt expr2 gt ha lo stesso significato di FIRST lt expr2 gt lt exprl gt 1 SKIP lt exprl gt 1 2 Non c nulla di equivalente alla clausola SKIP usata senza la clausola FIRST Miglioramenti alla gestione delle UNION Le regole per le query UNION sono state migliorate come segue Implementazione di UNION DISTINCT D Yemanov UNION DISTINCT attualmente permesso come sinonimo di una semplice UNION in accordo con le speci fiche SQL 99 C una piccola differenza DISTINCT il funzionamento di default in accordo allo standard Precedentemente Firebird non supportava l esplicita inclusione della parola chiave opzionale DISTINCT Sintassi 65 Novit nel Data Man
136. e novit di Firebird 2 Aggiornato il rapporto della struttura interna Sono state aggiornate le procedure che stampano le varie strutture interne DSQL node tree BLR DYN ecc N Samofatov Nuovi strumenti per il log di debug Sono state implementate procedure di utilit thread safe e signal safe per il debug N Samofatov Miglioramenti nella diagnostica I messaggi di Syslog vengono copiate alla tty dell utente se c attaccato un processo A Peshkov Migliorata la gestione delle connessioni su Superserver POSIX A Peshkov Le versioni per Posix SS ora gestiscono SIGTERM e SIGINT per chiudere tutte le connessioni in modo corretto e non brusco A Peshkov Rifatta la gestione degli invarianti in PSQL N Samofatov Il tracciamento degli invarianti quel processo eseguito dal compilatore BLR e dall ottimizzatore per decidere se una certa espressione come potrebbe essere una subquery interna invariante cio indipendente dal contesto principale Viene usato per eseguire una unica valutazione di tali espressioni e di riutilizzare i risultati senza ricalcolarli La gestione del tracciamento degli invarianti in PSQL e la logica di duplicazione delle richieste sono state rifatte per risolvere un certo numero di problemi con le procedure recursive ad esempio SF bug 627057 Se alcune invarianti sfuggono alla determinazione c una perdita di prestazioni Se alcune variabili sono trattate come invarianti si ottengono
137. e per le frasi ed espressioni di selezione e Le frasi di UPDATE e DELETE sono sempre basate su un cursore implicito applicato alla tabella specificata e limitato dalla clausola WHERE Si possono inoltre specificare le parti finali della sintassi di selezione per limitare il numero di registrazioni modificate od ottimizzare il comando Le clausole permesse alla fine di una frase di UPDATE o DELETE sono PLAN ORDER BY e ROWS Tipo del dato risultante da un aggregazione Arno Brinkman Quando si effettua un aggregazione per generare colonne con CASE o UNION con una miscela di tipi di dato compatibili il motore deve scegliere un singolo tipo di dato per il risultato di ogni colonna Chi sviluppa deve spesso preparare una variabile per depositarvi il risultato e pu essere disorientato se avviene un eccezione sul tipo di dato Le seguenti regole sono quelle seguite per determinare il tipo di dato scelto dal motore per i valori di una colonna in tali condizioni 1 Sia DTS l insieme dei tipi di dato presenti in una colonna risultato di cui dobbiamo determinare il tipo di dato risultante DTR 2 Tutti i tipi di dato del DTS devono essere fra loro compatibili 3 Nel caso in cui a un qualsiasi valore del DTS sia una stringa di caratteri i se tutti i dati del DTS sono di lunghezza fissa allora anche il risultato di lunghezza fissa altrimenti il risultato a lunghezza variabile La lunghezza della stringa risultante in caratteri ug
138. e sempre convertito in maiuscolo e Successivamente stata trovata una soluzione migliore che evita il ricorso ad un trucchetto SQL per fare l autenticazione dell utente Il risultato che un utente non SYSDBA pu vedere solo il suo proprio nome di login in tutti gli strumenti di amministrazione gsec o tutte le interfacce grafiche che usano le API di servizio SYSDBA continua ad avere accesso completo alle credenziali utente Struttura del nuovo database della sicurezza Il database della sicurezza di Firebird 2 security2 fdb Per l autenticazione degli utenti ha la nuova tabella RDBSUSERS che memorizza le password criptate col nuovo metodo Una vista su questa tabella sostituisce la vecchia tabella USERS e permette agli utenti di modificare le proprie password Il DDL delle nuove strutture descritto nell Appendice Appendice C gsec in Firebird 2 Misure speciali sono state adottate per rendere completamente impossibili le connessioni remote al database della sicurezza Non ci si deve sorprendere se qualche vecchio programma non riesce ad accedere direttamente questo voluto Adesso si pu accedere alle informazioni degli utenti solo attraverso le API di servizio e l accesso interno ai servizi equivalente implementato ora nelle funzioni API isc_user_ Protezione dagli attacchi brutali Le attuali velocissime CPU e le connessioni WAN veloci rendono possibile tentare di attaccare brutalmente le password degli utenti di un
139. e un NULL e di interpretarlo correttamente nei parametri Lo script ib_udf_upgrade sql pu essere applicato ai database precedenti alla versione 2 0 che hanno queste funzioni dichiarate per aggiornarne la dichiarazione in modo da funzionare con le nuove versioni della libreria Questo script deve essere usato solo usando la nuova libreria ib_udf con Firebird 2 e le chiamate dovranno essere modificate per gestire i NULL Controllo in Run time per il sovradimensionamento in concatenazione D Yemanov Il controllo per il sovradimensionamento nella concatenazione di stringhe stato spostato dalla fase di compi lazione alla fase di run time 12 Le novit di Firebird 2 A partire da Firebird 1 0 le operazioni di concatenazione vengono controllate per evitare che la stringa risultante possa superare il limite di circa 32 000 bytes cio un sovradimensionamento overflow Questo controllo veniva effettuato durante la fase di preparazione dello statement usando le dimensioni dichiarate degli operandi ed avrebbe dato errore per una espressione dl tipo CAST qwe AS VARCHAR 30000 CAST rty AS VARCHAR 30000 A partire da Firebird 2 0 questa espressione lancia solo un avvertenza warning durante la fase di preparazione ed il controllo di sovradimensionamento viene ripetuto all esecuzione usando la dimensione degli operandi reali Il risultato permette all esempio di essere eseguito senza errori L eccezione isc_concat_overflo
140. ecececeeeceeececeeeeeeeeeeeeeeeens 76 L espressione NEXT VALUE FOR ceert eodeni aoten e ia 77 Attcoli cain dla EE SE EEEE EEEE ie e Riel ui 78 SELECT e sintassi delle espressioni eseseeererreeeseererersrererereterstrrreeteerererereeeeererereeereeererese 78 Tipo del dato risultante da un aggregazione 79 La sintassi abbreviata trucchetto per i letterali di data eeeecececeeecececeeeeeeeereeeeeees 80 Te SQL Procedutale PSOL Pierie iniri i e aa NA n it rien 81 Ricerca Rapida Le lo A aa 81 Domini in PSQL sienien casas abec ahakad chcchadaciedhesage daghwecdanndas I A OEA E E Aa 81 COLLATE nelle STORED PROCEDURE e nei parametri ee eeeeeereeereereeeses 82 Nelle viste pu essere utilizzato WHERE CURRENT OF eeeeeeecnceeeeeeeseeeenaeaes 82 La variabile di contesto ROW COUNT ceccccesccceeeseueccceescseusceeuceseessseeseeeensees 82 CUrSOFE ESPUCItI por eroi e nie reina anale A tepore ano E TE EEE 83 Argomenti di default nelle Stored Procedure eee eee eee ze cei 84 Nuova sintassi LEAVE lt label gt naro dala rela le aa 86 Ora le variabili di contesto OLD sono in sola lettura 88 PSOL Stack Trace eena endai e i a NE EANAN RAEE NES A PEA SANA ARESE RASO A desks deca RARI 88 Chiamare una UDF come una procedura ieri rene nere nere re rene re rene ne nere ne reziario 90 8
141. ect mod x 10 from y OCTET_LENGTH OCTET_LENGTH lt string gt lt string_expr gt Riporta la lunghezza in bytes di una stringa o di un e spressione select rdbSrelation_name octet_length rdb relation_name octet_length trim rdbSrelation_name from rdbSrelations OVERLAY Vedi sotto Sostituisce in string i caratteri a partire da lt start gt per lt length gt con lt string2 gt e la riporta Formato 160 Le nuove funzioni integrate Funzione Formato Descrizione ERLAY lt stringl gt PLACING lt string2 gt FROM lt start gt FOR lt length gt La funzione OVERLAY equivalente a TRING lt stringl gt 1 FOR lt start gt 1 lt string2 gt TRING lt stringl gt lt start gt lt length gt La prima posizione in una stringa 1 e non 0 2 Se gli argomenti lt start gt e o lt length gt non sono interi si applica l arrotondamento bancario Se non si specifica lt length gt si intende CHAR_LENGTH lt string2 gt PI PI Non ha argomenti e riporta la costante 3 1459 val PI POSITION Vedi sotto Da la posizione iniziale della prima stringa all inter no della seconda a partire dall inizio Nella seconda forma si pu dare la posizione dalla quale far inizia re la ricerca per cui i caratteri precedenti vengono ignorati TION lt string gt IN lt string gt TION lt string gt lt string gt
142. ed Procedures D Yemanov Richiesta CORE 779 stato introdotto un flag di tipo per le stored procedure aggiungendo la colonna RDB PROCEDURE_TYPE alla tabella RDB PROCEDURES I possibili valori sono 0 o NULL procedura compatibile non viene effettuato nessun controllo SELECT procedure una procedura che contiene almeno uno statement SUSPEND i EXECUTE procedure non ci sono statement SUSPEND e pertanto non possibile usarla in una SELECT Informazioni utili per il Core Dump su Linux A Peshkov Richiesta CORE 1558 31 Miglioramenti di Firebird 2 1 Il server normalmente dopo un problema grave bugcheck cerca di proseguire le operazioni Il parametro di configurazione BugcheckAbort fa in modo invece di chiamare immediatamente la funzione abort e creare un file di core dump Poich il bugcheck il risultato di un problema non riconosciuto dal server continuare le operazioni con un problema non risolto non dovrebbe essere comunque possibile id il file di core dump pu dare informazioni utili per il debug Nelle distribuzioni pi recenti di Linux quando un applicazione abortisce per default non viene pi fatto il core dump core Gli utenti hanno spesso problemi nell ottenerlo Le regole diverse tra Classic e Superserver oltre all inconsistenza tra gli strumenti di gestione del sistema operativo tra ditribuzione e distribuzione rendono pressoch impossibile aiutare l utente generico con una qua
143. eeeeeneeeneee 99 10 Supporto alle lingue internazionali INTL eee einen 100 Interfaccia INTL per i set di caratteri non ASCII ee eeeeeseeeeeeeeeeeeeeeeeeeeeeeseeeeeeeseeeeeees 100 Architettura ieri e I Al 100 Miglioramenti cir i A 100 TINGE Te PIU Tea T a et i ei Pai Pe ieri den Papa io ee cilena 102 Nuovi set di caratteri ed ordinamenti lecce cece ce n a ii 103 SViluppr nella V Z sare hene nia iaia ieri aa 104 Set di caratteri CU iui RL oe del LR i 104 Gir ordinamenti UNICODE i sti tai opa li ea ipa dinafo tape ae aeda 106 Attributi specifici per gli ordinamenti ee eeeeeeeeeeeeeeeneeeeeneeeeeeseeeeeeeeseeeseneeeeeeaeaees 106 Modifiche agli ordinamenti in V 2 l i ipiasi arena ie ia ae alia la 108 Conversione del testo dei meta dati 108 Riparare il testo det meta data i ili a ea era 108 Set di caratteri suppottall t ciuianhia iii Riise 110 IL Caratternstiche amministrative uuirealeanene lia Pa elica pal anali 111 Tabelle di Monitoraggio iii 111 EER SES ORE SISP FE CO TORTO E GIVITOIOTITA SOCOVICITUVE TRCSI TISCINCRISPNISE FITTUCURO 111 SCOPO SICUTEZZA crap st TTT RATA Pn a EE KANEA EEA sabe sede A E RITI pn 112 Metadata iii lla li ieee ee iu 112 Eo EE EEA li iaia lai aan iaia nizza 115 Cancellare una query gi lanciata i 117 Guida alle prestazioni nell uso delle tabelle MONS sotto stress
144. egola avrebbe creato problemi in in Firebird 2 0 nel caso in cui la stringa in ingresso era CHAR e l argomento del FOR era un espressione la cui dimensione sarebbe stata ignota la momento della preparazione della zona di memoria che avrebbe dovuto contenere la stringa risultante La modifica della V 2 1 ha corretto questo fatto Non necessario ridefinire ogni variabile PSQL che stata dichiarata a ricevere il risultato da una SUB STRINGO Rimane corretto dichiarare la sua dimensione grande abbastanza a contenere il dato effettivamente riportato sufficiente essere certi che qualsiasi espressione usata nell argomento del FOR non possa avere un valore intero superiore al numero dei caratteri dichiarati di quella variabile Problemi dei campi BLOB Chiaramente essendo un testo BLOB di lunghezza indeterminata non pu rientrare in un paradigma in cui pu riempire una stringa di dimensione massima nota Pertanto il risultato riportato da SUBSTRING applicato ad un BLOB di testo non un VARCHAR come specificato sopra ma ancora un BLOB di testo Questa modifica pu pertanto bloccare codice PSQL ed altre espressioni funzionanti e Attenzione ai sottodimensionamenti Fare particolare attenzione ai CAST e alle concatenazioni e Fare attenzione all uso della memoria quando si assegnano BLOB temporanei nei cicli Il motore alloca un minimo di una pagina di memoria per ogni BLOB temporaneo indipendentemente dalla sua reale dimen sione
145. ent Rappresenta il limite superiore della dimensione del blocco preallocato in bytes 29 Miglioramenti di Firebird 2 1 Importante Si prega di leggere attentamente i dettagli riguardo tale configurazione in DatabaseGrowthIncrement nel ca pitolo relativo ai Nuovi parametri e modifiche alla configurazione Neutralizzare la cache del filesystem su Superserver V Khorsun Caratteristica richiesta CORE 1381 e CORE 1480 Per la memoria tampone delle pagine Firebird usa e gestisce un suo proprio sistema di cache in memoria Il sistema operativo a sua volta potrebbe avere parte degli stessi dati gestiti nella memoria tampone propria del filesystem Configurando Firebird ad usare una memoria cache relativamente grande rispetto alla memoria disponibile e ad usare le Forced Writes questa duplicazione della memoria cache pu consumare cos tante risorse disponibili da non dare nessun beneficio Inoltre se il sistema operativo cerca di gestire un file grandissimo pu spostare la cache delle pagine di Firebird addirittura in swap provocando un intensa e inutile paginazione su disco In pratica se la dimensione della cache delle pagine di Firebird Superserver oltre l 80 della RAM disponibile la gestione delle risorse potrebbe risultare insostenibile Nota La cache del filesystem utile nelle scritture su disco ma solo con Forced Writes disabilitate OFF che non raccomandato nella maggior parte delle sit
146. ente ALL 2 Se omesso il lt delimitatore gt si adopera una virgola per separare i valori concatenati Altre note 1 Ivalori numerici e data ora sono implicitamente convertiti in stringhe nella valutazione delle espressioni 2 Il risultato di tipo BLOB con SUB_TYPE TEXT in ogni caso eccetto una lista esplicita di BLOB con sottotipi diversi 3 L ordine dei valori nel gruppo dipendente dall implementazione quindi non fateci affidamento perch pu cambiare Esempi EA SELECT LIST ID FROM MY_TABLE B SELECT TAG_TYPE LIST TAG_VALUE ROM TAGS GROUP BY TAG_TYPE ty La clausola RETURNING Dmitry Yemanov Adriano dos Santos Fernandes v 2 1 Lo scopo di questa clausola quella di permettere al client di avere di ritorno dalle frasi di INS UPDATE UPDATE OR INSERT e DELETE 1 valori inseriti o eliminati in una tabella Gi pe da 49 Novit nel Data Manipulation Language DML L uso tipico recuperare il valore generato per una chiave primaria dall esecuzione di un trigger BEFORE La clausola RETURNING opzionale ed disponibile sia in DSQL che in PSQL sebbene ci siano leggere differenze nella sintassi In DSQL l esecuzione dell operazione stessa ed il riporto dei valori avvengono una unico ciclo di esecuzione Poich la clausola RETURNING stata progettata per riportare un solo re
147. escrivere anche la linea e la colonna in cui determina una frase incompleta Nuova colonna nella tabella RDB Index_Segments D Yemanov A Brinkman Per memorizzare la selettivit di ciascun segmento di un indice multi chiave stata aggiunta la colonna RDB STATISTICS alla tabella di sistema RDBSINDEX SEGMENTS Nota C una colonna con lo stesso nome nella tabella di sistema RDB INDICES che viene mantenuta per motivi di compatibilit e tuttora rappresenta la selettivit totale dell indice ma non pi usata dall ottimizzatore per un confronto sull indice completo a partire dai database con ODS11 e successivi 22 Capitolo 4 Miglioramenti di Firebird 2 1 Alcuni miglioramenti e modifiche sono stati effettuati in Firebird 2 1 per avvicinare lo sviluppo del motore alle modifiche architetturali pianificate per Firebird 3 Nota A meno di indicazione contraria si tratta di modifiche e miglioramenti a partire dalla versione v 2 1 e succes sive Finalmente funzionano le Forced Writes su Linux A Peshkov Per la massima sicurezza dei database si usa configurare il server in modalit a scritture sincrone mettendo a ON le c d Forced Writes Questo funzionamento fortemente raccomandato nei sistemi installati presso i clienti fa in modo che le chiamate di sistema atte a scrivere cio write proseguano solo dopo aver effettivamente e completamente effettuato la scrittura fisica sul disco Di consegue
148. get_context SYSTEM CLIENT_ADDRESS new jrn_lasttransaction rdb get_context USER_TRANSACTION Trn_ID end commit xecute procedure set_context skidder 1 A A insert into journal jrn_id values 0 set term Poich rdb set_context riporta 1 o zero pu funzionare anche in una semplice frase SELECT Esempio SQL gt select rdb set_context USER_SESSION Nickolay ru CNT gt from rdb database RDBSSET_CONTEXT Il risultato uguale a 0 significa che precedentemente non era definita e che stata impostata in questo caso a Tu SQL gt select rdb set_context USER_SESSION Nickolay ca CNT gt from rdb database RDBSSET_CONTEXT 73 Novit nel Data Manipulation Language DML Il risultato 1 significa che era gi definita e che l abbiamo modificata in questo caso in ca SQL gt select rdb set_context USER_SESSION Nickolay NULL CNT gt from rdb database RDBSSET_CONTEXT 1 dice che era definita cambiandola in NULL l abbiamo cancellata SQL gt select rdb set_context USER_SESSION Nickolay NULL CNT gt from rdb database RDBSSET_CONTEXT A questo punto 0 significa che non successo nulla non esisteva prima e non esiste adesso Miglioramenti nella gestione dei PLAN specificati dall utente D Yemanov 1 Frammenti di PLAN sono pro
149. gli argomenti di GROUP BY sono tipi BLOB si possono prepare ma provocano eccezioni durante l esecuzione Funzioni integrate v 2 1 Sono state migliorate alcune delle funzioni integrate esistenti e ne sono state aggiunte un bel po Nuove funzioni integrate Adriano dos Santos Fernandes Oleg Loa Alexey Karyakin Un certo numero di funzioni sono state integrate direttamente nel motore di Firebird 2 1 per sostituire analoghe funzioni presenti nelle UDF con lo stesso nome Le funzioni integrate non vengono usate se nel database sono dichiarate con lo stesso nome le funzioni delle UDF Nota La scelta tra UDF e funzione integrata viene decisa al momento della compilazione dello statement Questo implica che tutto il codice PSQL compilato mentre sono definite le UDF nel database continuer a richiedere che le dichiarazioni delle UDF siano presenti fino a che non viene ricompilato La nuova funzione integrata DECODE non ha un equivalente nelle librerie UDF distribuite con Firebird L elenco di tali funzioni esposto in dettagli in Appendice A Nota Molte di queste funzioni integrate erano gi disponibili in Firebird 2 ODS 11 ad esempio LOWER TRIM BIT_LENGTH CHAR_LENGTH e OCTET_LENGTH 56 Novit nel Data Manipulation Language DML Miglioramenti alle funzioni integrate A dos Santos Fernandes EXTRACT WEEK FROM DATE Richiesta in CORE 663 La funzione EXTRACT sta
150. gnorate all inizio della scansione permettendo una scansione dell indice pi veloce Nota I predicati IS NULL e IS NOT DISTINCT FROM richiedono ancora comunque la l accesso alle chiavi a NULL e pertanto disabilitano la summenzionata ottimizzazione Miglioramenti nella compressione degli indici A Brinkman L algoritmo che comprime gli indici stato completamente rifatto migliorando grandemente le prestazioni di moltissime query 98 Indici e ottimizzazioni Manutenzione della selettivit per segmento D Yemanov A Brinkman Le selettivit degli indici sono ora memorizzate per ogni segmento Questo significa che per un indice composito sulle colonne A B C vengono calcolati tre indici di selettivit che riflettono sia un riscontro totale sull indice che tutti i parziali Sarebbe a dire che la selettivit dell indice multi segmento coinvolge sia quella del solo segmento A come sarebbe se ci fosse un indice a segmento unico dei segmenti A e B insieme come sarebbe se ci fosse in indice con segmento doppio ed il riscontro con tutti e tre i segmenti A B C praticamente in tutti i modi si possa usare un indice composto Questo lascia pi opportunit all ottimizzatore per migliori decisioni sui percorsi da utilizzare nei casi in cui si cerchino riscontri su indici parziali I valori di selettivit per segmento sono memorizzati nella colonna RDB STATISTICS della tabella RDB INDEX_SEGMENTS La colonna c
151. gomenti precedenti a quelli di cui vuole adoperare il proprio default Pertanto non si possono fare cose come fornire il gli primo e secondo argomento non fornire il terzo argomento e fornire il quarto 84 SQL Procedurale PSQL La sostituzione dei valori di default avviene durante l esecuzione Se definita una procedura con default P1 e la si chiama da un altra procedura P2 saltando alcuni dei parametri finali che hanno il default allora i valori di default per P1 verranno sostituiti dal motore solo al momento in cui inizia l esecuzione di P1 Questo significa che cambiando i valori di default non necessario ricompilare P2 Tuttavia sempre necessario scollegare tutte le connessioni client come descritto nel Borland InterBase 6 beta Data Definition Guide DataDef pdf nella sezione Altering and dropping procedures in use Esempi CONNECT ERM EFATE PROCEDURE P1 X INTEGER 123 URNS Y INTEGER DI WPa v EGIN Y X SUSPEND N O ET TERM gt A S A J vu Q w SELECT FROM P1 EXECUTE PROCEDURE P1 S CREA PROCEDURE P2 RETURNS Y INTEGER A B n EGIN FOR SELECT Y FROM P1 INTO Y DO SUSPEND END COMMIT SET TERM SELECT FROM P2
152. gt lt elenco di colonne derivate gt lt parentesi chiusa gt lt elenco di colonne derivate gt lt nome colonna gt lt virgola gt lt nome colonna gt Esempi a Tabella derivata semplice SELECT FRO SELECT RDB RELATION_NAME RDBSRELATION_ID FRO RDB RELATIONS AS R RELATION_NAME RELATION_ID b Aggregazione su una tabella derivata che contiene a sua volta un aggregato wn eae Q H SELECT RDBSRELATION_NAM Count Lo Fl RDBSRELATIONS R JOIN RDBSRELATION_FIELDS RF ON RF RDBSRELATION_NAME R RDBSRELATION_NAME GROUP BY R RDBSRELATION_NAME AS DT RELATION_NAME FIELDS GROUP BY DT FIELDS c Esempio con UNION e ORDER BY 63 Novit nel Data Manipulation Language DML SELECT R RDBSRELATION_NAME R RDBSRELATION_ID RDBSRELATIONS R ION ALL SELECT R R RDBSOWNER_NAME RDBSRELATION_ID RDBSRELATIONS R ORDER BY 2 AS DT WHERE DT RDBSRELATION_ID lt 4 Note essenziali e Ogni colonna nelle tabelle derivate deve avere un nome Le espressioni innominate come le costanti dovreb bero essere aggiunte con una alias oppure specificando l elenco delle colonne risultato e Il numero di campi nella lista di colonne risultante dovrebbe essere
153. hi purch le architetture del server supportino i servizi L algoritmo di criptazione SHA 1 Questo metodo porta ad una situazione in cui 1 una parola criptata per l utente A non valida per l utente B ovvero a partire da password uguali vengono generate codici criptati diversi 2 quando un utente cambia la sua password anche se la stringa identica alla precedente il dato memorizzato in RDB USERS RDB PASSWD diverso Sebbene questa situazione da sola non aumenti la resistenza ad un tentativo di attacco brutale di ottenere la password rende l analisi visuale di una password rubata molto pi difficile 122 Sicurezza Il nuovo database della sicurezza La struttura del database della sicurezza stata cambiata In generale adesso contiene una patch di Ivan Prenosil con qualche piccola modifica che permette ad ogni utente di modificare la propria password e In Firebird 1 5 la tabella USERS poteva essere letta da PUBLIC una necessit del motore senza la quale il sistema di validazione delle password non avrebbe funzionato La soluzione di Ivan usa una vista con la condizione WHERE USER Questo funzionava a causa di un altro problema nel motore che in SQL lasciava la variabile USER vuota non authenticator come sembra dal codice del motore Una volta corretto tale problema diventa possibile aggiungere la condizione USER authenticator A breve termine questo andava bene in quanto il nome utente vien
154. hkov C Valderrama Fino alla versione di Firebird 2 0 per dichiarare un filtro per i blob l unica sintassi possibile era declare filter lt name gt input_type lt number gt output_type lt number gt entry_point lt function_in_library gt module _name lt library_name gt In alternativa adesso c questa nuova sintassi declare filter lt name gt input_type lt mnemonic gt output_type lt mnemonic gt entry_point lt function_in_library gt module _name lt library_name gt dove lt mnemonic gt si riferisce ad un identificatore del sottotipo riconosciuto dal motore Attualmente essi sono binary text ed altri sopratutto di esclusivo uso interno ma un utente con particolari necessit potrebbe aggiungere un nuovo codice mnemonico in rdb types ed usarlo poich controllato solo al momento della dichiarazione Il motore prende e memorizza poi il solo valore numerico associato Va ricordato che i valori definibili dall utente per i codici mnemonici dei sottotipi blob possono essere soltanto negativi Per ottenere la lista dei tipi predefiniti lanciare select RDBSTYPE RDBSTYPE_NAME RDBSSYSTEM_FLAG from rdbStypes where rdb field_name RDBSFIELD_SUB_TYP Fl RDBSTYPE RDBSTYPE_NAME RDBSSYSTEM_FLAG BINARY TEXT BLR ACL RANGES SUMMARY FORMAT TRANSACTION_DESCRIPTION EXTERNAL FILE DESCRIPTION DIDO KRWNEO PEpHEHHEEHEHHE Esempi
155. hot table stability consistency anche se la transazione partita con un livello di isolamento pi basso Per rinfrescare l istantanea o snapshot la transazione corrente dovrebbe essere terminata e le tabelle di moni toraggio vanno reinterrogate nel contesto di una nuova transazione 111 Caratteristiche amministrative Monitoraggio di connessioni multiple D Yemanov Nelle versioni 2 1 0 e 2 1 1 un utente generico non SYSDBA con pi di una connessione avrebbe potuto moni torare solo quanto appartenente alla CURRENT_CONNECTION A partire dalla 2 1 2 miglioria CORE 2233 un utente generico non SYSDBA pu controllare tutte le sue connessioni attive contemporaneamente Scopo e sicurezza e L accesso alle tabelle di monitoraggio permesso in DSQL e PSQL e Il monitoraggio completo permesso a SYSDBA e al proprietario del database e Gli utenti normali sono vincolati alle informazioni relative alla propria connessione cio le altre connessioni sono a loro invisibili Metadata MONS DATABASE database collegato MON DATABASE_NAME database pathname o alias MON PAGE_ SIZE page size MONSODS_MAJOR parte intera del numero di versione ODS MONSODS_MINOR parte frazionaria del numero di versione ODS MONSOLDEST_TRANSACTION numero della Oldest Interesting Transaction MON SOLDEST_ACTIVE numero della Oldest Active Transaction MON SOLDEST_SNAPSHOT numero dell Oldest Snapshot Transaction MO
156. i isql riporta il numero di linea in cui avviene un errore in un comando DML che fallisce nell e secuzione di uno script C di pi in error line numbers e Gli errori di DDL per default sono colti durante la preparazione o l esecuzione poich isql usa AUTODDL ON per default Tuttavia se si pone AUTO DLL a OFF il server si lamenta solo quando lo script richiede una esplicita COMMIT e questo pu comprendere vari comandi e La caratteristica pu essere attivata o disattivata interattivamente o da script attraverso il comando n ET BAIL ON OFF Come altri comandi SET usando solo SET BAIL semplicemente rovescia lo stato precedente scambiando attivato con disattivato Usando solo SET mostrera lo stato di tutti gli switch e Anche se BAIL attivo non significa che cambia il funzionamento di isql L altro requisito che deve essere soddisfatto che la sessione non sia interattiva Una sessione non interattiva quella in cui l utente chiama isql in modalit processo dandogli in ingresso uno script Esempio isql b i my_fb sql o results log m m2 Suggerimento Tuttavia se l utente carica interattivamente isql e successivamente lancia uno script con il comando INPUT questa resta ancora una sessione interattiva anche se isql sa di eseguire uno script Esempio isql Use CONNECT or CREATE DATABASE to specify a database SQL gt set bail SQL gt input my_fb sql SQL gt Z 138 U
157. i Firebird 2 5 beta nelle versioni POSIX si risolto un problema in cui lo strumento di copia completa di nBackup si impadroniva di tutte le risorse di I O nel fare la copia di grandi database bloccando completamente gli altri lavori sul server Questo miglioramento stato riportato anche in V 2 1 3 Ora nBackup cerca di leggere prima dalla cache del sistema prima di cercare di leggere da disco riducendo sostanzialmente il quantitativo di I O necessario Nota Il costo potrebbe essere un aumento variabile dal 10 al 15 per cento in pi del tempo impiegato per effettuare una copia completa in condizioni di grande carico di lavoro Riferimenti CORE 2316 135 Utilit a linea di comando Manuale utente P Vinkenoog Un manuale utente ancora solo in inglese per NBak NBackup stato gi preparato Pu essere scaricato dal sito Firebird nella zona relativa alla documentazione www firebirdsql org pdfmanual Il nome del file Fi rebird nbackup pdf gbak programma di utilit per copia trasporto e recupero Un certo numero di miglioramenti sono stati apportati al programma di utilit gbak Comportamento e nuove funzioni V Khorsun Il nuovo switch separato per la gbak RECREATE DATABASE OVERWRITE i stato aggiunto per impedire a chi non se lo aspetta di sovrascrivere accidentalmente il proprio database come poteva facilmente accedere con la forma abbreviata del vecch
158. i NULL per aderire allo standard N Samofatov La posizione dei NULL in un insieme ordinato stata modificata in accordo con le specifiche dello standard SQL in modo tale che sia consistente con l ordinamento cio se un ordinamento ASC ENDING li mette alla fine allora un ordinamento DESC ENDING li mette all inizio o viceversa Questo si applica alle basi di dati create con la ODS 11 o successiva poich per funzionare questa modifica ha bisogno delle modifiche apportate agli indici Esempi Importante Se si forza il posizionamento di default non pu essere usato nessun indice per l ordinamento Pertanto non potr essere usato nessun indice n per un ordinamento ASCENDING se viene specificato NULLS LAST n per un ordinamento DESCENDING se si specifica NULLS FIRST Database proc fdb SQL gt SOL gt create table gnull a int insert into gnull values null insert into gnull values 1 select a from gnull order by a lt null gt 1 select a from gnull order by a asc lt null gt al 68 Novit nel Data Manipulation Language DML SQL gt select a from gnull order by a desc lt null gt SQL gt select a from gnull order by a asc nulls first lt null gt 1 SQL gt select a from gnull order by a asc nulls last lt null gt SQL gt select a from gnull order by a desc nulls last lt null gt SQL gt select a from gnull order by a desc nulls first lt null gt dl
159. icurarsi di configurare abbastanza spazio nella prima ed unica locazione che il motore riesce ad accedere Note Generali Release intermedia 2 1 2 Con Firebird 2 1 2 si correggono un certo numero di problemi che si sono verificati fin dalle versioni 2 1 e 2 1 1 Modifica importante nei parametri del DPB nelle API Per parecchio tempo attraverso una scappatoia nella gestione dei parametri del DPB si potevano abilitare gli utenti ordinare ad impostare parametri di connessione che avrebbero potuto danneggiare le basi di dati o attribuire loro l accesso ad operazioni riservate al SYSDBA Questo buco stato chiuso ma una modifica che pu influenzare le applicazioni esistenti gli strumenti di gestione e i gestori di connessione driver o componenti I dettagli sono nel capitolo 3 Modifiche alle API di Firebird e all ODS Inoltre include tre aggiustamenti minori provenienti da richieste degli utenti In CORE 2243 si richiede un miglioramento per ridurre la confusione e le duplicazioni derivate dalle regole del Microsoft Visual C 8 runtime assembly per le piattaforme XP Server2003 e Vista che hanno finora danneggiato l installazione del pacchetto per Windows della versione 2 1 Vlad Khorsun ha soddisfatto tali richieste in questa versione Per maggiori informazioni fare riferimento alla sezione per l installazione su Windows del documento Firebird 2 Migrazione e installazione Dmitry Yemanov ha migliorato il sistema di
160. ificano questa situazione e creano il database security2 fdb con le FW ad ON Per importare un database della sicurezza esistente da ogni precedente rilascio si raccomanda di usare il pro gramma di utilit gfix per attivare le Forced Writes Notare che impostando le Forced Writes ad ON ad qualsiasi database su un server Firebird 1 5 x o precedenti su Linux non avrebbe nessun effetto le FW non funzionano su Linux in questi server Firebird Note Generali Riguardo queste note Queste note per la versione 2 1 sono completate con quanto gi scritto durante lo sviluppo ed il rilascio nel pas saggio dalla versione 2 0 a questa 2 1 x Una documentazione separata per la versione 2 0 x non viene distribuita con il package della 2 1 x Le sezioni che riguardano l installazione la migrazione e compatibilit ed i problemi risolti sono state rimosse da questo documento e sono distribuiti come documenti indipendenti nella sottodirectory fbroot doc Come le note di rilascio ese coprono sia la versione 2 0 che la 2 1 Per ammorbidire la transizione da versioni precedenti sarebbe necessario studiare attentamente per intero sia le note di rilascio che la guida di migrazione e installazione Inoltre si consiglia di prendersi il tempo necessario a collaudare questa release con l applicazione finale possibilmente con dati e carico di lavoro reali Alcune query potrebbero non funzionare come previsto o non funzionare pi per nulla a cau
161. ificata con IS NOT DISTINCT La frase disponibili sia in DSQL che in PSQL Sintassi UPDATE OR INSERT INTO lt table or view gt lt column_list gt UES lt value_list gt MATCHING lt column_list gt RETURNING lt column_list gt INTO lt variable_list gt UPDATE OR INSERT INTO T1 F1 F2 VALUES F1 F2 2 UPDATE OR INSERT INTO EMPLOYEE ID NAME VALUES ID NAME RETURNING ID 3 UPDATE OR INSERT INTO T1 F1 F2 51 Novit nel Data Manipulation Language DML VALUES F1 F2 MATCHING F1 4 UPDATE OR INSERT INTO EMPLOYEE ID NAME VALUES ID NAME RETURNING OLD NAME Note sull uso 1 Quando si omette la clausola MATCHING richiesta l esistenza di una chiave primaria 2 Sono necessari i relativi permessi di INSERT e UPDATE sulla lt table or view gt 3 Se presentela clausola RETURNING allora la frase descritta dall API con una isc_info_sql_stmt_ exec_procedure altrimenti descritta come una isc_info_sql_stmt_insert Nota Un errore di multiple rows in singleton select righe multiple in una select che richiede un risultato a riga singola viene lanciato se la clausola RETURNING presente e pi di un record soddisfa le condizioni di ricerca La frase MERGE Adriano dos Santos Fernandes v 2 1 Que
162. imento preferibile utilizzare la funzione interna LOWER piuttosto che chiamare la UDF Altre modifiche alle UDF Modifiche nella compilazione C Valderrama Contributor La libreria FBUDF non dipende pi dalla libreria lib fbclient per essere compilata 147 Capitolo 15 N ovita e modifiche nei parametri di configurazione A Peshkov Autenticazioni V 2 1 Sulla piattaforma Windows a partire dalla versione 2 1 si pu usare authentication per configurare la modalit di accesso al server nel caso in cui se ne preferisca una diversa dal default native Importante In Firebird 2 1 precedentemente alla v 2 1 3 il default era mixed Facendo un aggiornamento alla v 2 1 3 dalla v 2 1 v 2 1 1 o v 2 1 2 senza impostare esplicitamente il parametro l autenticazione trusted non funziona Per tornare all impostazione precedente togliere il commento al parametro e impostarlo a mixed Tracker reference CORE 2376 e trusted fa uso del sistema di autenticazione nativo di Windows la c d trusted authentication che nelle giuste condizioni dovrebbe essere il modo pi sicuro per autenticare gli utenti in Windows e native imposta il funzionamento dell autenticazione nel tradizionale modo di Firebird richiedendo agli utenti di identificarsi con un nome utente ed una password definiti nel database di sicurezza e mixed permette entrambi i funzionamenti V Khorsun RelaxedAliasChecking V
163. imite superiore usato dalla transazione di sweep quando avanza l OIT globale Tutte le transazioni oltre la soglia dell OIT sono considerate attive Normalmente equivalente al MON TRANSACTION_ID ma i COMMIT RETAINING oppure i ROLLBACK RETAINING possono bloccare il MON TOP_TRANSACTION in stallo quando si incrementa l ID della transazione e MONS AUTO_UNDO indica lo stato di auto undo impostato per la transazione cio se stato impostato un SAVEPOINT a livello di transazione L esistenza di un tale punto di salvataggio a livello di transazione permette di cancellare le modifiche effettuate con ROLLBACK e la transazione viene semplicemente committata Se il punto di salvataggio non esiste oppure esiste ma il numero di modifiche esorbitante allora viene eseguito un ROLLBACK e la transazione viene marchiata nel TIP come dead MONS STATEMENTS statement preparati MON STATEMENT_ID ID dello statement MON ATTACHMENT_ID ID della connessione MON TRANSACTION_ID ID della transazione MONS STATE stato dello statement 0 idle 1 active MONSTIMESTAMP data ed ora di inizio dello statement MON SQL_TEXT testo dello statement quando appropriato MON STAT_ID ID della statistica e La colonna MON SQL_TEXT contiene NULL per gli statement di GDML e Le colonne MON TRANSACTION_ID e MONSTIMESTAMP contengono valori validi solo per gli statement attivi e II PLAN ed i valori di eventuali parametri non sono al momento disponibili
164. io switch R EPLACE DATABASE inni In sintesi e gbak R oppure gbak r adesso applica il nuovo switch R ECREATE_DATABASE e non sovrascrive pi un database esistente se manca l argomento O VERWRITEI e La precedente vecchia forma abbreviata R EPLACE DATABASE stata cambiata in REP LACE_DATABASE Questo switch non accetta l argomento O VERWRITEI e Lo switch REP LACE_DATABASE deve essere ritenuto sconsigliato cio potrebbe diventare non pi disponibile in una prossima futura release di Firebird Questa modifica comporta che ogni procedura script o periodica che utilizza gbak r o gbak R senza modifiche dar un eccezione se il database esiste Per continuare a far funzionare gli script permettendo loro di sovrascrivere incondizionatamente i database bisogna modificare i comandi in modo da usare il nuovo switch con l argomento OVERWRITE oppure la nuova forma abbreviata del vecchio switch REPLACE_DATABASE gbak compatibile con tutte le versioni C Valderrama V 2 1 nella sua ultima versione gbak pu essere utilizzato per fare il restore di una qualsiasi precedente ver sione di Firebird 136 Utilit a linea di comando Nascondere il nome utente e la password A Peshkov Richiesta CORE 867 V 2 1 gbak adesso cambia il primo parametro per impedire che si possano leggere il nome utente e la password con il comando ps axf il Linux gbak V ed il parametro contator
165. ion WIN1250 collation PXW_CSY collation PXW_HUN collation PXW_HUNDC lt charset gt Nota Il simbolo this viene usato per indicare la directory in cui il manifest file stesso Inoltre l estensione della libreria va omessa Nuovi set di caratteri ed ordinamenti Due nuovi set di caratteri aggiunti in Firebird 2 sono di particolare interesse per chi ha litigato in passato con i pasticci generati da UNICODE_FSS nelle versioni precedenti Set di caratteri UTF8 Il set di caratteri UNICODE_FSS ha diversi problemi una vecchia versione di UTF8 che accetta stringhe malformate e non determina la lunghezza massima corretta di una stringa In FB 1 5 X UTF8 di fatto un alias di UNICODE_FSS Ora UTF8 un nuovo set di caratteri senza i problemi correlati a UNICODE_FSS Ordinamenti UNICODE per UTF8 UCS_BASIC ordina come UTF8 senza nessuna specifica sarebbe UNICODE in ordine binario L ordinamento UNICODE ordina invece usando l UCA Unicode Collation Algorithm Esempio di ordinamenti isql q ch dos850 SQL gt create database test fdb SQL gt create table t c Fe character set utf8 SQL gt insert into SQL gt insert into A SQL gt insert into values a SQL gt insert into values b SQL gt insert into t values B SQL gt select from t order by c collate ucs_basic values t values y su t yy t i 103 Supporto alle lingue internazionali INTL ooo
166. ione viene fatto solamente durante l esecuzione del comando Chi sviluppa deve prendere le necessarie precauzioni per evitare che l aggregazione risolva ad un overflow di precisione Se un qualche dato del DTS un numero approssimato allora ogni dato nel DTS deve essere numerico altrimenti viene generato un errore Se un qualche dato del DTS di un tipo orario DATE TIME TIMESTAMP allora ogni dato nel DTS deve essere esattamente dello stesso tipo del primo se un qualche dato del DTS un BLOB allora tutti i dati del DTS devono essere BLOB e tutti dello stesso sottotipo UNION permesse nelle subquery ANY ALL IN D Yemanov L elemento subquery in una ricerca ANY ALL o IN pu essere una query UNION 66 Novit nel Data Manipulation Language DML Miglioramenti nella gestione del NULL Sono state aggiunte le seguenti caratteristiche che riguardano la gestione del NULL in DSQL Nuovo predicato NOT DISTINCT per valutare l uguaglianza di due operandi NULL O Loa D Yemanov Si tratta di un nuovo predicato di equivalenza che si comporta esattamente come i predicati di uguaglianza di suguaglianza ma invece di controllare l uguaglianza verifica se i due operandi sono distinti fra loro Pertanto IS NOT DISTINCT tratta NULL uguale NULL come se fosse vero poich NULL o un espressione che vale NULL non distinguibile da un altra Questo disponibile sia in DSQL che in PSQL Sintassi lt valor
167. iorato per elencare anche le viste di sistema nel caso ne vengano create nel futuro Il comando SHOW COLLATIONS A dos Santos Fernandes V 2 1 Elenca tutte le coppie set di caratteri ordinamenti dichiarati nel database SET HEAD ing C Valderrama Alcuni ritengono utile eseguire in isql una SELECT ed ottenerne il risultato in un file per poterlo elaborare successivamente in un secondo momento specie se il numero delle colonne rende la visualizzazione di isql poco pratica Tuttavia isql per default stampa continuamente le testate di colonna e in tal caso sono una seccatura Pertanto la stampa delle testate che prima era una caratteristica fissa ora un opzione impostabile interattiva mente o da script con il comando isql SET HEADing ON OFF Come per altri comensi SET usare semplicemente SET HEAD scambia lo stato fra attivo e non attivo Nota Non esiste un opzione nella linea di comando per impostare le testate Usando il solo comando SET mostra lo stato di SET HEAD insieme a tutti gli altri switch che possono essere impostati in isql 140 Utilit a linea di comando SET SQLDA_DISPLAY ON OFF A dos Santos Fernandes Il comando SQLDA_DISPLAY mostra i parametri di SQLDA in ingresso per le INSERT UPDATE e DELETE Era precedentemente disponibile solo nei pacchetti di DEBUG e adesso stato inserito anche nei pacchetti pubblici Visualizza le informazioni delle SQLVAR Ogni SQLVAR
168. ipulation Language DML UNION DISTINCT ALL Coercizione del tipo di dato nelle UNION migliorata A Brinkman Il sistema che risolve quale tipo di dato attribuire in automatico ad una aggregazione di valori fra loro compatibili come tra le varie espressioni di un CASE 0 le colonne nella stessa posizione in una query unione adesso utilizza un insieme di regole pi raffinato Regole sintattiche Sia DTS l insieme dei tipi di dato da cui si deve determinare il tipo di dato risultante 1 Tutti i dati in DTS devono essere fra loro compatibili 2 Si possono verificare i seguenti casi a se uno qualsiasi dei tipi di dato in DTS una stringa di caratteri allora i se uno qualsiasi dei tipi di dato in DTS una stringa di caratteri a lunghezza variabile allora il tipo risultante una stringa di caratteri a lunghezza variabile con lunghezza massima in caratteri uguale al pi grande dei tipi di dato nel DTS ii Altrimenti il tipo del dato risultante una stringa di caratteri a lunghezza fissa con lunghezza in caratteri uguale alla massima lunghezza dei tipi di dato nel DTS ill Il set di caratteri e l ordinamento vengono presi dalla prima stringa del DTS se tutto il DTS in precisione numerica esatta allora il risultato numerico esatto con scala uguale al massimo delle scale dei tipi di dato nel DTS e la precisione massima dei dati del DTS Nota ATTENZIONE il controllo per l overflow di precis
169. it le molte correzioni riguardo buchi e regressioni effettuate durante lo sviluppo di Firebird 2 0 e 2 1 sono elencate in ordine cronologico discendente in un documento separato Bugfixes Firebird 2 Project Team Capitolo 2 Le novit di Firebird 2 Nuove caratteristiche implementate Questo capitolo riassume le nuove caratteristiche implementate in Firebird 2 comprendendo sia la serie 2 1 che la 2 0 x Struttura su disco On Disk Structure I Database creati o recuperati da un backup sotto Firebird 2 hanno una struttura su disco ODS di livello 11 o superiore e Firebird 2 1 crea database con ODS 11 1 Pu leggere database anche ODS inferiori ma molte delle nuove caratteristiche non saranno disponibili a tali database e Firebird 2 0 x crea database con ODS 11 alle volte indicata come 11 0 Per avere tutte le caratteristiche della versione 2 1 necessario operare un aggiornamento dalla ODS 11 e precedenti facendo una copia di backup e recuperando tale copia con un server v 2 1 Trigger a livello Database v 2 1 Questi nuovi database triggers sono moduli PSQL definiti dall utente che possono essere utilizzati per l esecuzione durante gli eventi a livello di connessione o di transazione Vedere Trigger a livello di database SQL ed Oggetti SQL Tabelle temporanee globali v 2 1 Sono state implementate secondo lo standard SQL le tabelle temporanee globali global temporary tables o GTT Queste tabel
170. iure i ERI Lari 143 Nuovi stati 0 modi di shutdown i 143 Pacchettie Installazioni oie eare aa riparano E i iae eea oeiia e aiaee elena 144 Aggiunto a instsvc exe un parametro per il nome dell istanza 144 Revisionata la documentazione di instalzzazione su Win32 ui eeeeeeeeeeee 144 Riconoscimento di Gentoo FreeBSD durante l installazione iene 144 14 Funzioni estett WDE ss eaccaiiec aces ape NOEN A REER EEO AEREA AEE AEA E EENE TAN ARNAN EREA EENAA 145 Segnalare un valore SQL NULL attraverso un puntatore Null ee 145 Miglioramenti dei messaggi diagnostici delle librerie UDF eee ere 146 UDF aggiunte e modificat ii are ae lana 146 IB_UDF_rand e IB_UDF_srand eee eeeeseeeeeeeaseeeeeeaseneeeeaaanees 146 IBAUDE loweraa snai e en i Cena 147 Altre modifiche alle UDE arborea geniali E E ani 147 Modifiche nella compilazione tetetete tetetete tettette tets tttetereteereeererereeeeese 147 15 Novit e modifiche nei parametri di configurazione ice ze zen ezeeeeee 148 Autenticazione enore a rrea e de ee aus 148 R laxedAliasCheekinp girella iaia 148 MaxFileSystemCach v ii ili ali iaia 149 DatabaseGrowthInerement sla a Pair cea alle pe LO sele atei 149 External Pile Aces itis aie ina yuk gales sienna RE vb aus Wa es EA gach a Sed E A eben ant Bee den 150 LepacyHashi a goose beni era ee esa
171. izzazione e del porting Claudio Valderrama Cile Esamina il codice sorgente scova e risolve i buchi progetta ed implementa su vari fronti fra cui miglioramenti all ISQL e alle UDF Vladislav Khorsun Ucraina Ingegnere DB progetta ed implementa le funzionalit SQL Arno Brinkman Olanda Miglioramenti al sistema di indici e di ottimizzazione nuove funzionalit DSQL Adriano dos San tos Fernandes Brasile Sviluppo del nuovo set di caratteri internazionali gestione dei campi testo e BLOB nuove funzionalit DSQL esami natore del codice sorgente Nickolay Samofatov Federazio Ha progettato ed implementato NBackup ha corretto il codi ne Rus ce ed ingegnerizzato il DB durante parte dello sviluppo della sa Canada versione 2 0 Paul Beach Francia Responsabile dei rilasci pacchettizzazioni HP UX MacOS e Solaris Pavel Cisar Repubbli Progettazione e coordinamento dei sistemi di test sviluppo e ca Ceca manutenzione dei driver Python per Firebird Philippe Makowski Francia Test della qualit del prodotto Paul Reeves Francia Pacchettizzazioni ed installazioni Win32 Sean Leyne Canada Organizzazione del bugtracker Dimitrios Ioannides Grecia Implementazione del nuovo bugtracker Jira Ann Harrison U S A Specialista tecnico molto attivo Jim Starkey U S A Specialista tecnico attivo occasionali correzioni al codice Roman Rokytskyy Germania Implementazione e coordinamento di Jaybir
172. l prossimo giro di aggiornamenti L indicatore di pronto viene acceso non appena avviene qualcosa di significativo nell ambito del processo e pertanto ritorner a rispondere alle richieste di monitoraggio Blocchi Per coordinare tutte le operazioni di lettura scrittura il richiedente pone un blocco esclusivo che influenza sia tutte le connessioni utente attive al momento sia quelle in corso per essere stabilite Richieste multiple contemporanee di monitoraggio sono accodate in serie Limitazioni e problemi noti 1 In un server Classic estremamente caricato le richieste di monitoraggio possono richiedere parecchio tem po per l esecuzione Nel frattempo altre attivit sia nuove interrogazioni che tentativi di connessione po trebbero essere bloccati fino al termine della richiesta di monitoraggio Nota Migliorato nellav2 1 3 2 Talvolta particolari condizioni di scarsa memoria possono far fallire alcune richieste di monitoraggio oppure provocano lo swap su disco di altri processi attivi La causa principale di questo problema il fatto che ogni record di MON STATEMENTS ha un blob MON SQL_TEXT che resta per tutto il periodo della transazione di monitoraggio Nella V 2 1 x ogni blob occupa una intera pagina di memoria anche se il suo effettivo contenuto pi piccolo Quando c un elevato numero di frasi preparate nel sistema diventa possibile esaurire tutta la memoria ed ottenere dei fallimenti 3 Un a
173. l server Avendo questo presente nei piani di aggiornare alcuni aspetti delleAPI nelle prossime versioni stata presa la decisione di non modificare il metodo di trasmissione delle password in Firebird 2 0 Nell immediato il problema pu essere risolto facilmente usando un software di IP tunneling come ZeBeDee per trasferire i dati da e per un server Firebird per entrambe le versioni 1 5 e 2 0 Al momento rimane il modo raccomandato di accedere ad un server Firebird attraverso Internet Altri miglioramenti isc_service_query erroneamente rivelava il percorso completo di un db Richiesta CORE 1091 126 Sicurezza V 2 1 Configurando il server con DatabaseAccess None isc_service_query riportava il percorso completo di nome file del database Adesso stato corretto per riportare il solo alias un argomento in pi a favore di rendere standard l uso degli alias Chiunque poteva leggere il log del server con le API di servizio Richiesta CORE 1148 Questa era una vulnerabilit della sicurezza minore Gli utenti normali adesso sono bloccati se cercano di acce dere al log del server attraverso le API di servizio Le richieste sono verificate esplicitamente al fine di assicurare che l utente autenticato sia SYSDBA Gestione del nuovo database della sicurezza A Peshkov Se si cerca di mettere un database di sicurezza di una versione precedente alla 2 sia esso un security fdb oppure un isc4 gdb rinominati nell
174. lation_name 4 from rdb relations where rdb relation_name like RDB amp ROUND ROUND lt number gt Riporta il numero arrotondato alla scala specificata lt number gt Esempio select round salary 1 1 0 from people Se la scala cio il secondo parametro negativo o omesso si arrotonda la parte intera Ad esempio ROUND 123 456 1 riporta 120 000 RPAD RPAD lt string1 gt lt leng Aggiunge lt string2 gt alla fine di lt string1 gt finch la th gt lt string2 gt lunghezza della stringa risultante raggiunge lt leng th gt Esempio select rpad x 10 from y 1 Se manca la seconda stringa si prende uno spazio 2 Se la stringa risultante supera la lunghezza data si tronca l ultima ripetizione di lt string2 gt 162 Le nuove funzioni integrate Funzione Formato Descrizione SIGN SIGN lt number gt Riporta 1 0 o 1 in funzione del segno del parame tro cio a seconda che sia rispettivamente positivo zero o negativo select sign x from y SIN SIN lt number gt Riporta il seno di un angolo espresso in radianti select sin x from y SINH SINH lt number gt Riporta il seno iperbolico di un numero select sinh x from y SORT SQRT lt number gt Riporta la radice quadrata di un numero select sqrt x from y TAN TAN lt number gt Riporta la tangente di un angolo espresso in radi
175. le OUTER JOIN A dos Santos Fernandes Richiesta CORE 979 v 2 1 Per qualche anomalia la RDB DB_KEY fisica ha sempre riportato un valore in ogni riga quando si specifica una OUTER JOIN pertanto effettuando un test su quei valori dove ci si aspetterebbe un NULL per 55 Novit nel Data Manipulation Language DML mancanza di corrispondenza nelle versioni precedenti il test avrebbe riportato un risultato errato rovesciato falso al posto di vero Ora RDB DB_KEY riporta correttamente NULL quando dovrebbe Riammesso l ordinamento nelle colonne BLOB e ARRAY Dmitry Yemanov v 2 1 Nelle prime pre release di Firebird 2 1 sono stati introdotti controlli per rifiutare gli ordinamenti nelle operazioni di ORDER BY GROUP BY e SELECT DISTINCT al momento della preparazione se la clausola di ordinamento implicitamente o esplicitamente implicava il sort su una colonna di tipo BLOB o ARRAY Questa modifica stata eliminata nella pre release RC2 non perch sbagliata ma perch molti utenti si sono lamentati che le loro applicazioni non funzionavano pi Importante Questo ritorno al passato non implica in nessun modo che tali query possano magicamente riportare risultati corretti Un BLOB generico non pu essere automaticamente convertito ad un tipo di dato ordinabile e pertanto come un tempo gli ordinamenti DISTINCT e gli argomenti di ORDER BY che includono BLOB usano il BLOB_ID Come succedeva prima le query dove
176. le predefinite sono instanziate su richiesta per un uso specifico a livello di transazione o di connessione con dati non persistenti che il motore Firebird memorizza su tabelle temporanee Vedere Tabelle temporanee globali Global Temporary Tables Espressioni con tabelle comuni CTE e query con DSQL recursive v 2 1 Si tratta di una nuova caratteristica definita nello standard per rendere possibili le query recursive dina miche Vedere Common Table Expressions Le novit di Firebird 2 Clausola RETURNING v 2 1 Questa clausola opzionale RETURNING disponibile per tutte le operazioni singole di UPDATE INSERT e DELETE Vedere La clausola RETURNING Frase UPDATE OR INSERT v 2 1 Adesso si possono scrivere frasi SQL capaci di effettuare un aggiornamento ad un record esistente oppure un inserimento in funzione dell esistenza o meno del record selezionato Vedere La frase UPDATE OR INSERT Frase MERGE v 2 1 Questa nuova sintassi esegue un aggiornamento ad un record esistente se soddisfa una certa condizione oppure esegue un inserimento altrimenti Vedere La frase MERGE La funzione LIST v 2 1 La nuova funzione di aggregazione LIST lt QUALCOSA gt recupera tutti i QUALCOSA in un gruppo e li raggruppa in una lista separata da virgola Vedere La funzione LIST Tante nuove funzioni integrate v 2 1 Tutte queste nuove funzioni sostituiscono le vecchie equivalenti funzioni UDF distribuite nelle librerie UDF
177. lle permanenti tramite il valore del campo RDB RELATIONS RDB RELATION_TYPE e Una GTT con l opzione ON COMMIT PRESERVE ROWS ha RDB RELATION_TYPE 4 35 Novit sul Data Definition Language DDL e Una GTT con l opzione ON COMMIT DELETE ROWS ha RDB RELATION_TYPE 5 Nota Per la completa lista dei valori vedere RDB TYPES Supporto alle caratteristiche del linguaggio Le stesse funzionalit che si possono utilizzare con le tabelle standard indici trigger vincoli a livello di campo e di tabella sono disponibili anche nelle GTT con certe limitazioni sulle correlazioni tra GTT e tabelle normali a sono proibiti riferimenti tra GTT e tabelle regolari b Una GTT con ON COMMIT PRESERVE ROWS non pu avere riferimenti con una GTT con ON COM MIT DELETE ROWS c Un vincolo di dominio non pu riferirsi a nessuna GTT Note di implementazione Un istanza di una GTT come insieme di record di dati creati e visibili all interno una data transazione o con nessione creata quando la GTT utilizzata per la prima volta di solito al momento di una prepare Ogni istanza ha il suo insieme privato di pagine nel quale sono memorizzate i dati e gli indici I record e gli indici hanno la stessa struttura fisica delle tabelle permanenti Al termine della connessione o transazione tutte le pagine dell istanza di una GTT sono rilasciate immediata mente Assomiglia a quanto accade quand
178. lo stesso del numero di colonne nella espressione della query e L ottimizzatore in grado di gestire in modo molto efficiente le tabelle derivate Tuttavia se la tabella derivata coinvolta in una INNER JOIN e contiene subquery non si pu ottenere un ordinamento sulla join e le prestazioni ne soffrono Sintassi per ROLLBACK RETAIN D Yemanov In DSQL adesso supportata anche la frase ROLLBACK RETAIN Il rollback retaining era stato introdotto in InterBase 6 0 ma questa modalit di rollback poteva essere usata solo attraverso una chiamata API la isc_rollback_retaining Invece il commit retaining poteva essere in vocato sia con la chiamata API isc_commit_retaining sia usando il comando DSQL COMMIT RETAIN Firebird 2 0 aggiunge una clausola opzionale RETAIN alla comando DSQL ROLLBACK per renderlo consistente al COMMIT RETAINI La sintassi simile a quella del COMMIT RETAIN Sintassi ROWS D Yemanov La sintassi ROWS si usa per limitare il numero di righe riportate da un espressione di selezione Viene applicata alla fine di una frase di SELECT di livello principale e specifica il numero di righe da riportare al programma principale Di fatto costituisce un alternativa meglio comprensibile alle clausole FIRST SKIP e oltre ad essere in accordo con lo standard SQL pi recente la sintassi ROWS da alcuni benefici extra Pu infatti essere usata nelle UNION in ogni tipo di subquery
179. lsiasi regola generale Pertanto stato aggiunto al Classic e al Superserver su Linux codice per neutralizzare questi problemi ed automatizzare la generazione di un file di core dump all abort causato da BUGCHECK Il server Firebird esegue il necessario cwd change working directory ad una locazione scrivibile tmp e imposta la dimensione limite del file di core in modo tale che il limite soft eguagli il limite hard Nota Nelle versioni normali cio release il sistema automatico di core dump viene attivato solo sein firebird conf viene impostato a true il parametro BugcheckAbort Nelle versioni debug sempre attivo Per dis abilitare questo sistema non va dimenticato che il server Firebird va fatto ripartire cos come ad ogni modifica dei parametri 32 Capitolo 5 Novita sul Data Definition Language DDL In questo capitolo sono elencati le aggiunte ed i miglioramenti aggiunti alla parte relativa al linguaggio di defi nizione dei dati SQL DDL durante lo sviluppo di Firebird 2 Quelli evidenziati come introdotti nella versione 2 1 sono disponibili solo nei database con ODS 11 1 e successive Ricerca rapida e Trigger a livello di database e Tabelle temporanee globali Global Temporary Tables e Uso degli alias di colonna in CREATE VIEW e CREATE TRIGGER standard SQL2003 e Sintassi alternativa per i campi calcolati e CREATE SEQUENCE e REVOKE ADMIN OPTION e Clausola SET
180. ltra possibile causa di esaurimento della memoria potrebbe essere la temporanea per un tempo molto breve in realt crescita della memoria in cui i dati sono messi mentre si provvede ad unificarli in un solo blocco Nota Al momento non c soluzione per la v 2 1 3 Tuttavia stato migliorato per la v 2 5 0 118 Caratteristiche amministrative Altre informazioni sul contesto Ci sono altre informazioni disponibili sul contesto relativamente al server attraverso statement di SELECT della funzione RDB GET_CONTEXT col parametro SYSTEM inclusa la versione del motore Esempio SELECT RDBSGET_CONTEXT SYSTEM ENGINE_VERSION FROM RDBSDATABASE Per informazioni dettagliate sull uso di queste chiamate far riferimento alle pi recenti versioni delle note di rilascio di Firebird v 2 0 119 Capitolo 12 Sicurezza In questo capitolo ci sono i dettagli delle modifiche alla sicurezza in Firebird effettuate col rilascio di Firebird 2 e delle versioni successive Sono inoltre evidenziati le ulteriori modifiche ed i miglioramenti introdotti nella V 2 1 Introduzione alle modifiche Il miglioramento dei sistemi di sicurezza ha avuto un notevole impulso in Firebird 2 0 Quanto segue un riepilogo delle principali modifiche Nuovo database della sicurezza Il nuovo database per la sicurezza stato rinominato security2 fdb Internamente la tabella di autentica
181. m 4971_P100 1999 ibm 4971 cpibm4971 ibm 12712_P100 1998 ibm 12712 cpibm12712 ebcdic he ibm 16804_X110 1999 ibm 16804 cpibm16804 ebcdic ar ibm 1137_P100 1999 ibm 1137 ibm 5123_P100 1999 ibm 5123 ibm 8482_P100 1999 ibm 8482 ibm 37_P100 1995 swaplfnl ibm 37 s390 ibm037 s390 ibm 1047_P100 1995 swaplfnl ibm 1047 s390 ibm 1140_P100 1997 swaplfnl ibm 1140 s390 ibm 1142_P100 1997 swaplfnl ibm 1142 s390 ibm 1143_P100 1997 swaplfnl ibm 1143 s390 ibm 1144_P100 1997 swaplfnl ibm 1144 s390 ibm 1145_P100 1997 swaplfnl ibm 1145 s390 ibm 1146_P100 1997 swaplfnl ibm 1146 s390 ibm 1147_P100 1997 swaplfnl ibm 1147 s390 ibm 1148_P100 1997 swaplfnl ibm 1148 s390 ibm 1149_P100 1997 swaplfnl ibm 1149 s390 ibm 1153_P100 1999 swaplfnl ibm 1153 s390 ibm 12712_P100 1998 swaplfnl ibm 12712 s390 ibm 16804_X110 1999 swaplfnl ibm 16804 s390 ebcdic xml us 171 Appendice C Aggiornamento del Database della Sicurezza per Firebird 2 A Peshkov Script di aggiornamento del DB di sicurezza Script security database sql The contents of this file are subject to the Initial Developer s Public License Version 1 0 the License you may not use this file except in compliance with the License You may obtain a copy of the License at http www ibphoenix com main nfs a ibphoenix amp page ibp_idpl Software distributed under the License is distributed AS IS WITHOUT
182. menti di Firebird 2 1 dalla propria diretta gestione necessario assicurarsi di lasciare documentazione adeguata per ogni sistema di monitoraggio che possa risultare utile e gliespertiin Windows potrebbero provare i database su periferica fisica su Windows Non una delle priorit del progetto valutare come si possa ottenere su quel tipo di piattaforma tuttavia se si crede di conoscere un modo per farlo si prega di riferire ogni tentativo riuscito o meno nel proprio laboratorio windows alla lista degli sviluppatori firebird devel Suggerimento Gestite le periferiche fisiche con aliases conf In quel modo avendo la necessit di riconfigurare l hardware non necessario riconfigurare tutte le stringhe di connessione in tutto il codice Miglioramenti nel protocollo di connessione remota V Khorsun D Yemanov Richiesta di miglioramento CORE 971 Il protocollo remoto stato modificato per non rallentare in presenza di reti a basse prestazioni ed in generale migliorato Per ottenere ci si effettua una maggior raccolta dei pacchetti insieme alla ottimizzazione della trasmissione usando un po di memoria tampone Queste modifiche hanno dimostrato con test reali circa il 50 in meno di API roundtrips che pertanto sono collegate a circa il 40 in meno di TCP roundtrips In Firebird 2 1 l interfaccia remota limita la dimensione del pacchetto usato in risposta alle varie chiamate isc_XXX_info alla dimensione realmen
183. mnNaming P Reeves Il parametro OldColumnNaming stato ripreso da Firebird 1 5 3 Questo parametro permette agli utenti di attribuire alle colonne calcolate nelle espressioni di SELECT i nomi che avevano prima della versione 1 5 di Firebird Il default in installazione 0 disabilitato cio nuova convenzione sui nomi Se viene abilitato il motore non attribuir pi identificatori quali ad esempio CONCATENATION per campi derivati dove lo sviluppatore esplicitamente non ha attribuito un identificatore Importante Questa impostazione influenza tutti i database acceduti dal server e potenzialmente pu produrre eccezioni o risultati inaspettati quando sono attive applicazioni diverse UsePriorityScheduler A Peshkov Impostando questo parametro a zero ora si disabilita completamente lo scambio delle priorit dei thread In fluenza solo il Superserver per Win32 stato cambiato TCPNoNagle K Kuznetzov Il valore di default per TepNoNagle adesso TCP_NODELAY 151 Novit e modifiche nei parametri di configurazione Modificato il Comportamento di IPCName N Samofatov V 2 1 non documentato precedentemente la V 2 1 3 PCName che ha il default a FIREBIRD a partire dalla versione 2 0 lo spazio dei nomi del kernel in cui l istanza XNET viene creata per le connessioni locali dirette su Windows Su Vista ed altre piattaforme Windows spesso necessario modificare questo parametro aggiungendo il
184. monitoraggio in modo da permettere ad un utente non SYSDBA di consultare lo stato di tutte le sue connessioni non solo la CURRENT_CONNECTION dell utente Questo stato richiesto in CORE 2233 Vedere anche Monitorare connessioni multiple nel capitolo relativo alle Funzioni di amministrazione Dmitry ha risolto un problema di lentezza nell esecuzione di una cross join tra tre o pi tabelle in modo particolare quando una o pi di quelle tabelle sono vuote Vedere queste note e nel tracker CORE 2200 La release di correzione 2 1 1 La release 2 1 1 di Firebird 2 1 1 corregge una serie di problemi che sono stati evidnziati dopo il rilascio della versione finale 2 1 Sono inclusi anche correzioni per i problemi che hanno reso il programma di utilit nBac kup inutilizzabile in quella release alcune modifiche per migliorare le caratteristiche delle nuove funzioni di monitoraggio nei sistemi molto carichi ed altre modifiche per risolvere problemi di rallentamento in certe ope razioni DML Per i dettagli fare riferimento alla versione pi recente del documento sulle correzioni Bugfix che accompagna queste note Importante Si scoperto che finora il database della sicurezza veniva creato con le Forced Writes ad OFF Come qualsiasi database con le FW disabilitate il database della sicurezza risulta vulnerabile nei sistemi dove non garantita la stabilizzazione dell alimentazione elettrica Per tanto la subrelease 2 1 1 e tutte le successive rett
185. na primitiva API dedicata a questa funzione Sar compito dell amministratore del database SY SDBA o il proprietario utilizzare le informazioni provenienti dalle tabelle di monitoraggio e determinare un appropriato meccanismo per mettere in riga gli statement fuori controllo Esempio Come esempio molto grezzo col seguente comando si terminano tutti gli statement attualmente in esecuzione sul database tranne quelli che girano sulla connessione separata che viene usata dall amministratore stesso che ha lanciato il comando delete from monSstatements where monsattachment_id lt gt current_connection Guida alle prestazioni nell uso delle tabelle MON sotto stress Il monitoraggio basato su due fondamenti la memoria condivisa e le notifiche Memoria condivisa Tutti i processi del server condividono alcune regioni di memoria dove sono memorizzate le informazioni delle attivit in corso Tali informazioni sono costituite da elementi multipli a lunghezza variabile che descrivono i dettagli delle varie attivit Tutti gli oggetti appartenenti ad un particolare processo sono raggruppati insieme in un unico blocco per essere processati come un tutt uno La raccolta delle informazioni di monitoraggio ed il popolamento delle tabelle non avviene in tempo reale in quanto i processi server scrivono i loro dati nella memoria condivisa solo quando gli viene esplicitamente richiesto di farlo Alla scrittura i nuovi blocchi sostituiscono quelli vec
186. ne corrente Il valore pu essere uno fra READ COMMITTED SNAPSHOT CONSISTENCY TRANSACTION_ID L ID numerico della transazione corrente Il valore lo stesso della pseudo variabile CURRENT_TRANSACTION SESSION_ID L ID numerico della sessione attuale Il valore riportato lo stesso della pseudo variabile CURRENT_CONNECTION CURRENT_USER L utente attuale Il valore riportato lo stesso riportato dalla pseudo variabile CURRENT_USER o dalla variabile predefinita USER CURRENT_ROLE Il ruolo della connessione Riporta lo stesso valore della pseudo variabile CURRENT_ROLE 72 Novit nel Data Manipulation Language DML Note Per impedire attacchi del tipo DoS Denial of Service al Server Firebird il numero di variabili memorizzate in ogni contesto di sessione o transazione limitato a 1000 Esempi d uso set term create procedure set_context User_ID varchar 40 Trn_ID integer as begin RDBSSET_CONTEXT USER_TRANSACTION Trn_ID Trn_ID RDBSSET_CONTEXT USER_TRANSACTION User_ID User_ID end create table journal jrn_id integer not null primary key jrn_lastuser varchar 40 jrn_lastaddr varchar 255 jrn_lasttransaction integer A CREATE TRIGGER UI_JOURNAL FOR JOURNAL BEFORE INSERT OR UPDATE as begin new jrn_lastuser rdbSget_context USER_TRANSACTION User_ID new jrn_lastaddr rdbS
187. ne effettiva di default della cache delle pagine se questa in pagine inferiore al valore di MaxFileSystemCache in pagine allora viene abilitata la cache del sistema altrimenti resta disabilitata Nota Questo valido sia che la dimensione della memoria della cache delle pagine sia impostata implicitamente dall impostazione DefaultDBCachePages o esplicitamente dall attributo nell header del database Pertanto e Per disabilitare del tutto il sistema di cache del sistema impostare MaxFileSystemCache a zero e Per tenerlo sempre abilitato impostare MaxFileSystemCache ad un valore abbastanza grande da superare la dimensione della cache delle pagine del database Ricordare che l effetto di questo valore influenzato da modifiche successive alla dimensione della cache delle pagine Importante Il valore di default per MaxFileSystemCache 65536 pagine cio la cache del sistema abilitata DatabaseGrowthIncrement V Khorsun V 2 1 Al fine di controllare meglio la preallocazione dello spazio su disco stato aggiunto in firebird conf il nuovo parametro DatabaseGrowthIncrement Esso rappresenta in byte il limite superiore della dimen sione dello spazio su disco di cui viene richiesta la preallocazione quando le pagine devono essere scritte dalla cache Il default di 134 217 728 byte 128 MB Informazioni propedeutiche si trovano in Enlarge Disk Allocation Chunks nel capitolo relativo ai Migliora
188. nformazioni vedere le note sul parametro di configurazione Authentication e In Firebird 2 5 stato sistemato un comportamento selvaggio dell utilit nBackup ed stato riportato anche in questo rilascio Per altre informazioni vedere la nota Miglioramenti della V 2 1 3 nella sezione nBackup del capitolo sulle Utilit e A grande richiesta Dmitry Yemanov ha aggiunto delle utili linee guida sulle prestazioni riguardo al funzio namento interno del sistema di monitoraggio dei database Sarebbero le tabelle MON Ci per assistere nell uso di tali strumenti su sistemi pesantemente caricati in modo da ottenere le informazioni desiderate mi nimizzando l impatto sulle prestazioni per l utente finale e Problemi noti Ad un certo punto dello sviluppo delle V 2 1 si prodotta una spaccature nel comportamento del parametro di configurazione TempDirectories con cui si pu configurare una lista di spazi dove il motore pu scrivere risultati intermedi per gli ordinamenti quando non ha pi spazio a disposizione per tenerli in memoria RAM A partire dalla V 2 1 e tuttora sebbene il motore usi il primo degli spazi elencati in TempDirectories non riesce a mettere le mani su nessun altro degli spazi listati se il primo esaurisce tutto lo spazio Riferimento sul tracker CORE 2422 A causa dell impatto sul codice relativo a ci tale problema non pu essere aggiustato in questa V 2 1 3 L unica alternativa possibile al momento ass
189. ni 166 Appendice C Aggiornamento del Database della Sicurezza per Firebird 2 eeeeeeeeeeeeeeeeeeeeee 172 Script di aggiornamento del DB di sicurezza cece cece ceceeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeenee ss 172 ix Lista delle Tabelle 16 1 Team di sviluppo di Firebird Capitolo 1 Note Generali Firebird 2 1 una nuova completa release costruita sulle modifiche architetturali introdotte con la versione 2 0 Grazie a tutti quelli che hanno provato le versioni Alfa e Beta durante tutto il 2007 e gli inizi del 2008 ora abbiamo una release che risplende di nuove caratteristiche e di notevoli miglioramenti alcuni dei quali attesi da tanto tanto tempo tra cui le tabelle temporanee globali global temporary tables un insieme di meccanismi per monitorare in tempo reale il server i trigger di database e l aggiunta di una dozzina di funzione interne nel linguaggio SQL Release intermedia 2 1 3 Importante Firebird 2 1 3 corregge diversi problemi scoperti subito dopo il rilascio della versione 2 1 2 Questo rilascio sostituisce completamente la V 2 1 2 cos come la precedente 2 1 1 e l originale V 2 1 Le precedenti versioni 2 1 x dovrebbero essere sostituite con la V 2 1 3 poich stata ufficialmente rilasciata Questioni notevoli e Il metodo di autenticazione degli utenti sulla piattaforme Windows non pi per default mixed Si cambiato in native Per maggiori i
190. nuova caratteristica estende la modalit WAIT permettendo di impostare un tempo finito di attesa delle transazioni concorrenti Alla scadenza del tempo viene riportato un errore isc_lock_timeout Gli intervalli di attesa sono specificati a livello di transazione usando la nuova costante TPB isc_tpb_lock_timeout nell API oppure in DSQL la clausola LOCK TIMEOUT lt value gt della frase SET TRAN SACTION Nuova implementazione degli operatori di ricerca nelle stringhe N Samofatov 1 Gli operatori ora operano correttamente con i BLOB di ogni dimensione Sono stati rimossi tutti i problemi noti al riguardo ricerca solo nel primo segmento ricerche mancate perch a cavallo di segmenti 2 Il riconoscimento delle stringhe ora usa l algoritmo a passo singolo Knuth Morris Pratt migliorando le prestazioni quando vengono adoperati campioni di ricerca complessi 3 Il motore non crepa pi quando si usa NULL come carattere di ESCAPE nell operatore LIKE Rifacimento delle viste aggiornabili D Yemanov Un rifacimento stato fatto per risolvere i problemi relativi alle viste che sono implicitamente aggiornabili ma mantengono ancora dei trigger di UPDATE Questa un importante modifica che influenza i sistemi con procedure scritte per avvantaggiarsi di una dis funzione non documentata delle precedenti versioni Per i dettagli vedere nelle note nel capitolo riguardo alla compatibilit nel documento separato delle Note di Installazione
191. nza questo garantisce che dopo un COMMIT tutti i dati modificati dalla transazione siano fisicamente sul disco e non in attesa in qualche memoria tampone del sistema operativo La sua implementazione su Linux molto semplice invocare prima la procedura fentl dbFile F_SETFL O_SYNC Nonostante ci succedeva che i database su Linux fossero rovinati ugualmente Un po di dettagli tecnici Alcuni test su Linux mostrarono che impostando o meno O_SYNC scrivendo file non cambiavano per nulla le prestazioni Bene si poteva pensare di avere un sistema operativo veloce Invece no un problema documentato del kernel di Linux Stando al manuale di Linux Su Linux questo comando cio fentl fd F_SETFL flags pu solo cambiare i flag O_APPEND O_ASYNC O_DIRECT O_NOATIME e O_NONBLOCK gt Sebbene non sia documentato in nessun posto a me noto qualsiasi tentativo di impostare ogni altro flag oltre a quelli citati nel manuale come appunto O_SYNC ad esempio oltre a non funzionare fentl non riporta nemmeno nessun messaggio o stato di errore Per le versioni di Firebird e Interbase fino a questo punto significa che le Forced Writes su Linux non hanno mai funzionato Su Windows invece funzionano e hanno funzionato correttamente Sembra inoltre che tal problema non abbia influenzato altri sistemi operativi sebbene non si possa garantirlo Per essere sicuri bisogna controllare se l implementazione di fentl nel proprio sistema oper
192. o Gestione dei nuovi parametri di stato per il Shutdown D Yemanov x L accesso API alla sconnessione del database effettuata attraverso i flag aggiunti al parametro isc_dpb_shutdown nell argomento DBP passato alla isc_attach_database I simboli per i flag di stato adesso sono define isc_dpb_shut_cache 0x1 define isc_dpb_shut_attachment 0x2 define isc_dpb_shut_transaction 0x4 define isc_dpb_shut_force 0x8 define isc_dpb_shut_mode_mask 0x70 define isc_dpb_shut_default 0x0 define isc_dpb_shut_normal 0x10 define isc_dpb_shut_multi 0x20 define isc_dpb_shut_single 0x30 define isc_dpb_shut_full 0x40 Esempio di uso in C C char dpb_buffer 256 dpb p ISC_STATUS status_vector ISC_STATUS_LENGTH isc_db_handle handle NULL dpb dpb_buffer dpb isc_dpb_versionl const char user_name SYSDBA const int user _name_ length strlen user_name dpb isc_dpb_user_name dpb user_name_length memcpy dpb user name user_name_length dpb user_name_length const char user password masterkey const int user password_length strlen user password dpb isc_dpb_password dpb user_password_length 20 Modifiche alle API di Firebird e all ODS memcpy dpb user password user _password_length dpb user_password_length Per forzare un completo scollegamento del database dpb isc_dpb_shutdown
193. o CREATE VIEW V_TEST AS SELECT ID COL1 AS CODICE COL2 AS NOME FROM TABELLA CREATE TRIGGER in accordo a SQL2003 A dos Santos Fernandes Richiesta CORE 711 v 2 1 disponibile una sintassi alternativa per il CREATE TRIGGER che in accordo a SQL2003 Schemi sintattici Forma esistente create trigger tl FOR atable active before insert or update as begin end Forma SQL2003 create trigger t2 active before insert or update ON atable as begin end Notare la posizione differente della clausola identificante la tabella e le differenti parole chiave che precedono il nome della tabella esistente FOR SQL2003 ON Entrambe le sintassi sono valide e disponibili per tutti i CREATE TRIGGER RECREATE TRIGGER e CREA TE OR ALTER TRIGGER 37 Novit sul Data Definition Language DDL Alternativa conforme a SQL2003 per i campi calcolati D Yemanov Richiesta CORE 1386 v 2 1 Per definire un campo calcolato in una CREATE TABLE o ALTER TABLE stata resa disponibile la sintassi alternativa GENERATED ALWAYS AS conforme a SQL Sintassi lt nome colonna gt lt tipo gt GENERATED ALWAYS AS lt espressione gt completamente equivalente alla forma compatibile con le versioni precedenti lt nome colonna gt lt tipo gt COMPUTED BY lt espressione gt Esempio CREATE TABLE T PK INT EXPR GENERATED ALWA
194. o anche le sintassi relative a FIRST SKIP e ROWS e le clausole PLAN e ORDER BY A partire da Firebird 2 0 in poi le viste sono trattate come espressioni di SELECT complete di tutte le caratte ristiche Di conseguenza nelle viste adesso le clausole relative a FIRST SKIP ROWS UNION ORDER BY e PLAN sono permesse e funzionano come previsto Sintassi Per i dettagli della sintassi fare riferimento a SELECT e sintassi delle espressioni nel capitolo relativo al DML Implementata la frase RECREATE TRIGGER D Yemanov La frase di DDL per ricreare un trigger disponibile nella forma RECREATE TRIGGER La sintassi simile a quella di altre frasi di RECREATE Migliorie nell uso Le modifiche descritte in seguito influenzano in vario modo l utilizzo o l esistenza di alcuni aggiramenti tecnici nelle applicazioni o nelle basi di dati delle versioni precedenti a Firebird 2 L accesso esclusivo non pi richiesto per creare vincoli di chiave esterna V Horsun Ora si possono creare i vincoli di chiave esterna foreign key constraints senza la necessit di ottenere un accesso esclusivo all intero database Logica modificata per gli aggiornamenti delle viste Si consiglia di applicare i vincoli di NOT NULL soltanto alle tabelle di base e di ignorare quelli che le colonne della vista ereditano dalle definizioni del dominio 41 Novit sul Data Definition Language DDL Identificatori descrittivi per i sottotipi dei BLOB A Pes
195. o essere riportate senza qualificatori In tal caso il risultato equivalente a COALESCE lt tabella sinistra gt lt colonna gt lt tabella destra gt lt colonna gt 4 In caso di SELECT le colonne di USING sono espanse una sola volta usando la regola sopra speci ficata Natural join 1 Viene creata automaticamente una named columns join con tutte le colonne comuni tra le due tabelle coinvolte 2 Senoncisono colonne comuni si effettua una CROSS JOIN Esempi EL select from employee join department using dept_no fe 2 select from employee_project natural join employee natural join project CROSS JOIN D Yemanov V 2 0 x La sintassi CROSS JOIN adesso supportata Dal punto di vista logico la sintassi A CROSS JOIN B equivalente alla seguente A INNER JOIN B ON 1 1 oppure pi semplicemente a FROM A B Prestazioni migliorate nella V 2 1 2 D Yemanov Nel raro caso in cui in una CROSS JOIN con tre o pi tabelle coinvolte una o pi di queste fossero vuote si registrato un brusco calo nelle prestazioni CORE 2200 Un miglioramento delle prestazioni stato ottenuto 54 Novit nel Data Manipulation Language DML istruendo l ottimizzatore a non sprecare tempo ed energie nello scorrere le tabelle piene nel tentativo di trovare impossibili riscontri con tabelle vuote I default per l INSERT D Yemanov Richiesta di nuova specifica
196. o esterno del flusso di dati recuperato Una operazione di JOIN pu essere effettuata sia attraverso un algoritmo ciclico innestato JOIN plan oppure con un algoritmo di sort merge MERGE plan e Una JOIN con ciclo innestato interno inner nested loop join pu contenere tutti quanti flussi si richiede di unire Sono tutti fra loro equivalenti e Una JOIN con ciclo innestato esterno outer nested loop join opera sempre e solo con due flussi pertanto nel caso di dover unire 3 o pi flussi esterni si vedranno clausole di JOIN innestate Un sort merge ordina e riunisce opera su due flussi in ingresso che sono dapprima ordinati e poi riuniti in una unica esecuzione Esempi ECT RDBSRELATION_NAME ROM RDBSRELATIONS HERE RDBSRELATION_NAME LIKE RDBS3 LAN RDBSRELATIONS NATURAL RDER BY RDBSRELATION_NAME ova AN n ECT R RDBSRELATION_NAME RF RDBSFIELD_NAME FROM RDBSRELATIONS R JOIN RDBSRELATION_FIELDS RE ON R RDBSRELATION_NAME RE RDBSRELATION_NAME PLAN MERGE SORT R NATURAL SORT RF NATURAL T 75 Novit nel Data Manipulation Language DML Note 1 Una clausola PLAN pu essere messa in tutte le espressioni di selezione incluse le subquery tabelle deri vate e definizioni di viste Pu inoltre essere usata nelle frasi UPDATE e DELETE perch sono implici tamente
197. o prima che ritorni dall ese cuzione la frase ALTER DATABASE BEGIN BACKUP 3 integrare le differenze nel database quando richiesto frase ALTER DATABASE END BACKUP 4 segnare le pagine scritte dal motore con il valore corrente del contatore SCN scansione di pagina per il database 5 incrementare l SCN ad ogni cambio dello stato di backup Il ciclo degli stati di backup nbak_state_normal gt nbak_state_stalled gt nbak_state_merge gt nbak_state_normal 133 Utilit a linea di comando Nello stato norma normale le scritture vanno direttamente ai file principali del database Nello stato stalled in stallo le scritture vanno solo ai file delle differenze ed i file principali diventano in sola lettura Nello stato di merge integrazione le nuove pagine non vengono allocate per i file delle differenze Si scrive direttamente sui file principali del database Le letture delle pagine mappate confrontano entrambe le versioni delle pagine e riportano la versione pi recente perch impossibile sapere se gi stata integrata oppure no Nota Questa logica dello stato di merge ha una parte un po particolare Sia Microsoft che Linux definiscono il contenuto del file che cresce come indefinito cio sporco ed entrambi lo inizializzano a zero Questo il motivo per cui non vengono lette le pagine mappate oltre la fine originale del file di database principale
198. o si esegue una DROP TABLE eccetto che la definizione del meta data non si perde naturalmente Questa per molto pi veloce della cancellazione tradizionale fatta record per record e successiva garbage collection delle versioni dei record deletati Nota Questa cancellazione non fa scattare i trigger di DELETE pertanto non siate tentati di definire trigger di Before o After Delete ritenendo di poter ottenere una qualche esecuzione post mortem dei vostri dati I dati e le pagine indice di tutte le istanze delle GTT sono messe in file temporanei separati Ogni connessione ha il suo file temporaneo creato nel momento in cui la connessione fa riferimento a una qualche GTT Nota Questi files temporanei sono sempre aperti con Forced Writes OFF indipendentemente dall impostazione delle Forced Writes Non c nessun limite al numero di istanze di GTT che possono coesistere contemporaneamente Avendo N transazioni attive simultaneamente e se ogni transazione ha un riferimento ad una certa GTT allora ci saranno N istanze della GTT Miglioramenti alle viste D Yemanov In Firebird 2 1 sono stati fatti un paio di miglioramenti alle definizioni delle viste 36 Novit sul Data Definition Language DDL Uso degli alias di colonna in CREATE VIEW Caratteristica richiesta CORE 831 v 2 1 Gli alias di colonna possono essere utilizzati come nomi di colonna nelle definizioni di una vista Esempi
199. omi di tabelle ed alias multipli nelle query vedere In DSQL la scansione dei nomi di tabella pi rigida pi oltre Questo parametro non sar una caratteristica permanente di Firebird ma ha lo scopo di permettere la migrazione per coloro che hanno necessit di sistemare il codice esistente Altre informazioni sono in RelaxedAliasChec king nel capitolo relativo ai Nuovi parametri di configurazione Ricerca rapida e Common Table Expressions e La funzione LIST e La clausola RETURNING e La frase UPDATE OR INSERT e La frase MERGE e Nuovi tipi di JOIN NAMED COLUMNS amp NATURAL JOIN CROSS JOIN e default per l INSERT e Compatibilit fra testo e BLOB e Comparare BLOB di testo e Ordinare i BLOB e gli Array RDB DB_KEY riporta NULL nelle OUTER JOIN e Nuove funzioni integrate e Miglioramenti alle funzioni integrate e IF e Miglioramenti nel comportamento di CASTO e Argomenti espressione per SUBSTRING e In DSQL la scansione dei nomi di tabella pi rigida e La frase EXECUTE BLOCK e Tabelle derivate e ROLLBACK RETAIN e Sintassi ROWS 44 Novit nel Data Manipulation Language DML e UNION DISTINCT e Coercizione del tipo di dato nelle UNION migliorata e UNION permesse nelle subquery ANY ALL IN e Nuovo predicato NOT DISTINCT e Ammorbidita la regola per comparare i NULL e Modifiche all ordinamento dei NULL e Insiemi UNION nelle subquery e Nuove estensioni ad UPDATE e DELETE
200. on lo stesso nome in RDB INDICES mantenuta per sola compatibilit e tuttora rappresenta l indice di selettivit totale che viene usato per un riscontro su tutto l indice 99 Capitolo 10 Supporto alle lingue internazionali INTL Adriano dos Santos Fernandes Questo capitolo descrive la nuova interfaccia al supporto per le lingue internazionali che stato introdotto con Firebird 2 A partire da allora sono state aggiunte funzionalit e migliorie inclusa la possibilit di implementare generici ordinamenti UNICODE da librerie esterne Inoltre stata aggiunta una sintassi DDL per applicare tutto ci nella forma della frase CREATE COLLATION Interfaccia INTL per i set di caratteri non ASCII A dos Santos Fernandes Definita inizialmente da N Samofatov la nuova interfaccia di Firebird 2 per i caratteri internazionali ha molte nuove funzionalit sviluppate dall autore Architettura Firebird permette di definire il set di caratteri e l ordinamento in qualsiasi dichiarazione di campo o variabile a caratteri Il set di caratteri di default pu essere inoltre specificato al momento della creazione del database in modo che ogni dichiarazione CHAR o VARCHAR usi quel default se non include una specifica clausola CHARACTER SET Alla connessione normalmente si specifica il set di caratteri che il client intende usare per leggere le stringhe Se non viene specificato un set di caratteri client o di connessione si impon
201. onificazione stata rimossa nelle connessioni WNET in Firebird 2 0 che adesso sono veramente client server e funzionano allo stesso modo di quelle TCP cio non fanno nessuna assunzione riguardo ai diritti del di sistema dell utente Rielaborazione del sistema di Garbage Collection V Khorsun Fin da prima di Firebird 1 0 il motore Superserver eseguiva un sistema di background garbage collection un processo per il recupero della memoria non pi utilizzata gestendo informazioni su ogni nuova versione dei record prodotta da una frase UPDATE 0 DELETE Nel momento stesso in cui la vecchia versione non risultava pi interessante cio diventava pi vecchia della pi vecchia transazione snapshot Oldest Snapshot si vede nell output del comando gstat header il motore segnala al sistema di recupero di rimuoverla o in altre parole di liberare la memoria che prima era occupata dalla versione del record Il motore Classic e le versioni di Interbase precedenti la 6 0 avevano un altro sistema di Garbage Collection noto come garbage collection cooperativo Questo sistema cio il GC cooperativo ha la necessit di rileggere le pagine contenenti le versioni dei record non pi interessanti attraverso un SELECT COUNT FROM aTable oppure altre query di scansione di tabella da parte di un utente Il GC in background non ha questa necessit inoltre risolve il problema di recuperare la memoria per quelle pagine che vengono lette raramente
202. ordine delle JOIN Nelle OUTER JOIN abilitato l accesso indicizzato Si pu utilizzare un accesso indicizzato nelle OUTER JOIN cio un attraversamento guidato Miglioramenti agli indici Superato il limite a 252 byte per indice A Brinkman Il codice in parte nuovo ed in parte rifatto che gestisce gli indici molto pi veloce e tollera un gran numero di duplicazioni Il vecchio limite per le chiavi aggregate di 252 bytes stato rimosso Ora il limite dipende dalla dimensione della pagina la dimensione massima della chiave in byte 1 4 della dimensione della pagina 512 su 2048 1024 su 4096 ecc Un numero di record a 40 bit viene incluso nei rami non leaf level pages ed i duplicati nelle chiavi sono ordinati secondo questo numero Espressioni negli indici O Loa D Yemanov A Karyakin Si possono indicizzare le righe attraverso espressioni arbitrarie in DDL dinamico applicate ai valori della riga permettendo ai predicati di ricerca percorsi di accesso basati su espressioni Sintassi CREATE UNIQUE ASC ENDING DESC ENDING INDEX lt nome indice gt ON lt nome tabella gt COMPUTED BY lt espressione gt Esempi 1 CREATE INDEX IDX1 ON T1 COMPUTED BY UPPER COL1 COLLATE PXW_CYRL 97 Indici e ottimizzazioni COMMIT SELECT FROM T1 WHERE UPPER COL1 COLLATE PXW_CYRL OUAA
203. os850 SQL gt insert into t values a SQL gt insert into t values e SQL gt insert into t values a SQL gt insert into t values SOL gt SQL gt select c upper c from t Cc UPPER Da Da D v fH PR In Firebird 2 il risultato invece questo C UPPER MoD Ph eA Pp Lunghezza massima di una stringa In Firebird 1 5 x non viene verificata la lunghezza logica di una stringa di un set di caratteri multi byte MBCS Pertanto un campo UNICODE_FSS prende tre volte il numero di caratteri della dimensione dichiarata del campo essendo tre byte la lunghezza massima di un carattere UNICODE_FSS Questo stato mantenuto per compatibilit solo per i set di caratteri preesistenti Tuttavia i nuovi set di caratteri ad esempio UTF8 non mantengono questo limitazione 101 Supporto alle lingue internazionali INTL sqlsubtype ed il set di caratteri per la connessione Quando il set di caratteri di un campo CHAR o VARCHAR non n NONE n OCTETS ed il set di caratteri della connessione non NONE il membro sq subtype di una XSQLVAR pertinente a quella colonna ora contiene il numero del set di caratteri della connessione e non quello del set di caratteri della colonna dichiarato nel DDL Miglioramenti per i BLOB Sono stati fatti diversi miglioramenti per la gestione dei BLOB di testo Clausola COLLATE per i BLOB Si pu specificare una nuova clausola DML COLLATE ai BLOB
204. ows e isc_spb_dbname da scrivere dbname permette di impostare nei parametri il nome di un database in tutte le azioni di servizio per accedere al database della sicurezza da un client remoto in modo equivalente allo specificare in gsec lo switch database Nota Lo switch database in gsec usato soprattutto per specificare un server remoto da amministrare In fbsvcmgr il nome del server gi specificato col primo parametro attraverso il simbolo service_ mgr cosicch il parametro isc_spb_ dbname non particolarmente necessario Errori nella documentazione Il formato descritto per alcuni parametri nella documentazione di InterBase 6 beta contiene diversi errori Nel caso ci fossero problemi la fonte adatta per le informazioni sulla forma corretta ibase h Funzioni non supportate e Tutto cid che si riferisce alla licenza d uso stato rimosso dal codice sorgente aperto originale di InterBase 6 e pertanto non supportato n in Firebird n da fbsvcmgr e Le funzioni per vedere o modificare il vecchio file di configurazione sono state eliminate sin da Firebird 1 5 e quindi non implementate in fbsvemgr Risolti alcuni roblemi del servizio di backup A Peshkov Richiesta CORE 1232 V 2 1 Mentre il gestore dei servizi effettuava operazioni di backup o restore potevano accadere cose strane se alcuni parametri mancavano oppure se erano nell ordine sbagliato Il problema c ancora nelle versioni pi vecchie in
205. pagati ai livelli di JOIN interni permettendo l ottimizzazione manuale di OUTER JOIN complesse 2 La correttezza di un PLAN specificato dall utente viene verificata nelle OUTER JOIN N 3 E stata aggiunta l ottimizzazione di corto circuito per i PLAN specificati dall utente 4 Un percorso d accesso specificato dall utente pu essere assegnato ad ogni frase o clausola basata sulla SELECT Regole sintattiche Lo schema seguente descrive le regole sintattiche per la clausola PLAN per essere d aiuto nella loro stesura PLAN lt stream retrieval gt lt sorted_streams gt lt joined_streams gt lt stream_retrieval gt lt natural_scan gt lt indexed_retrieval gt lt navigational_scan gt lt natural_scan gt lt stream_alias gt NATURAL lt indexed_retrieval gt lt stream_alias gt INDEX lt index_name gt lt index_name gt lt navigational_scan gt lt stream_alias gt ORDER lt index_name gt INDEX lt index_name gt lt index_name gt lt sorted_streams gt SORT lt stream_retrieval gt lt joined_streams gt JOIN lt stream_retrieval gt lt stream_retrieval gt lt stream_retrieval gt 74 Novit nel Data Manipulation Language DML SORT MERGE lt sorted_streams gt lt sorted_streams gt Dettagli Natural scan scansione naturale significa che tutte le righe vengono recuperate nell ordine natural
206. pagine vengono allocate in blocchi fino a 128 Kb e Firebird tiene traccia del numero di queste pagine cos inizializzate nel PIP header Nota Una pagina che stata allocata rilasciata e sucessivamente riallocata spazio riservato nel senso che non necessaria nessuna verifica ulteriore per inizializzarla Pertanto una pagina da allocare soggetta alla doppia scrittura se e solo se non mai stata allocata prima b Perrisolvere la frammentazione del file Firebird ora usa le chiamate alle API del file system per preallocare lo spazio su disco a pezzettoni La preallocazione permette di evitare disastri in caso di disco pieno Ci sono buone possibilit che il database abbia abbastanza spazio preallocato per terminare le operazioni per dare all amministratore il tempo di creare pi spazio su disco Importante Per Windows solamente per il momento Attualmente solo Windows ha pubbliche tali chiamate API pertanto per il momento questoaspetto supportato pienamente solo nella versione Windows di Firebird Tuttavia nelle versioni pi recenti sono state aggiunte simili utilit alla Linux API facendo ritenere che in futuro tali funzioni saranno disponibili per un file system popolare come ext3 Il parametro di configurazione DatabaseGrowthIncrement Per un miglior controllo della preallocazione dello spazio su disco stato aggiunto a firebird conf ilnuovo parametro DatabaseGrowthIncrem
207. permessa solo in PSQL per assegnare il record di risultati in uscita direttamente alle variabili locali Ovviamente non accettata in DSQL 2 La della clausola RETURNING fa s che un INSERT venga descritto dall API come una isc_info_ sql_stmt_exec_procedure e non come una isc_info_sql_stmt_insert Gli attuali driver di interfaccia dovrebbero essere in grado di gestire questa caratteristica senza particolari modifiche 3 Laclausola RETURNING ignora ogni esplicita modifica o cancellazione che possa risultare dall esecuzione di un AFTER trigger 4 Le variabili di contesto OLD e NEW possono essere utilizzate nella clausola RETURNING di una frase UPDATE o INSERT OR UPDATE 5 Nelle frasi UPDATE o INSERT OR UPDATE ai riferimenti di campi non qualificati o qualificati dal nome di una tabella o di un alias vengono attribuiti i valori delle corrispondenti variabili di contesto NEW Esempi 50 Novit nel Data Manipulation Language DML 1 INSERT INTO T1 Fl F2 VALUES F1 F2 RETURNING F1 F2 INTO V1 V2 2 INSERT INTO T2 F1 F2 VALUES 1 2 RETURNING ID INTO PK 3 DELETE FROM T1 WHERE Fl 1 RETURNING F2 4 UPDATE T1 SET F2 F2 10 RETURNING OLD F2 NEW F2 La frase UPDATE OR INSERT Adriano dos Santos Fernandes v 2 1 Questa sintassi stata introdotto per poter inserire o aggiornare un record in funzione della sua effettiva esistenza ver
208. pesso si ritenuto di poter interpretare come se fossero NULL nel passaggio dei parametri rispettivamente una stringa vuota il valore numerico zero e la data di origine delle date L autore non pu sempre ritenere un particolare valore numerico NULL se l UDF viene compilata per un contesto in cui sarebbe stato noto che normalmente il NULL non viene riconosciuto Molte UDF inclusa la libreria ib_udf distribuita con Firebird hanno sempre ritenuto che una stringa vuota servisse a segnalare pi probabilmente un parametro a NULL invece che una stringa di lunghezza zero Il truc chetto potrebbe funzionare con parametri di tipo CHAR poich la lunghezza minima dichiarabile di un CHAR uno e dovrebbe contenere un carattere di spazio pertanto uno zero binario nella prima posizione avrebbe l effetto desiderato di segnalare il NULL Tuttavia non applicabile ai VARCHAR o CSTRING dove invece la lunghezza zero valida Un altra soluzione sarebbe stata fare affidamento sui descrittori ma questo avrebbe imposto molte pi cose da controllare di quante se ne potevano affrontare Il problema pi spinoso che il motore non rispetta il tipo dichiarato per il parametro semplicemente invia ci che ha per quel parametro cos che l UDF a dover decidere se rifiutare il dato o cercare di convertirlo nel tipo di dato previsto Poich le UDF non hanno un meccanismo formale per segnalare un errore il valore riportato deve essere uti lizzato anche
209. prefisso Global per assicurare ad un client locale non privilegiato che cio ha un accredito ristretto possa avere l autorit necessaria a creare quello spazio dei nomi Una modifica in Firebird 2 1 fa in modo che la routine di connessione possa applicare il prefisso al default Ipc Name incondizionatamente se il primo tentativo dell utente dovesse fallire a causa di permessi troppo restrittivi Parametri rinominati SortMemBlockSize cambiato in TempCacheBlockSize D Yemanov Considerato un termine pi appropriato SortMemUpperLimit cambiato in TempCacheUpperLimit D Yemanov Considerato un termine pi appropriato Parametri rimossi o sconsigliati CreatelnternalWindow D Yemanov Questa opzione non pi richiesta per lanciare istanze multiple del server ed stata rimossa DeadThreadsCollection non pi usato A Peshkov Il parametro DeadThreadsCollection non pi usato I thread defunti sono adesso rilasciati al volo in modo efficiente rendendo la configurazione inutile Firebird 2 0 ignora silenziosamente questo parametro 152 Capitolo 16 Le squadre del progetto Firebird 2 Tabella 16 1 Team di sviluppo di Firebird Autore Paese Attivit principale Dmitry Yemanov Federazio ne Russa Progettazione e sviluppo a tempo pieno responsabile della squadra di sviluppo Alex Peshkov Federazio ne Russa Coordinatore del sistema di sicurezza esperto nella pacchet t
210. r salire un database di un livello pi in linea e non si pu usare online per rendere un database pi protetto viene dato un errore ueste sequenze sono pertanto proibite q gfix shut single force 0 gfix shut multi force 0 gfix online gfix online full gfix shut force 0 gfix online single Pacchetti e installazioni Aggiunto a instsvc exe un parametro per il nome dell istanza D Yemanov Richiesta CORE 673 V 2 1 instsvc exe adesso permette installazioni multi istanza Revisionata la documentazione di instalzzazione su Win32 P Reeves V 2 1 La documentazione per l installazione a linea di comando su Windows stata rivista Vedere doc install windows_manually txt Aiuto sugli switch a linea di comando Richiesta CORE 548 V 2 1 L aiuto in linea disponibile sugli switch dell installazione a linea di comando su Windows Riconoscimento di Gentoo FreeBSD durante l installazione A Peshkov Richiesta CORE 1047 Durante la configurazione sono ora riconosciuti sia Gentoo che FreeBSD facendo in modo che l installazione possa funzionare con successo su queste piattaforme 144 Capitolo 14 Funzioni esterne UDF Segnalare un valore SQL NULL attraverso un puntatore Null C Valderrama Prima di Firebird 2 gli autori delle UDF potevano ipotizzare che le loro UDF riportassero un NULL ma non avevano possibilit di verificarlo Questo provocava una serie di problemi con le UDF S
211. rappresenta un campo nel XSQLDA che la struttura principale usata nelle API di FB per comunicare con i client trasferendo i dati da e per il server Nota Lo stato di questa opzione non visualizzato nella lista generata con il comando SET usato in isql per visualizzare la maggior parte delle opzioni SET TRANSACTION migliorato C Valderrama Il comando SET TRANSACTION stato migliorato in modo tale che adesso sono supportate tutte le opzioni di TPB e NO AUTO UNDO e IGNORE LIMBO e LOCK TIMEOUT lt numero gt Esempio SET TRANSACTION WAIT SNAPSHOT NO AUTO UNDO LOCK TIMEOUT 10 Vedere anche la documentazione in doc sql extensions README set_transaction txt SHOW DATABASE riporta anche la versione di ODS C Valderrama La versione ODS On Disk Structure viene visualizzata con il comando SHOW DATABASE C Valderrama Possibilit di mostrare il numero di linea in cui vi un errore in uno script C Valderrama Nelle versioni precedenti l unico modo possibile per sapere dove uno script cadeva in errore era adoperare il comando e per vedere i comandi o per inviare l uscita su un file e m per inviare anche i messaggi di errore su quel file In tal modo si potevano vedere i comandi isql che venivano eseguiti e i possibili errori esistenti Lo script continuava fino alla fine ovviamente Per alcuni errori DSQL il server ora comunica il numero di linea relativo al singolo comando o frase che sta e
212. riporta 2 2 3 select trunc 987 65 1 trunc 987 65 1 from rdbSdatabase riporta 987 60 980 00 164 Appendice B Set di caratteri internazionali A dos Santos Fernandes amp Others Nuovi set di caratteri ed ordinamenti implementati Nelle versioni di Firebird 2 sono stati implementati i seguenti set di caratteri e o ordinamenti Set di caratteri Ordinamento Descrizione Implementato da ISO8859_1 ES_ES_CI AI Ordinamento per lo spagnolo ignora ma iuscole ed accenti Per il set di caratteri ISO8859_1 A dos Santos Fer nandes Ordinamento per Portoghese Brasiliano per il set di caratteri ISO8859_1 A dos Santos Fer nandes P H Alba nez ISO8859_2 ISO_PLK Ordinamento polacco per il set di caratteri J Glowacki A dos ISO8859_2 Santos Fernandes KOI8R KOI8_RU Set ed ordinamento standard per il Russo O Loa A Karya kin KOI8U KOI8U_UA Set ed ordinamento standard per l Ucrai O Loa A Karya no kin WIN1250 BS_BA Ordinamento per il Bosniaco per il set di F Hasovic caratteri WIN1250 WIN_CZ_AI Ordinamento per la lingua Ceca igno I Prenosil A dos ra gli accenti Per il set di caratteri Santos Fernandes WIN1250 WIN_CZ_CI_AI Ordinamento per la lingua Ceca ignora I Prenosil A dos gli accenti e le maiuscole Per il set di ca Santos Fernandes ratteri WIN1250 WIN1252 WIN_PTBR Ordinamento Portoghese Brasiliano per il A dos
213. risultato oppure si possono recuperare pi elementi informativi dal gestore dei servizi Non si possono fare entrambe le cose in un unico comando Ad esempio fbsvemgr service_mgr user sysdba password masterke action_display_user elenca tutti gli utenti sul server firebird locale SYSDBA Sql Server Administrator QA_USER1 QA_USER2 QA_USER3 QA_USER4 QA_USER5 GUEST SHUT1 SHUT2 QATEST SO Sion One Oo OO gt O Si i fbsvemgr service_mgr user sysdba password masterke info_server_version info_implementation elenca sia la versione che l implementazione del server Server version LI T2 1 0 15740 Firebird 2 1 Alpha 1 Server implementation Firebird linux AMD64 131 Utilit a linea di comando Ma un tentativo di ottenere tutto ci in una unica linea di comando fbsvemgr service_mgr user sysdba password masterke action_display_user info_server_ version info_implementation da un errore Unknown switch info_server_version Elementi non documentati La funzione isc_spb_rpr_list_limbo_trans omessa dalla documentazione beta di IB6 comunque fbsvcemgr la supporta Supporto per i nuovi elementi nelle API v 2 1 Due nuovi elementi sono stati aggiunti nelle API di servizio in Firebird 2 1 e sono supportati da fbsvcmgr e isc_spb_trusted auth da scrivere trusted_auth si applica solo a Windows Forza Firebird ad usare l autenticazione trusted di Wind
214. ritmo in base decimale dell argomento select log10 x from y LOWER LOWER lt string gt v 2 0 x Riporta la stringa data convertita tutta in ca ratteri minuscoli isql q ch dos850 SQL gt create database test fdb SQL gt create table t c char 1 character set dos850 SQL gt insert into t values A SQL gt insert into t values E SQL gt insert into t values A 159 Le nuove funzioni integrate Funzione Formato Descrizione SQL gt insert SQL gt select LOWER into t values E c lower c from t A a E e LPAD LPAD lt string gt lt num LPAD string1 length string2 aggiunge ripetuta ber gt lt string gt mente string2 all inizio di string1 finch la lunghezza totale non raggiunge length 1 Se la seconda stringa manca si considera uno spazio N Se la stringa risultante supera la lunghezza data viene troncata la seconda stringa Esempio select lpad x 10 from y MAXVALUE MAXVALUE lt value gt lt value gt Riporta il maggiore fra una lista di valori select maxvalue vl v2 10 from x MINVALUE MINVALUE lt value gt lt value gt Riporta il minore di una lista di valori select minvalue vl v2 10 from x MOD MOD lt number gt lt number gt Modulo MOD X Y il resto della divisione di X per Y sel
215. rity fdb o di un vecchio isc4 gdb rinominato al nuovo database di sicurezza Il valore di default 1 true Redirection A Peshkov Questo parametro permette di controllare la redirezione di richieste remote Controlla le prestazioni del mul ti hop che erano bucate gi dai tempi di InterBase 6 e sono state riattivate in Firebird 2 Riguardo il Multi hop Connettendosi ad un database usando pi host nella stringa di connessione solo l ultimo nella lista di questi quello che realmente apre il database Gli altri host agiscono da intermediari sempre sulla porta gds_db Prece dentemente questa caratteristica era disponibile sempre Ora pu invece essere configurata Infatti la redirezione remota disabilitata per defrault 150 Novit e modifiche nei parametri di configurazione Attenzione Nel caso in cui si considerasse di abilitare il multi hop si prega di considerare con attenzione quanto descritto in Warning nel capitolo sulla Sicurezza e nella documentazione di questo parametro nel file di configurazione ideo Wel COMI GCPolicy V Khorsun Riguarda la Garbage collection policy Adesso possibile scegliere quale gestione della raccolta della spaz zatura adottare nel SuperServer I possibili valori sono cooperative background e combined come spiegato nelle note della GCPolicy in firebird conf Non applicabile al server tipo Classic perch supporta solo la GC cooperative OldColu
216. rle se non c abbastanza spazio su disco per soddisfare la richiesta ci sono problemi in presenza di un ordine non determinato delle scritture Infatti in tale situazione 28 Miglioramenti di Firebird 2 1 succede spesso che l amministratore del sistema decida di scollegare il database per dargli in qualche modo pi spazio su disco ma in tal modo le pagine sporche ancora nella memoria tampone vanno perse Questo comporta seri disastri alla struttura del database 2 Frammentazione del file Allocando lo spazio su disco a pezzettini relativamente piccoli si ha una significativa frammentazione del file di database al livello del file system peggiorando le prestazioni delle scansioni grandi come per esempio quelle di un backup La soluzione Per risolvere il problema sono state introdotte alcune regole e razionalizzazioni per gestire l allocazione delle nuove pagine in funzione dello spazio disponibile a Si scrive su disco ogni nuova pagina allocata immediatamente prima di tornare al motore Se la pagina non pu essere scritta l allocazione non avviene il bit PIP non viene cancellato e si segnala l appropriato errore di I O Il dataase non si rovina poich garantito che tutte le pagine sporche nella memoria hanno spazio su disco allocato e possono essere pertanto scritte senza errori Poich questa modifica aggiunge una scrittura in pi per ogni pagina allocata ci sarebbe un peggioramento nelle prestazioni Invece le
217. rtita e l eccezione riportata al client Nota Per le transazioni two phase i trigger vengono lanciati in fase di preparazione non in fase di conferma TRANSACTION ROLLBACK I trigger sono eseguiti durante il rollback della transazione Tutte le modifiche sono ovviamente cancellate insieme al resto della transazione Le eccezioni non gestite sono ignorate Sintassi lt database trigger gt CREATE RECREATE CREATE OR ALTER TRIGGER lt name gt ACTIVE INACTIVE ON lt event gt POSITION lt n gt AS BEGIN Gl Uo CONNECT DISCONNECT TRANSACTION START TRANSACTION COMMIT TRANSACTION ROLLBACK Regole e limitazioni 1 Il tipo di un trigger di database non pu essere cambiato 2 Il permesso per i comandi CREATE RECREATE CREATE OR ALTER o DROP su un trigger di data base limitato al proprietario del database e a SYSDBA 34 Novit sul Data Definition Language DDL Supporto ai trigger di database nei programmi di utilit Sono stati aggiunti nuovi parametri a gbak nbackup e isql per inibire l esecuzione dei trigger di database Sono disponibili solo al proprietario del database e a SYSDBA gbak nodbtriggers isql nodbtriggers nbackup T Tabelle temporanee globali Global Temporary Tables Vlad Khorsun v 2 1 Le tabelle temporanee globali GTT sono tabelle memorizzate permanentement
218. sa di una serie di corre zioni implementate nella logica Per alcuni casi sono stati previsti dei sistemi temporanei o aggiramenti tecnici workarounds per tornare al funzionamento precedente ovviamente si consiglia di cercare tali punti nella documentazione prima fare domande al supporto tecnico Dal team di supporto Sebbene questa sia stata definita una release stabile adatta all ambiente di lavoro introduce molte novit Si incoraggia pertanto di valutare quanto queste nuove caratteristiche migliorino il vostro lavoro ed informarci di ogni carenza identificata al pi presto Vi si invita caldamente a descrivere alla lista di sviluppo firebird in inglese esclusivamente firebird devel buone descrizioni di ogni eventuale problema o bestiaccia incontrata oppure ad inserire descrizioni dei problemi incontrati direttamente al nostro Issue Tracker Infatti si persegue una linea di rilasciare versioni di aggiorna mento la cui qualit e periodicit dipendono fortemente dalle comunicazioni ricevute dal campo Descrivere un problema e Convinti di aver scoperto un nuovo problema in questa release consigliato leggere attentamente le istruzioni presenti nell articolo How to Report Bugs Effectively per presentare il problema al sito web del progetto Firebird e Se si pensa che una risoluzione non abbia funzionato a dovere o abbia causato una regressione sarebbe molto utile localizzare la descrizione del problema originale nel Tracker
219. sc in grado ora di descrivere i blob che sono output di stored procedure API identifica la versione del client N Samofatov La definizione macro FB_API_VER stata aggiunta in ibase h per recuperare la versione attuale delle API Il numero corrisponde alla versione Firebird appropriata 17 Modifiche alle API di Firebird e all ODS Il valore attuale di FB_API_VER 20 due cifre equivalenti a 2 0 Questa macro pu essere usata dalle appli cazioni per verificare la versione di ibase h con cui vengono compilate Aggiunte alla struttura isc_database_info V Khorsun Alla struttura della chiamata a funzione isc_database_info sono state aggiunte le seguenti opzioni isc_info_active_tran_count Riporta il numero delle transazioni attive al momento isc_info_creation_date Riporta la data e l ora di quando stato ri creato il database Per decodificare il valore riportato chiamare la funzione isc_vax_integer due volte la prima per estrarre la data e la seconda l ora della parte ISC_TIMESTAMP Poi usare la funzione isc_decode_timestamp come al solito Aggiunte alla struttura isc_transaction_info V Khorsun Alla struttura della chiamata a funzione isc_transaction_info sono stati aggiunti le seguenti opzioni isc_info_tra_oldest_interesting Riporta il numero della pi vecchia transazione interessante OIT all inizio della transazione attuale Per le transazioni snapshot questo coincide
220. sc_info_tra_lock_timeout Riporta il tempo di scadenza del blocco impostato per la transazione corrente utile per le transazioni WAIT Miglioramenti alle API di servizio Sono stati eseguiti i seguenti miglioramenti alle API di servizio Parametro isc_spb_trusted_auth V 2 1 ODS 11 1 isc_spb_trusted_auth si applica solo a Windows e viene utilizzato per costringere Firebird ad usare il sistema di autenticazione verificato da Windows per il servizio richiesto Parametro isc_spb_dbname V 2 1 ODS 11 1 Risulta relativo ad ogni servizio correlato al database della sicurezza Permette di fornire il nome di tale database quando si invoca un servizio di sicurezza remoto Risulta equivalente al fornire il parametro database utilizzando il programma di utilit gsec da remoto Ottimizzata l esecuzione delle task D Yemanov I servizi sono eseguiti adesso come thread e non come processi per le architewtture Classic su alcuni sistemi che lo supportano al momento solo Windows a 32 bit Windows e Solaris 19 Modifiche alle API di Firebird e all ODS Nuova funzione per inviare messaggi d errore C Valderrama Per estrarre il testo di un messaggio d errore Firebird dal vettore di stato in un buffer utente la nuova funzione fb_interpret sostituisce la precedente isc_interprete Importante isc_interprete vulnerabile ai sottodimensionamenti ed sconsigliata e non sicura Si dovrebbe usare la nuova funzione al suo post
221. seguendo Per altri errori si pu solo sapere che un certo comando ha problemi Con l opzione b gi descritta sopra in 1 l utente ha la possibilit di fermare lo script isql non appena rileva un errore ma si ha ancora bisogno dell opzione eco e o su un file di uscita per sapere quale comando ha causato l errore 141 Utilit a linea di comando Ora la possibilit di segnalare la linea nello script che provoca un errore permette all utente di trovare nello script il punto incriminato Se il server indica la linea e la colonna si pu identificare esattamente dove nello script DML avvenuto il problema Quando il server invece indica semplicemente un errore si ha la linea iniziale relativa all intero script del comando che ha causato un problema Questo funziona anche in script annidati in particolare se lo script SA include lo script SB e SB crea un pro blema il numero di linea relativo a SB Alla fine di SB isql continua eseguendo il resto di SA e pertanto isql ritorna a contare le linee di SA poich ogni file ha un contatore di linee distinto Si dice che uno script SA include lo script SB quando in SA si usa il comando INPUT per caricare SB Le linee sono contate nel modo in cui riesce a farlo il substrato di I O in funzione cio di come riesce a separare le linee Nei sistemi in cui esiste EDITLINE una linea quanto la readline recupera in una singola chiamata Il limite per la lunghezza massima di un
222. server firebird accuratamente protetto a cui sia possibile accedere da Internet In una situazione in cui esso ha accesso non ristretto alla LAN interna pu lavorare come gateway per tutte le richieste entranti come firebird your domain com internal_ server private database fdb Sapere il nome o l indirizzo IP di un qualsiasi server interno nella LAN sufficiente per un intruso non ha bisogno di login su un server esterno Tale gateway facilmente soprassiede qualsiasi firewall che sta proteg gendo la LAN dagli attacchi esterni Dettagli sulle modifiche di sicurezza in Firebird 2 Sono state messe a fuoco alcune debolezze riconosciute nella sicurezza di Firebird contro gli attacchi malevoli e la mancanza di un sistema di criptazione delle password resistente agli attacchi brutali nel database della sicurezza 121 Sicurezza e la possibilit di ogni utente remoto di aprire il database della sicurezza e leggervi le password criptate spe cialmente se combinato col punto precedente e la impossibilit degli utenti a cambiare le loro password e la mancanza di protezione contro gli attacchi brutali alle password nel server stesso Autenticazione L autenticazione in Firebird controlla su un database di sicurezza a livello di server per decidere se autorizzare una connessione ad un database o al server Il database della sicurezza memorizza i nomi utente e le password di tutte le identit autorizzate Autenticazion
223. sta sintassi stata aggiunta per permettere di modificare o inserire un record se viene soddisfatta una certa condizione data La frase disponibile sia in DSQL che in PSQL Sintassi lt merge gt MERGE INTO lt tabella o vista gt AS lt nome di correlazione gt USING lt tabella o vista o tabella derivata gt AS lt nome di correlazione gt ON lt condizione gt lt merge quando soddisfatto gt lt merge quando non soddisfatto gt lt merge quando soddisfatto gt WHEN MATCHED THEN UPDATE SET lt lista assegnazioni gt lt merge quando non soddisfatto gt WHEN NOT MATCHED THEN INSERT lt parentesi aperta gt lt lista di colonne gt lt parentesi chiusa gt VALUES lt parentesi aperta gt lt lista di valori gt lt parentesi chiusa gt Regole per il MERGE 1 52 Novit nel Data Manipulation Language DML Deve essere sempre specificata almeno una delle due fra le condizione lt merge quando soddisfatto gt e lt merge quando non soddisfatto gt 2 Nessuna delle due condizioni pu essere specificata pi di una volta Nota Per l esecuzione viene effettuata una RIGHT JOIN tra le tabelle specificate nelle parti INTO e USING facendo uso della condizione specificata L UPDATE viene eseguita quando esiste un record che soddisfa la condizione nella tabella a sinistra INTO altrimenti si effettua l operazione di INS
224. sult gt lt search gt lt result gt lt default gt Esempio select decode state 0 deleted 1 active unknown from things EXP EXP lt number gt Riporta l esponenziale dell argomento select exp x from y FLOOR FLOOR lt number gt Riporta il maggiore intero che minore o uguale al l argomento dato 1 select floor val from x 158 Le nuove funzioni integrate Funzione Formato Descrizione 2 select floor 2 1 floor 2 1 from rdbSdatabase riporta 2 3 GEN_UUID GEN_UUIDO Riporta un numero univoco del tipo UUID Non ha argomenti insert into records id value gen_uuid HASH HASH lt string gt Riporta il calcolo dell HASH di una stringa select hash x from y LEFT LEFT lt string gt lt number gt Riporta il numero specificato di caratteri della parte sinistra di una stringa data select left name char_length name 10 from people where name like oo FERNANDES La prima posizione di una stringa 1 non 0 Se l argomento lt number gt non intero si applica un arrotondamento di tipo bancario N e LN LN lt number gt Riporta il logaritmo del numero dato select ln x from y LOG LOG lt number gt lt number gt LOG x y riporta il logaritmo in base x di y select log x 10 from y LOG10 LOG10 lt number gt Riporta il loga
225. ta estesa per supportare i numeri di settimana dell anno secondo lo standard ISO 8601 Per esempio EXTRACT WEEK FROM date 30 09 2007 riporta 39 Altro esempio ALTER TABLE XYZ ADD WeekOfTheYear COMPUTED BY CASE WHEN EXTRACT MONTH FROM DataEsempio 12 AND EXTRACT WEEK FROM DataEsempio 1 THEN Settimana EXTRACT WEEK FROM DataEsempio dell anno 1 EXTRACT YEAR FROM DataEsempio else Settimana EXTRACT WEEK FROM DataEsempio dell anno EXTRACT YEAR FROM DataEsempio end Specificare la scala in TRUNC Richiesta in CORE 1340 Fino alla versione Beta 1 la funzione integrata TRUNC aveva un solo argomento il valore da troncare A partire dalla Beta 2 pu essere specificato un secondo argomento opzionale per indicare la scala del tron camento Ad esempio select trunc 987 65 1 trunc 987 65 1 from rdbSdatabase riporta i due valori 987 60 e 980 00 Per altri esempi d uso della TRUNC con o senza l argomento di scala opzionale vedere all elenco alfabetico delle funzioni nell Appendice A Gestione dei millisecondi in EXTRACT DATEADD e DATEDIFF Richiesta in CORE 1387 A partire da Firebird 2 1 Beta 2 le funzioni integrate EXTRACTO DATEADD e DATEDIFF possono gestire i millisecondi rappresentati da un numero intero di 4 cifre Ad esempio
226. te 150 Redirection iii A REA A AT ele 150 Ristiardo al Multi HoP oec teaei pallio illecite 150 GCPolicy sinora aaa iaia alla laine 151 OldColumnNaming isi nonne ii ii cai 151 UsePriorityScheduler visf Wininizio 151 stato cambiato TCPNoNagle pio ila rl iii liti 151 Modificato il comportamento di IPCName iii nere nere rene ne nere ne nere ne nere ne rene nenenenenee 152 Parametri nnominati eire na alal va para e deri ail era nea 152 SortMemBlockSize cambiato in TempCacheBlockSize eececececececeeeeeceeeeneeeeeeenes 152 SortMemUpperLimit cambiato in TempCacheUpperLimit iii 152 vili Firebird 2 1 Release Notes Parametri rimossi 0 SCONSISHAtI csi E lei 152 Createlntermal Window 2 650290 stica aLaaa iaia lia 152 DeadThreadsCollection non pi usato 152 16 Le squadre del progetto Firebird 2 suina elite lai ila LL 153 Appendice A Le nuove funzioni integrate c iii eee rene rene ne rece nere nere nere ne rene ne rene ne nine cene nine zenenenee 155 Appendice B Set di caratteri internazionali eee irene rene ne rene nenenee 165 Nuovi set di caratteri ed ordinamenti implementati ce eeeeeeeeceeeeeeeeeeeceeeeeeeeeeeenenens 165 Insiemi di caratteri a singolo byte eeeeeeeeeeeeerenereneneseseeeeeseeeeeseeeseeeeeseseeeeeeeeeeeeereeeees 166 Insiemi dr caratteri ICU eoin apnea lilla lira ia nin
227. te usata dai dati contenuti mentre prima reinviava tutto il pacchetto in tero al client anche se solo 10 bytes erano effettivamente riempiti In quest ultimo caso l interfaccia remota di Firebird 2 1 invia un pacchetto di soli 10 bytes Alcuni utenti potrenno vedere benefici da queste modifiche specialmente con client connessi attraverso Internet con applicazioni two tier I cambiamenti possono essere riassunti con a Spedizione accorpata dei pacchetti Richiede che sia il server che il client siano di versione 2 1 e si abilita a fronte di accordo positivo sul protocollo Alcuni pacchetti di certi tipi sono ritardati accorpandoli col pacchetto successivo Ad esempio in questa categoria di operazioni ricadono gli statement di allocate e deallocate b recupero anticipato di parti di informazione di statement o altre richieste e mantenedole nel client per una probabile successiva chiamata API Questo implementato solo dalla parte client ma beneficia dei ridotti round trips descritti in a su cui fa affidamento Funziona con ogni versione di server dando un discreto beneficio anche ad applicazioni scritte male seb bene il meglio non previsto venga dato con server precedenti alla versione 2 1 c Dimensione ridotta delle risposte dal server eliminati gli zero finali Poich questa parte solo sul server richiede che sia una versione 2 1 ed un qualsiasi client Anche i client vecchi pertanto funzionano con i server Firebird 2
228. terno dello stesso contesto Non devono entrare in conflitto con il nome di un altro cursore annunciato dalla clausola AS CURSOR da un cursore FOR SELECT Tuttavia un cursore pu condividere il nome con ogni altro tipo di variabile nello stesso contesto poich le operazioni disponibili per ciascuno sono diverse Si possono effettuare aggiornamenti e cancellazioni posizionali con i cursori attraverso la clausola WHERE CURRENT OF Sono proibiti i tentativi di FETCH e CLOSE da un cursore FOR SELECT Falliscono i tentativi di aprire un cursore gi aperto e di recuperare i dati o chiudere un cursore gi chiuso Tutti i cursori non esplicitamente chiusi verranno chiusi automaticamente all uscita dall attuale blocco pro cedura trigger PSQL La variabile di sistema ROW_COUNT pu essere usata dopo ogni frase FETCH per verificare se effetti vamente stata riportata una registrazione Argomenti di default nelle Stored Procedure Si possono dichiarare valori di default per gli argomenti delle STORED PROCEDURE La sintassi identica alla definizione di un valore default per una colonna o per un dominio eccetto che si pu usare al posto della parola chiave DEFAULT Gli argomenti con valori di default devono venire per ultimi nella lista degli argomenti cio non si pu dichiarare un argomento che non ha un default dopo un argomento che stato dichiarato con un valore di default Il chiamante deve comunque fornire tutti gli ar
229. tilit a linea di comando Qualsiasi sia il contenuto dello script verr eseguito completamente errori e tutto anche se l opzione BAIL abilitata m2 per visualizzare statistiche e PLAN C Valderrama Questa un opzione da linea di comando per inviare le statistiche ed i PLAN allo stesso output degli altri comandi eventualmente con lo switch o utput Se l utente specifica di voler inviare i messaggi su un file per anni ci sono solo state due sole possibilit e o dalla linea di comando con lo switch o seguito da il nome di un file e oppure col comando OUTput seguito dal nome di un file sia come batch che da sessione interattiva In qualsiasi caso specificando solo OUTput sufficiente per riavere i messaggi in uscita sula console I messaggi di errore tuttavia sono mostrati alla console ma non sono re direzionati su file Sulla linea di comando stato aggiunto lo switch m per inserire i messaggi di errore nel normale flusso di uscita ovunque esso venga redirezionato Questo lascia aperto ancora un caso come far riportare dal server le statistiche sulle operazioni il comando SET STAT ed i PLAN SQL I comandi SET PLAN e SET PLANONLY sono stati sempre trattati come messaggi diagnostici e come tali sono stati sempre inviati solo alla console Il comando m2 inserisce le statistiche e le informazioni dei PLAN ovunque venga redirezionato il flusso di uscita Nota N m n m2 hanno una controparte inter
230. to dal motore Pertanto a partire da FB v2 le funzioni rtrim ltrim ed altre funzioni sulle stringhe non ritengono che una stringa vuota sia una stringa NULL Le funzioni continuano a funzionare anche se non si effettua lo script di aggiornamento semplicemente non sono in grado di decifrare l arrivo di un NULL Se non si mai usata ib_udf in un database ed avendone la necessit ci si deve collegare al database lanciare lo script udf ib_ud f2 sq1 preferibilmente sempre quando non vi sono altri utenti connessi al database e subito dopo fare il commit Nota e Notare il 2 alla fine del nome e Lo script originale per FB v1 5 ancora disponibile nella stessa cartella Miglioramenti dei messaggi diagnostici delle librerie UDF A Peshkov La diagnostica per una UDF mancante o inutilizzabile era poco chiara per cui non si capiva se mancava il modulo o era impossibile accedervi a causa della configurazione di UDFAccess in firebird conf Adesso ci sono messaggi distinti e comprensibili per entrambi i casi UDF aggiunte e modificate Le UDF aggiunte o migliorate nelle librerie di Firebird 2 0 sono IB_UDF_rand e IB_UDF_srand F Schlottmann Goedde Nelle precedenti versioni la funzione esterna rand imposta il punto di partenza per il generatore di numeri casuali basandolo sull ora corrente e poi generava un valore pseudo casuale srand unsigned time NULL return float rand float RAND_MAX
231. to tipo di distribuzione viene fatto sempre che ne esista la possibilit CROSS JOIN e MERGE SORT Gestione migliorata per cross join e merge sort Ordine delle join con INNER e OUTER insieme Quando ci sono pi JOIN sia INNER che OUTER mescolate fra loro si cerca di raggrupparle nel modo migliore possibile Espressioni con uguaglianze Ora possono essere generati MERGE PLAN nelle join che confrontano per uguaglianza le espressioni Per i soli database in ODS 11 Questo gruppo di ottimizzazioni influenza solo i database creati o recuperati in sotto Firebird 2 o successivi Uso della selettivit a livello di segmento Vedere Selectivity Maintenance per Segment Supporto migliore per IS NULL e STARTING WITH Prima i predicati IS NULL e STARTING WITH venivano ottimizzati separatamente dagli altri provocando PLAN non ottimali in certe espressioni booleane complesse con molti AND e OR A partire dalla 2 0 con ODS11 questi predicati sono gestiti in modo normale e pertanto possono beneficiare di tutte le possibili strategie di ottimizzazione 96 Indici e ottimizzazioni Utilizzo degli indici per OR ed AND Espressioni booleane complesse con molti predicati AND ed OR ora possono sfruttare a pieno l utilizzo di sot tostanti indici se possibile Precedentemente tali espressioni complesse potevano essere ottimizzate malamente Miglior ordinamento per le JOIN Si lavorato per migliorare la stima del costo per migliorare l
232. uale alla maggiore delle lunghezze in ca ratteri dei vari tipi di dato del DTS ii Il set di caratteri e l ordinamento usati sono presi dal tipo di dato della prima stringa nel DTS b tutto il DTS contiene precisione numerica esatta il tipo risultante in precisione numerica esatta con scala uguale alla massima delle scale presenti nel DTS e con precisione uguale alla massima precisione presente fra tutti i dati del DTS c un qualunque dato del DTS in precisione numerica approssimata ogni dato del DTS deve essere numerico altrimenti viene segnalato un errore 79 Novit nel Data Manipulation Language DML d un qualunque dato del DTS del tipo data ora tutti i dati del DTS devono essere esattamente dello stesso tipo di data ora del primo altrimenti viene segnalato un errore e un qualunque dato del DTS un BLOB tutti i dati del DTS devono essere BLOB e tutti dello stesso sotto tipo La sintassi abbreviata trucchetto per i letterali di data H Borrie Nel passato prima dell avvento delle variabili di contesto come CURRENT_DATE CURRENT_TIMESTAMP ecc si usavano delle convenzionali stringhe letterali predefinite predefined date literals come NOW TODAY YESTERDAY e cos via Queste letterali predefinite sono sopravvissute nel linguaggio SQL attuale di Firebird e sono ancora molto utili In Interbase 5 x e precedenti la seguente frase era legale e riportava un valore di tipo DATE ricor
233. uazioni Adesso Superserver sia su Windows che POSIX ha un nuovo parametro di configurazione MaxFileSystem Cache per dis abilitare la cache del filesystem Pu permettere di avere pi memoria libera per altre operazioni es l ordinamento e dove ci sono molti database pu ridurre le richieste di risorse all host Nota Per la versione Classic non c scappatoia Per dettagli sul parametro MaxFileSystemCache vedere MaxFileSystemCache Altri miglioramenti globali Razionalizzazione della Garbage Collection V Khorsun Caratteristica richiesta CORE 1071 Il processo di raccolta in background leggeva tutte le versioni precedenti dei record su una pagina comprese quelle create da transazioni attive Poich queste ultime non vanno considrate per la garbage collection era una perdita di tempo leggerle 30 Miglioramenti di Firebird 2 1 Immediato rilascio dei file esterni V Khorsun Caratteristica richiesta CORE 961 Il motore ora rilascia i file esterni non appena sono rilasciate da qualsiasi richiesta degli utenti Sincronizzazione degli oggetti nella cache metadata DSQL per il Classic server A dos Santos Fernandes Richiesta CORE 976 Dettagli assenti Miglioramenti sui BLOB A dos Santos Fernandes Richiesta CORE 1169 La conversione tra il blob temporanea ed il tipo di blob destinazione avviene solo alla materializzazione e non prima Flag di tipo per le Stor
234. uire Trigger a livello di database Ci disponibile solo al proprietario del database e a SYSDBA gbak nodbtriggers isql nodbtriggers nbackup T Occultamento password Alex Peshkov Le utilit a linea di comando che accettano il parametro password sono vulnerabili alla cattura della password specialmente quando sono lanciate da uno script Un ulteriore passo nell ostacolare tutto ci nelle piattaforme POSIX consiste nel mostrare nella lista dei processi l argomento PASSWORD con un asterisco mentre prima veniva visualizzato in chiaro Servizi di Firebird Nuova utilit a linea di comando fbsvcmgr Alex Peshkov V 2 1 La nuova utilit fbsvcmgr permette un interfaccia a linea di comando verso le API di servizio permet tendo l accesso a tutti i servizi implementati in Firebird Sebbene ci siano in giro molti strumenti con interfaccia grafica per l amministrazione dei database attraverso le API di servizio questo nuovo strumento risolve agli amministratori il problema di accedere a server Unix remoti nelle grandi reti attraverso una connessione a linea di comando Precedentemente per ottenere una cosa del genere era necessario ricorrere ad un programmatore 129 Utilit a linea di comando Uso di fbsvcmgr fbsvemgr non simula i parametri implementati nelle tradizionali g utilit Invece semplicemente un inter faccia attraverso cui possono transitare le funzioni ed i parametri delle API di servizio
235. va funzione per inviare messaggi d errore eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeneees 20 Gestione dei nuovi parametri di stato per il Shutdown iii 20 Modifiche alla struttura su disco ODS On Disk Structure i 21 NuOvo numero Identificativo na Siena Aaa 21 Aumentata la dimensione massima per i messaggi d eccezione ie 21 Nuovo campo descrizione per i generatori ee ceeneeeeeececececeaaeaeeeeeeeeeeceaauaeteeeneeeess 21 Nuovi campi descrittivi per gli SQL Roles cece cecccecececceeceeeeeeeeeeeeeeeeeeeeeeeeeeeeeeess 21 Riconoscimento del tipo di ODS iiri 22 Rapporto errori migliorato per DSQL 22 Nuova colonna nella tabella RDB Index_Segments i 22 4 Miglioramenti di Firebitd 2 1 iiuilena iene ie aa alia elle aes ilola 23 Finalmente funzionano le Forced Writes su Linux iii eee eee cere ce eee 23 Un po di dettasli tecnici ii ll o 23 Soluzione rapida per le versioni di Firebird precedenti i 24 Database su periferiche fisiche iii ia ae a a hee ice 24 Spostare un database su una periferica fisica uc ne ce ce ce cei 24 Gestione particolare di nbak nbackup 24 Ulteriori informazioni sulle periferiche fisiche eeeeeseeeeeeeeeeeeeseeeeeeeeeeeseeeeeeeeeeeeeees 25 Miglioramenti nel protocollo di connessione remota
236. w viene ora pertanto lanciata solo per i sovradimensionamenti reali riportando pertanto il funzionamento della loro rilevazione simile a quella delle operazioni aritmetiche Modifiche alla logica di sincronizzazione N Samofatov N d T quanto segue veramente tecnico anche in lingua originale Di solito rinuncio a tradurre tali termini quando sono cos per addetti ai lavori 1 stata ridotta significativamente la lock contention nel lock manager e nel SuperServer thread pool ma nager 2 E stata trovata e corretta una rara condizione di deriva che poteva bloccare il Superserver nel processare le richieste fino all arrivo di una nuova successiva richiesta 3 Imemory dump del lock manager danno maggiori informazioni e OWN_hung viene correttamente recepito 4 E stato implementato il disaccoppiamento degli oggetti di sincronizzazione del lock manager per le diffe renti istanze del motore Supporto alle piattaforme a 64 bit A Peshkov N Samofatov Firebird 2 0 supporta le piattaforme a 64 bit Aumentati i limiti di conteggio dei record N Samofatov E stato introdotto il conteggio dei record a 40 bit 64 bit internamente per superare il limite di circa 30GB per tabella imposto dal precedente limite a 32 bit Miglioramenti per il debugging Contributi Vari Migliorati i rapporti da Bugcheck I messaggi di log BUGCHECK ora includono il nome del file ed il numero di linea sorgente A Brinkman 13 L
237. za della catena di copie durante la fase di recupero restore lanciano ALTER DATABASE END BACKUP aggiungono in RDB BACKUP_HISTORY la registrazione della operazione appena eseguita registrando il livello corrente SCN la GUID immagine del database e altre informazioni ad uso e consumo dell utente 134 Utilit a linea di comando Recupero Il recupero o restore dei dati semplice si ricostruisce l immagine fisica del database attraverso la catena dei file di copia verificando che il backup_guid di ogni file corrisponda al prev_guid del successivo e poi si aggiorna il tutto cambiando lo stato in header di nuovo in nbak_state_normal Uso nbackup lt opzioni gt Opzioni valide L lt database gt Blocca il database per fare la copia N lt database gt Sblocca un database precedentemente bloccato F lt database gt Sistema il database dopo la copia B lt livello gt lt database gt lt nomefile gt Crea un backup incrementale R lt database gt lt file0 gt lt filel gt Restore di un backup incrementale U lt utente gt Nome dell utent P lt password gt Password dell utente Nota 1 lt database gt pu anche specificare un alias del database 2 non supportato il backup incrementale dei database multi file 3 stdout pu essere usato come valore per lt nomefile gt nella opzione B Miglioramenti in V 2 1 3 A Peshkov Nella versione d
238. zare brutalmente la vecchia crittazione DES Dopodich avrebbe potuto modificare i dati sui database importanti memorizzati sul server Firebird 2 molto meno vul nerabile a questo tipo di attacchi Comunque il server embedded in POSIX ha un altro problema di sicurezza la sua implementazione delle API di servizio chiama l utilit a linea di comando gsec come gli utenti normali Pertanto un utilit di manutenzione degli utenti su embedded server deve avere accesso pieno al database della sicurezza La principale ragione per restringere l accesso diretto al database della sicurezza era di proteggerlo dalle vecchie versioni del software client Contemporaneamente per caso fortuito minimizza anche l esposizione del Classic embedded in POSIX poich improbabile la presenza contemporanea in un ambiente operativo di un vecchio client e di un nuovo server In tutte le piattaforme Attenzione Il livello di sicurezza non ancora soddisfacente sotto un aspetto molto serio pertanto leggete attentamente questa sezione prima di aprire la porta 3050 ad internet Un problema di sicurezza importante rimane irrisolto in Firebird la trasmissione in chiaro attraverso la rete di password malamente criptate Non possibile risolvere questo problema senza bloccare i client pi vecchi Mettendola in altro modo un utente che ha impostato la password usando un nuovo metodo sicuro sarebbe incapace di usare un client vecchio per collegarsi a

Download Pdf Manuals

image

Related Search

Related Contents

Samsung WB110 Инструкция по использованию  Albrecht DR315 - funkberatung.de  Teaching becomes interactive and effective with - o  Trisa Electronics Zeus 360° Pro  取扱説明書 - Amazone  Polar Pad Instructions 1 rev  STAIN WASH POWER - Nicolas Entretien  LMK3 V2.0 Service  ディスプレイスタンド用メッシュバスケット 取扱説明書  EKR / EKW 発行時期:2011年6月 掲載品番  

Copyright © All rights reserved.
Failed to retrieve file