Consultor Eletrônico



Kbase P74881: Different clients (i.e., AppServer, GUI, CHUI) retrieve different ROWID values when connecting to Or
Autor   Progress Software Corporation - Progress
Acesso   Público
Publicação   16/10/2008
Status: Verified

FACT(s) (Environment):

Progress 9.1D
Oracle DataServer

SYMPTOM(s):

Different clients (i.e., AppServer, GUI, CHUI) retrieve different ROWID values when connecting to Oracle

Client A, (i.e., AppServer) connecting to one schema holder, i.e., oraholder1

Client B, (i.e., CHUI, GUI) connecting to a different schema holder, i.e., oraholder2

ROWID value retrieved by a Client A is different than the ROWID value retrieved Client B.

Multiple schema holders are present

ROWID function is being used

Client A and B are finding a record and passing values back and forth

Can not do manually creation for schema holder after it's been created

CHANGE:

Table/field updates were made to schema holder and to ORACLE

CAUSE:

Bug# 20031103-004

CAUSE:

In better understanding the cause of this issue, you must first understand how the ROWID value is calculated.

The ROWID for Oracle Dataserver has the following format:

0x0214<FFFF><RECID>
where: 0214 is the root for ROWID

<FFFF> is the file number hex representation.
- Take _file._file-number value and converted straight to hexa.

<RECID> is the record number hex represeantion
- Take RECID return converted to string then take each byte and converted to hexa.

This means that each of these components; the root, the file number and the Progress RECID all contribute in generating the ROWID value.

In this case, the file number between the two schema holders became different. Because of this difference (in the file number), when the two clients passed the same record back and forth, the ROWID values did not match thus, the reason for why Client A retrieved a different ROWID value than Client B.

A file number can change when table/field updates are made but not applied to the schema holder in the same order as each other.

FIX:

The bug is fixed in 9.1D08 and 10.0A