[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Problem CRC
Pomocy,
jestem w trakcie testów bazy Progress 7.3E na serwerze UnixWare (sco
unix
firmy Caldera).
Wciągam df-kę z bazy danych z innego unixa mianowicie Reliant Unix
5.43.
Po wciągnięciu df-ki w celu wygenerowania bazy wzorcowej, pomiędzy
obiema
bazami
dalej występują różnice crc. No to usuwam tabelę na UnixWare, w
której
wystąpiła różnica crc
i wciągam indywidualnego df-a dla tej tabeli, a tu dalej to samo,
czyli
różnica crc.
Przeglądam w Data Adminitrator problemowe tabele z jednej i drugiej bazy
i
na oko wszystko wygląda identycznie!
Pomóżcie, jedynym jakimś sensowym pomysłem jest modyfikacja pola _CRC
w
tabeli systemowej _file,
ale progress pluje sie, że nie można zmieniać wartości pól w tabeli
systemowej.
Witam !
Wpadł Pan w pułapkę sporządzoną przez firmę PSC produkujacą Progress'a i
skrzętnie ukrywaną aż do wersji 9 (jeśli sie nie mylę). W czym rzecz
?
Otórz schemat bazy w pliku *.df nie jest pełnym schematem bazy ! W skład
schematu tablicy wchodzi jeszcze pole: _Field._Field-rPos, którego
wartość jest brana pod uwagę podczas liczenia CRC schematu tablicy. Jest
to faktyczne położenie pola w zapisie (rekordzie). Po utworzeniu
definicji tablicy pola w rekordzie są w takiej kolejności jak wynika to z
_Field._Order (jak widzimy je w słowniku bazy na ekranie). Na skutek
modyfikacji schematu tablicy poprzez dodawanie nowych pól lub też zmianę
ich pozycji w zapisie _Field._Order ulega zmianie, zaś _Field._Field-rPos
nie ulega zmianie, bo gdyby zmieniło się, to trzeba by w danej tablicy
zmodyfikować wszystkie zapisy i porzesuwać pola na ich zmienione miejsce.
Niestety, w pliku *.df jest tylko wartoś _Field._Order a nie ma
_Field._Field-rPos stąd plik *.df nie niesie całego schematu. Wartość
_Field._Field-rPos wprowadzono to dopiero w wersji 9 i nie wiedzieć czemu
tylko na żądanie.
Jak z tego wybrnąć ?
- na nowej bazie powtórzyć wszystkie aktualizacje jej schematu w takiej
kolejności, jak były robione w starej - jest to mało realne, bo
kto trzyma
wszystkie przyrosty schematu i pamięta kolejność, w jakiej były
wprowadzane
- jeśli się ma oprogramowanie źródłowe (jawne lub zaszyfrowane) to
skompilować
je z nową bazą
- jeśli nie ma oprogramowania źródłowego, to poprosić producenta, by u
siebie
utworzył nową bazę, wciągnął do niej schemat starej bazy poprzez
plik *.df
i z taką bazą skompilował oprogramowanie no i dostarczył to
oprogramowanie
do Was
Zmiana CRC w definicji tablicy nie jest możliwa i dobrze, bo gdyby udało
się
je zmienić metodą "ręczną", to programy i tak by nie działały
poprawnie,
bo próbowałyby dostępu do pól zapisów nie w tych miejscach gdzie one
występują.
Pozdrawiam,
Henryk
Jusza
mailto:henju@pg.gda.pl
-------------------------------------------------
Ośrodek Informatyczny Politechniki Gdańskiej
Pracownia Rozwoju Oprogramowania
tel (058) 347-28-01
fax (058) 347-24-63