[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