602SQL-┌plnß dokumentace Index   Tisk  

ProgramßtorskΘ zm∞ny p°i p°echodu na verzi 8.0

Na tΘto strßnce jsou uvedeny p°φpady, kdy zm∞ny ve verzi 8.0 mohou vy₧adovat zßsah do aplikacφ vyvinut²ch pro starÜφ verze. ZnaΦkou EXT jsou oznaΦena tΘmata t²kajφcφ se pouze programovßnφ ve vn∞jÜφch jazycφch (C/C++, Pascal/Delphi/Kylix).

╚φslo objektu, kurzoru a tabulky

Typy tobjnum (Φφslo objektu), ttablenum (Φφslo tabulky) a tcursnum (Φφslo otev°enΘho kurzoru) jsou ve verzi 8.0 Φty°bajtovΘ, zatφmco v d°φv∞jÜφch verzφch byly dvoubajtovΘ. Parametry t∞chto typ∙ se vyskytujφ v API funkcφch jako Read, Find_object, Open_cursor_direct.

Pokud programßtor pou₧φvß v aplikaci v²Üe uvedenΘ typy, pak aplikace bude fungovat sprßvn∞ beze zm∞n, po pouhΘm p°ekompilovßnφ. Pokud vÜak byly pro ulo₧enφ t∞chto ·daj∙ pou₧ity prom∞nnΘ jin²ch dvoubajtov²ch typ∙ - nap°φklad Short, SmallInt a podobn∞ - pak je nutno aplikaci upravit. Logicky korektnφ nenφ p°echod na Φty°bajtovΘ celoΦφselnΘ typy, n²br₧ pou₧itφ n∞kterΘho z typ∙ ttablenum, tobjnum nebo tcursnum.

╚φslo otev°enΘho kurzoru v binßrnφm zßpisu vypadß v₧dy takto:

1111 1111 1111 1111 10bb bbbb bbbb bbbb
kde b je 0 nebo 1. Pro jeho rozpoznßnφ lze v jazyce C/C++ pou₧φt makro IS_CURSOR_NUM. Je-li Φφslo kurzoru interpretovßno jako Φφslo se znamΘnkem, pak mß stejn² rozsah hodnot jako v p°edchozφch verzφch. Pro rozpoznßnφ v klientskΘm jazyce slou₧φ postup uveden² u popisu funkce Get_fcursor.

Typy databßzov²ch sloupc∙ a informace o sloupcφch (EXT)

Typy CSString a CSIString zanikajφ, pro vÜechny znakovΘ °et∞zce p°edem urΦenΘ dΘlky slou₧φ typ String.

Funkce cd_Enum_attributes a cd_Attribute_info sice nadßle existujφ, ale podrobn∞jÜφ informace o sloupcφch poskytujφ funkce cd_Enum_attributes_ex a cd_Attribute_info_ex. Detailnφ dopl≥ujφcφ ·daje k typu sloupce poskytuje struktura t_specif.

Funkce bez parametru cdp (EXT)

V∞tÜina API funkcφ 602SQL byla dosud k dispozici ve dvou verzφch - s prvnφm parametrem cdp typu cdp_t a bez n∞j. Funkce bez parametru cdp jsou mΘn∞ efektivnφ a omezen∞ji pou₧itelnΘ, proto je lepÜφ dßvat p°ednost funkcφm s tφmto parametrem.

Pokud programßtor chce i nadßle pou₧φvat funkce bez parametru cdp, musφ je v hlaviΦkov²ch souborech pro C/C++ zp°φstupnit definovßnφm symbolu NON_CD_FUNCTIONS. P°ed °ßdku:

#include "wbkernel.h"

je v takovΘm p°φpad∞ t°eba vlo₧it °ßdku:
#define NON_CD_FUNCTIONS

Handlery chyb v SQL

Jazyk SQL umo₧≥uje definovat handlery pro oÜet°enφ chybov²ch situacφ. Ve starÜφch verzφ 602SQL se nekontrolovalo, zda chyba v∙bec p°ipouÜtφ oÜet°enφ handlerem, a bylo mo₧no definovat handler i pro ty chyby, kterΘ z podstaty v∞ci takto °eÜit nelze, nap°φklad nedostatek mφsta na disku. Od verze 8.0 se p°i deklaraci handleru kontroluje p°φpustnost oÜet°enφ chyby.

Indexy k tabulkßm

Ve verzφch starÜφch ne₧ 8.0 SQL server mohl nekorektnφm zp∙sobem pou₧φt index pro optimalizaci dotazu. D∞lo se tak ve dvou p°φpadech: v podmφnce na prefix znakovΘho °et∞zce t°φd∞nΘho podle nßrodnφch pravidel a p°i hledßnφ zßznam∙ s indexov²m klφΦem NULL pomocφ indexu neobsahujφcφho hodnoty NULL.

Tyto nekorektnosti jsou ji₧ odstran∞ny. P°i p°evzetφ aplikace z verze starÜφ ne₧ 8.0 se m∙₧e zpomalit vyhodnocenφ n∞kter²ch dotaz∙. V takovΘm p°φpad∞ je t°eba doplnit indexy nebo upravit jejich definici. Detaily jsou na strßnkßch o pou₧itφ prefix∙ a index∙ bez hodnot NULL.

Aplikace a prßva k objekt∙m

Aplikace pro verzi 8.0 musφ respektovat tyto odliÜnosti:

V aplikaci _sysext je do rolφ Author a Administrator obsazena skupina provoznφch sprßvc∙.

SystΘmovΘ triggery (krom∞ _on_login_change) se provßd∞jφ s prßvy provoznφho sprßvce.

OznaΦenφ ulo₧en²ch procedur pro provßd∞nφ v administrßtorskΘm re₧imu pomocφ funkce Admin_mode je persistentnφ - zachovßvß se p°i vypnutφ serveru nebo p°i exportu a importu aplikace. Proto na rozdφl od verze 7 nenφ t°eba volat funkci Admin_mode v procedu°e _on_server_start, a ani to obvykle nenφ mo₧nΘ, proto₧e skupina provoznφch sprßvc∙ neb²vß obsazena do rolφ Author.

Struktura t_clivar

P°ibyla novß polo₧ka ve struktu°e t_clivar, kterß se pou₧φvß k p°edßvßnφ hodnot prom∞nn²ch z jazyka C/C++ nebo Pascal do SQL.

Ostatnφ