DBTool and SQL Width

BCM

Member
I know that the SQL Width is stored in the column "_width" in the table "_Field" in the system tables. How does dbTool allow changes to the SQL Width without forcing everyone out of the Progress database?
 

BCM

Member
Thank-you, Lee. I would like to write a utility that will change the SQL Width of a single column to a given value. This is something I need frequently where I work. How can this be done while others work in the database without locking the schema?
 
It's not something I've had to do, but KB P26983 details the 4GL approach, but personally I would try and hook into the Data Dictionary's own routines, that way you are following Progress' own procedures. [Edit] Also directly altering the _File... tables is something I would avoid if at all possible, as they are really meant as a reporting resource, and schema updates should be carried out where possible using Progress tools and routines.

I suspect you will have to upgrade to v10 also, as this will allow online schema changes.
 
OK, I've just reread your post:


I would like to write a utility that will change the SQL Width of a single column to a given value. This is something I need frequently where I work.


I'm not sure what your utility would do that you can't do already via the data dictionary (Options > SQL Properties > Adjust Field Width). The only difficulty is the 'while other users are in'. This requires upgrade to V10.

Lee

 

BCM

Member
Thanks, again, Lee. I have a routine very similar to the one shown at the Progress Knowledge Base. I run my routine from the character-based batch processing program _progres. However, I am unable to obtain a record lock when others are in the database.

My sense is that dbTool is programmed to locate the absolute position of the _width in the physical database files. I would guess that would be the .d1 file.

By the way, we use 9.1D. I doubt we will upgrade to version 10 as we are committed to an alternate course that will free us from using Progress.
 
Top