The history of VST changes by versions

Posted by George Potemkin on 21-Nov-2019 18:28

he history of VST changes based on the changes of their CRCs between Progress versions:

Number  VST \ CRC by vers 10.2B08  11.0    11.1    11.2    11.3.2  11.4    11.5    11.6.4  11.7.5  12.0    12.1
------  -----------------  -----   -----   -----   -----   -----   -----   -----   -----   -----   -----   -----
-16385  _Connect           40449 * 36183   36183   36183   36183   36183   36183 * 16764 * 15681 * 34063 * 54957
-16386  _MstrBlk           47220   47220   47220   47220   47220   47220   47220   47220   47220   47220   47220
-16387  _DbStatus          46526   46526   46526   46526 * 13835   13835   13835   13835 * 34160 * 36876 *   968
-16388  _BuffStatus        11447 * 13779 * 15795   15795   15795   15795   15795   15795   15795   15795   15795
-16389  _Logging           23227   23227   23227   23227   23227   23227   23227   23227 * 10256   10256   10256
-16390  _Segments           2951 * 46609   46609   46609   46609   46609   46609   46609   46609   46609   46609
-16391  _Servers           56747   56747   56747   56747   56747   56747 * 51995   51995   51995   51995   51995
-16392  _Startup           51801   51801 * 58066   58066   58066   58066   58066   58066   58066
-16392  _UserLobStat                                                                                6003    6003
-16393  _Filelist          25916   25916   25916   25916   25916   25916   25916   25916   25916   25916   25916
-16394  _UserLock          52463 * 19567   19567   19567   19567   19567   19567 * 42924 * 60651   60651   60651
-16395  _ActSummary        23657   23657   23657   23657   23657   23657   23657   23657   23657   23657   23657
-16396  _ActServer         13520   13520   13520   13520   13520   13520   13520   13520   13520   13520   13520
-16397  _ActBuffer         32386 * 20532   20532   20532   20532   20532   20532   20532 * 60509   60509   60509
-16398  _ActPWs            10498   10498   10498   10498   10498   10498   10498   10498   10498   10498   10498
-16399  _ActBILog           8913 * 27931   27931   27931   27931   27931   27931   27931   27931   27931   27931
-16400  _ActAILog           7405    7405    7405    7405    7405    7405    7405    7405    7405    7405    7405
-16401  _ActLock           20844   20844   20844   20844   20844   20844   20844   20844   20844   20844   20844
-16402  _ActIOType          3987    3987    3987    3987    3987    3987    3987    3987    3987    3987    3987
-16403  _ActIOFile         11098   11098   11098   11098   11098   11098   11098   11098   11098   11098   11098
-16404  _ActSpace          24194   24194   24194   24194   24194   24194   24194   24194   24194   24194   24194
-16405  _ActIndex          43500 * 35379   35379   35379   35379   35379   35379   35379   35379   35379   35379
-16406  _ActRecord         33721   33721   33721   33721   33721   33721   33721   33721   33721   33721   33721
-16407  _ActOther          17012 * 42368   42368   42368   42368   42368   42368   42368   42368   42368   42368
-16408  _Block             63587   63587   63587   63587   63587   63587   63587   63587   63587   63587   63587
-16409  _UserIO            58166 * 15442   15442   15442   15442   15442   15442   15442 * 24990   24990   24990
-16410  _LockReq           57390 * 28054   28054   28054   28054   28054   28054   28054   28054   28054   28054
-16411  _Checkpoint        21138 *  5330    5330    5330    5330    5330    5330 * 36319 * 52042   52042   52042
-16412  _Lock              54597 * 47610   47610   47610   47610 * 47896   47896   47896   47896   47896   47896
-16413  _Trans              4065 * 39797   39797   39797   39797   39797   39797   39797 * 24762   24762   24762
-16414  _License            9679    9679    9679    9679    9679    9679    9679    9679    9679    9679    9679
-16415  _TableStat         28340 * 55300   55300   55300   55300   55300   55300   55300   55300   55300   55300
-16416  _IndexStat         49021 * 20756   20756   20756   20756   20756   20756   20756   20756   20756   20756
-16417  _Latch             23412 *  6476    6476    6476    6476 * 54477   54477   54477   54477   54477   54477
-16418  _Resrc             50740   50740   50740   50740   50740   50740   50740   50740   50740   50740   50740
-16419  _TxeLock           12333   12333   12333   12333   12333   12333   12333   12333   12333   12333   12333
-16420  _StatBase          47037   47037   47037   47037   47037   47037   47037   47037 * 18194
-16420  _LobStat                                                                                   42943   42943
-16421  _UserStatus        42743 * 57433   57433   57433   57433   57433   57433   57433   57433   57433   57433
-16422  _MyConnection      24771 * 38909   38909   38909   38909   38909   38909   38909 * 39096 * 42836   42836
-16423  _AreaStatus         7288    7288    7288    7288    7288    7288    7288    7288 * 16089   16089   16089
-16424  _Repl-Server       28937   28937   28937   28937   28937   28937   28937 * 25934 * 54170 * 58520 *  2108
-16425  _Repl-AgentControl 25979   25979   25979   25979   25979   25979   25979 * 37733   37733   37733   37733
-16426  _Repl-Agent        55398   55398   55398   55398   55398   55398   55398 * 59975 * 30065 * 63773   63773
-16427  _Database-Feature  47668   47668   47668   47668   47668   47668   47668   47668   47668   47668   47668
-16428  _Code-Feature       4035    4035    4035    4035    4035    4035    4035    4035    4035    4035    4035
-16429  _AreaThreshold     22611   22611   22611   22611   22611   22611   22611   22611   22611   22611   22611
-16430  _UserTableStat      5791 * 54692   54692   54692   54692   54692   54692   54692   54692   54692   54692
-16431  _UserIndexStat     35633 * 15879   15879   15879   15879   15879   15879   15879   15879   15879   15879
-16432  _DbParams                                                          57152   57152   57152   57152   57152
-16433  _Repl-AgentControlActivity                                                 11534 * 12465   12465   12465
-16434  _Repl-AgentActivity                                                         4114    4114 * 59930   59930
-16435  _DbServiceManager                                                          16067   16067   16067   16067
-16436  _DbServiceManagerObjects                                                   30742   30742   30742   30742
-16437  _Cache                                                                             58929   58929   58929
-16438  _Repl-InterAgentActivity                                                            4290    4290    4290
-16439  _Repl-AgentAIStreaming                                                                     39066   39066

Star ("*") marks the changes between the versions.

By the way, _File._Last-Change returns 463860476 that means "Sep 12, 1984 18:07:56" for all VST tables regardless from their versions. 1984 is the year of the first Progress commercial release (V2) but VSTs were originally added in V8.2 (Apr 28, 1997). Is it some secret date inside Progress like Chip Ziering's birthday?

Update:

Attached file contains the history of the VST changes on the field level.

[View:/cfs-file/__key/communityserver-discussions-components-files/26/History_5F00_of_5F00_VST_5F00_Changes.2019.12.08.txt:320:240]

VstVersion.p reports the version of VST set in DICTDB database – a first Progress version that can create a database with the same set of VST tables.

[View:/cfs-file/__key/communityserver-discussions-components-files/26/VstVersion.p:320:240]

The next file contains the history of the metaschema changes:

[View:/cfs-file/__key/communityserver-discussions-components-files/26/7888.History_5F00_of_5F00_Schema_5F00_Table_5F00_Changes.2019.12.16.xlsx:320:240]

Metaschema tables:

[View:/cfs-file/__key/communityserver-discussions-components-files/26/Metaschema_5F00_Tables.2019.12.18.txt:320:240]

Metadata, Engine Crew Monograph Number 17

[View:/cfs-file/__key/communityserver-discussions-components-files/26/Gus-Bjorklund-_2D00_-Metadata.pdf:320:240]

All Replies

Posted by Matt Gilarde on 21-Nov-2019 19:24

[quote user="George Potemkin"]By the way, _File._Last-Change returns 463860476 that means "Sep 12, 1984 18:07:56" for all VST tables regardless from their versions. 1984 is the year of the first Progress commercial release (V2) but VSTs were originally added in V8.2 (Apr 28, 1997). Is it some secret date inside Progress like Chip Ziering's birthday?[/quote]

The comment on that value says "date/time of last schema change set in empty database by the scdbg utility. it is 9/12/84 2PM." The date was chosen in 1991 or earlier, but the source control system doesn't go back far enough to determine exactly when it came into existence.

My guess is that the developer needed a value so they spit out the current time and used it.

Posted by David Cleary on 21-Nov-2019 19:32

I confirmed it is a birthday via Wikipedia.  Any guesses by someone outside of Progress?
 
Dave
 

Posted by George Potemkin on 21-Nov-2019 19:43

All system tables has the same _Last-Change except for:
_Db
_File
_Field
_Index
_Index-Field
Their _Last-Change is 617740379 or 07/29/1989 18:32:59
Another birthday?

FUNCTION Timestamp RETURN DATETIME(ipTimestamp AS INTEGER):
  RETURN ADD-INTERVAL(DATETIME(1, 1, 1970, 0, 0, 0, 0), ipTimestamp, "seconds":U).
END FUNCTION. /* Timestamp */

FOR EACH _File NO-LOCK
   WHERE _File-Number LT 0
     AND _Last-Change NE 463860476:
     DISPLAY _File-Name _Last-Change Timestamp(_Last-Change).
END.

Update: the files above (except _Db) exist in all versions of Progress. _Db was added in V5 or V6 (from Dan Foreman's "Progress System Tables" PPT).

Posted by George Potemkin on 21-Nov-2019 19:52

My guess: Sep 12, 1984 - on this date in 1984 Michael Jordan signed his first NBA contract with the Chicago Bulls.

Posted by Matt Gilarde on 21-Nov-2019 19:57

[quote user="George Potemkin"]

All system tables has the same _Last-Change except for:
_Db
_File
_Field
_Index
_Index-Field
Their _Last-Change is 617740379 or 07/29/1989 18:32:59
Another birthday?

[/quote]That one is called VERS6DATE in the code. V6 was released in 1989. The comment says "date/time of last schema change set in vers6 database by scdbg uitilty. it is 7/31/89, and only for _file _db _index _field _index-f".

Posted by David Cleary on 21-Nov-2019 20:12

Nope. There is a very strong connection to Progress. 1984 is not the year of birth. It may have meaning, but could also be a coincidence.
 
Dave
 

Posted by George Potemkin on 21-Nov-2019 20:25

Very ancient kbase # 13191: How to determine the version compatibility of your database

     version 11      PROGRESS 2.1
     version 12      PROGRESS 2.2 and 2.3
     version 13      PROGRESS 2.4
     version 30      PROGRESS 3.0
     version 31      PROGRESS 3.0 after 12/18/85
     version 32      PROGRESS 3.0 after 12/19/85
     version 40      PROGRESS 4.0 after 1/7/87
     version 41      PROGRESS 4.0 after 1/19/87
     version 42      PROGRESS 4.0 after 2/28/87 (after-image)
     version 50      Reserved for PROGRESS with foreign dbs
     version 51      PROGRESS with foreign dbs after 1/13/88
     version 60      Resrved for PRGRS with foreign dbs & SQL
     version 61      PROGRESS Release 5.0 and 6.0 from 4/12/88
     version 62      PROGRESS Release 6.0 after 8/01/89
     version 63      PROGRESS Release 6.0A after 8/14/89
     version 64      PROGRESS Release 6.3A1B after 10/31/91

KB-P25408: The History of Progress Software Corporation

1981 – Progress Software Corporation was founded.
1983 – Though still not commercially available, RDL was ready to be shown at COMDEX.
1984 – Renamed Progress Version 2, this was the first commercial release.
1985 - Version 3
1987 - Version 4
1988 - Version 5
1990 - Version 6
1991 – Version 6.3
1993 – Version 7
1995 - Version 8
1998 - Version 9.0

No matching dates

Posted by Thomas Mercer-Hursh on 21-Nov-2019 20:37

That would be fairly close to the date when I first used Progress.  I discovered it at the 1984 COMDEX and did an eval that fall.

Posted by George Potemkin on 21-Nov-2019 20:43

BTW, 1989 seems to be a birthday of Progress Knowledgebase.

For example:

ALL BTOS VERSIONS-local bi(lbi) causes disk fragmentation

Written by SLK 01/13/89

Posted by gus bjorklund on 21-Nov-2019 21:30

Posted by OctavioOlguin on 22-Nov-2019 23:58

Ghostly big brother looking for everyone, or just a simple bug bug, that shows no content on Great Gus post?

Posted by George Potemkin on 26-Nov-2019 14:53

I attached the file (in the first post) with the history of the VST changes on the field level. It does not replace the documentation or Dan Foreman's VST Guide. Field descriptions in the file are just the field labels.

By the way:

1. Are there any plan to add new VST (or to extend the _Latch VST) that would report the same information as promon/19. BHT Latch Stats?

2. The _ActRecord table does not have the *-PartitionId field like in _ActIndex or in other correspondent VSTs. Is it a defect?

Posted by Richard Banville on 26-Nov-2019 14:59

1. Can't answer that officially but I know of no current effort to add that.  Maybe an enhancement request is in order.

2. I don't know what the partition id in the _actindex refers to.  I think that is the bug.

Posted by Richard Banville on 26-Nov-2019 14:59

1. Can't answer that officially but I know of no current effort to add that.  Maybe an enhancement request is in order.

2. I don't know what the partition id in the _actindex refers to.  I think that is the bug.

Posted by George Potemkin on 26-Nov-2019 15:48

All VSTs (except _ActRecords) related to the objects resided in the areas seem to have the *-PartitionId fields:

11.6 _Connect-PartitionId               inte
12.0 _UserLobStat-PartitionId           inte
11.0 _UserLock-PartitionId              inte[512]
11.0 _Index-PartitionId                 inte
11.0 _Lock-PartitionId                  inte
11.0 _TableStat-PartitionId             inte
11.0 _IndexStat-PartitionId             inte
12.0 _LobStat-PartitionId               inte
11.0 _UserTableStat-PartitionId         inte
11.0 _UserIndexStat-PartitionId         inte

Posted by Richard Banville on 26-Nov-2019 16:15

Yes, but don't each of those VST columns refer a particular object number /partitionId combination.

The _actindex refers to a summary of all index activity, not just one particular index / partition so what does the partition Id mean in that case?

Posted by George Potemkin on 26-Nov-2019 16:28

Thanks, Richard, I got it.

Posted by George Potemkin on 01-Dec-2019 20:13

_Connect VST has the field _Connect-ServerTid (the thread ID of the client's server) but _Servers or _ActServer VSTs don't have such fields. Should we ignore this field?

What is the purpose of _Connect-Tid (the thread ID of the user session)? ABL sessions can consist of two threads if a database is running with a non-zero -usernotifytime but the second thread is just an attention thread and it does not have a separate record in _Connect table.

Posted by Fernando Souza on 02-Dec-2019 12:24

_Connect-Tid: PASOE clients are multi-threaded clients to the db.

Posted by George Potemkin on 02-Dec-2019 13:43

The thread IDs do not seem to be used to accumulate the activity of PASOE clients or the activity of new multi-threaded servers. _ActServer, _UserIO, _User*Stat don't have the Tid fields. Am I understand correctly that the _Connect-Tid, _Connect-ServerTid, _MyConn-Tid, _MyConn-ServerTid fields are for a troubleshooting only?

Posted by Richard Banville on 02-Dec-2019 22:01

"Am I understand correctly that the _Connect-Tid, _Connect-ServerTid, _MyConn-Tid, _MyConn-ServerTid fields are for a troubleshooting only?"


Yes, just like pid's are used for "troubleshooting".  The stats you are referring to are collected on a database connection level, not on a pid/tid level.

Posted by George Potemkin on 03-Dec-2019 07:44

I did not yet deal with the multi-threaded PASOE clients.

I see how the multi-threaded servers are represented in _Connect table:

Db log:

[2019/12/03@09:37:27.498+0300] P-15608      T-15704 I TSRV    1: (452)   Login by George on CON:. 
[2019/12/03@09:37:28.472+0300] P-15608      T-7008  I TSRV    1: (742)   Login usernum 24, userid George client type ABL , on GP using TCP/IP IPV4 address 127.0.0.1. 
[2019/12/03@09:37:59.734+0300] P-15608      T-16004 I TSRV    1: (742)   Login usernum 23, userid George client type ABL , on GP using TCP/IP IPV4 address 127.0.0.1. 

Program:

FOR EACH _Connect WHERE _Connect-Usr GT 0:
  DISPLAY
    _Connect-Usr 
    _Connect-PID
    _Connect-TID
    _Connect-Type
    _Connect-Server 
    _Connect-ServerPid
    _Connect-ServerTid.
END.

_Connect records:

User-Id   Pid   Tid Type Srv Server Pid Server Tid
------- ----- ----- ---- --- ---------- ----------
 1      15608 15704 TSRV  ?           0          0
23      12940  2868 REMC  1       15608      16004
24      12940  2868 REMC  1       15608       7008

Server process consists of 3 threads (at least). One of them owns a slot in Usrctl Table. Two other threads serve the remote users but they share the _Connect record with the first thread.

Would be the same for the multi-threaded clients? Will the only one thread be represented by a record in _Connect table? We will not have the duplicated values of the _Connect-Usr field, will we?

Will the “waits” be reported per _Connect-Usr or per _Connect-Tid?
_Connect-Wait
_Connect-Wait1
_Connect-Wait2

Posted by David Cleary on 03-Dec-2019 14:42

September 12th is Louis C.K.’s birthday. He did release his first short in 1984 at the age of 17, but I’m thinking first release of Progress is the year.
 
Dave
 

Posted by gus bjorklund on 03-Dec-2019 17:22

Posted by George Potemkin on 08-Dec-2019 15:16

Back to the history...

The file in the first post is updated. Also VstVersion.p program is added.

VstVersion.p reports the version of VST set in DICTDB database – a first Progress version that can create a database with the same set of VST tables. For example, database created in V11.2 uses the same set as in V11.1, Progress V11.7 can open a database that has one of 12 different VST sets. VstVersion.p can be used as a reminder to run updatevst.

VstVersion.p identifies a VST version based on the table below.

The changes of the number of VST tables, the number of their fields and the sum of their CRCs:

Version  Tables Fields  Sum of CRCs
8.2A      30      426 * 1102031
8.3A      35      463 * 1300471
9.0A      39      495 * 1652590
9.1D      42      532 * 1733574
10.0A     44      545   1768780
10.1A     45      549   1800468
10.1B     47      564   1395763
10.1C     47      572   1408370
10.2B     47      577   1389841
10.2B05   47      581   1418527
10.2B06   47      590   1379260
11.0      47      605   1403679
11.1      47      616   1411960
11.3      47      617   1379269
11.4      47      623   1427556
11.5 **   47      631   1422804
11.6 **   47      678   1471059
11.7 **   47      744   1523741
11.7.3 ** 47      745   1526457
11.5      48      640   1479956
11.6      52      763   1590668
11.7      54      854   1707500
11.7.3    54      855   1710216
12.0      55 ***  862   1837964
12.1      55      867   1766538

*) Only for VST tables the _File._numfld does not match _Field._field-rpos.

For most VSTs the _File._numfld equates to (2 * _Field._field-rpos - 2)
For some VSTs the deviation from the formula is +/- one.
Fixed in V10.0A.
The values above are a real field count.

**) After proutil -C disablenewvsttables

Proutil -C enablenewvsttables/disablenewvsttables were introduced in V11.5.
They are the retired commands since V12.0 (message #19352).

Disablenewvsttables is intended to downgrade a database from 11.5 to an earlier version (11.0 to 11.4).

Proutil -C disablenewvsttables removes "New VST Tables" feature bit (_Database-Feature._DBFeature-ID = 23):
fmaFeatureDisable: The feature New VST Tables has been disabled. (11175)

Disablenewvsttables drops the VST tables with _File-Number LE -16432 (if they exist):

 -16432  _DbParams                  Added in 11.5
 -16433  _Repl-AgentControlActivity Added in 11.6
 -16434  _Repl-AgentActivity        Added in 11.6
 -16435  _DbServiceManager          Added in 11.6
 -16436  _DbServiceManagerObjects   Added in 11.6
 -16437  _Cache                     Added in 11.7
 -16438  _Repl-InterAgentActivity   Added in 11.7

Disablenewvsttables does not drop the fields added in V11.5 and higher to old VST tables.

Access to the fields that exist in a downgraded database but are unknown for a current version of Progress will result in the errors 450 and 3191:
SYSTEM ERROR: Cannot read field from record, not enough fields. (450)
SYSTEM ERROR: Failed to extract field <field-num> from <file-name> record (table <table-num>) with recid <RECID>. (3191)

Feature bit can be easy zeroed in master block. This will allow to open a V11.5+ database by earlier Progress version without deleting new VST tables. In this case a query to VST tables that exist in a database but unknown to a current Progress version will crash a session.

Proutil -C enablenewvsttables restores "New VST Tables" feature bit but it does NOT re-create new VST tables.

Proutil -C updatevst will re-create them. It also enables and activates the feature bit automatically:
New VST Tables has been enabled for database empty. (12479)

_DBFeature-ID = 23 is "Reserved" in V12.


***) V12.0: 2 tables were dropped and 3 tables were added.


In V8.2 and V8.3 VSTs need to be explicitly enabled:
proutil db -C enablevst

Once enabled the VSTs can't be disabled:
proutil empty -C disablevst

PROGRESS version 8.2A as of Mon Apr 28 1997
Not implemented

PROGRESS version 8.3A as of Wed Aug 05 1998
VST Table Deletion has begun. Please standby.
SYSTEM ERROR: ixdel with no transaction. (422)

Proutil -C enablevst/disablevst commands don't exist in V9 and above.

proutil -C Conv89 | Conv910 | Conv1011 | Conv1112 automatically updates VSTs to the same version as the correspondent updatevst.

Right now there are 24 different sets of VST tables.

Posted by marian.edu on 09-Dec-2019 07:28

Not to hijack the thread here, speaking of history is there anything on database structure evolution between versions - aka what new table/field/index properties were added when? Things like mutti-tenancy, encryption, partitioning. There are things that can be changed from .df (incremental or not) and others that needs to be done by running some dbman or other utilities, some can only be set when created others in incremental update statements... 

Since the 'documentation' for the data definition 'language' lies in prodict/load_df.p is there anyone that have that file versioned somewhere so we can try to infer those changes from the code maybe?

Thanks 

Marian Edu

Acorn IT 
www.acorn-it.com
www.akera.io
+40 740 036 212

Posted by George Potemkin on 09-Dec-2019 07:44

Hi Marian! Do you mean the following?

_*-Attributes fields introduced in V11.0 as logical extent 64 a.k.a. 64 bits: _*-Attributes[i] = TRUE => bit "i" is on.

_File-Attributes

1 Multi-Tenant Enabled Table ("m")
2 Keep Default Area (the default area is to be kept for the default tenant)
3 Partition Enabled Table ("p")
4 The meaning is unknown
5 CDC Source Table ("c")
6 CDC Change Table ("ct")

_Index-Attributes

1 Local (otherwise Global)

_Field-Attributes

1 Multi-Tenant Enabled LOB

_Seq-Attributes

1 Multi-Tenant Enabled Sequence ("m")

Posted by marian.edu on 09-Dec-2019 09:00

Yes, something like that only with corresponding keyword in data definition syntax (if any): MULTITENANT, ENCRYPTION, CIPHER-NAME, IS-PARTITIONED, NO-DEFAULT-AREA, BUFFER-POOL, IS-LOCAL...


Marian Edu

Acorn IT 
www.acorn-it.com
www.akera.io
+40 740 036 212

Posted by George Potemkin on 09-Dec-2019 09:32

Results of quick search:

10.2B ENCRYPTION
10.2B CIPHER-NAME
10.2B BUFFER-POOL
11.0 MULTITENANT
11.0 NO-DEFAULT-AREA
11.4 IS-PARTITIONED
11.4 IS-LOCAL

Posted by George Potemkin on 09-Dec-2019 10:08

Off-topic question: how to differentiate the undocumented information and the information that Progress does not like to share publicly?

For example, there are the 4GL functions that are not KEYWORD'ed. Is it done intentionally?

Posted by George Potemkin on 10-Dec-2019 17:12

The side result of VST investigation was a collecting information about schema table changes. The database schema is not changing in the service packs – only the major Progress versions are allowed to change database schema. Column “Change” in the Excel file contains the values: “new”, “dropped” or the number of fields added (or dropped) to a table in the given release. Zero can mean the changes of field types (e.g. integer -> int64).

Update: the uploaded files were moved to the first post.

Posted by George Potemkin on 16-Dec-2019 07:49

The values in _Database-Feature records:

10.0A _Database-Feature[-16427]

From  To     # Feature Name                    Ver   Command to enable/disable a feature
----- ----- -- ------------------------------- ----- -----------------------------------
10.0A 10.1A  0 V100A_STORAGE
10.0A 10.1A  1 FATHOM_REPLICATION              9.1D  proutil -C enablesitereplication / disablesitereplication
10.1A 10.1A  2 FAILOVER_CLUSTERS               10.0A _dbutil prostrct cluster enable / disable
10.0A 10.1A  3 PEER_DIRECT                     10.0A proutil -C enablepdr / disablepdr
10.0a 10.1A  4 *** Invalid Feature ***
10.0A 10.1A  5 LARGE_FILES                     9.1C  proutil -C enablelargefiles
10.1A 10.1A  6 AUDITING                        10.1A proutil -C enableauditing / disableauditing
10.1A 10.1A  7 AI_ARCHIVER                     10.1A rfutil  -C aiarchiver enable

10.1B        1 OpenEdge Replication            10.1B proutil -C enableoerepl / disableoerepl  a.k.a. 9.1D enablesitereplication / disablesitereplication
10.1B        2 Failover Clusters               10.0A _dbutil prostrct cluster enable / disable
10.1B        3 DataXtend Remote Edition        10.1B proutil -C enableDXRE / disableDXRE
10.1B        4 Reserved
10.1B        5 Large Files                     9.1C  proutil -C enablelargefiles
10.1B        6 Database Auditing               10.1A proutil -C enableauditing / disableauditing
10.1B        7 JTA                             10.1A proutil -C enablejta / disablejta
11.7         8 After Image Management/Archiver 10.1A aiarchiver enable / disable
10.1B        9 64 Bit DBKEYS
10.1B       10 Large Keys                      10.1B proutil -C enablelargekeys (for 4K or 8K dbblocksize)
10.1B       11 64 Bit Sequences                10.1B proutil -C enableseq64
10.1B       12 DataXtend Integration Edition   10.1B proutil -C enableDXIE / disableDXIE
10.2B       13 Encryption                      10.2B proutil -C enableencryption / disableencryption
11.0        14 Multi-tenancy                   11.0  proutil -C enablemultitenancy / disablemultitenancy
11.2  11.7  15 Concurrent JTA and Replication
11.4        16 Reserved
11.3  11.7  17 MT Index Rebuild                11.3  proutil -C enablemtidxbld / disablemtidxbld (retired since 12.0)
11.3  11.7  18 MT Data Move                    11.3  proutil -C dbrestrict datamove enable / disable
11.3        19 Roll Forward Restricted Mode    11.3  proutil -C dbrestrict rollforward enable / disable
11.4  11.7  20 TP Index Rebuild                11.4  proutil -C enabletpidxbld / disabletpidxbld (retired since 12.0)
11.4        21 Table Partitioning              11.4  proutil -C enabletablepartitioning / disabletablepartitioning
11.5  11.7  22 Read-only Partitions            11.5  proutil -C enablereadonlypartitions / disablereadonlypartitions (retired since 12.0)
11.5  11.7  23 New VST Tables                  11.5  proutil -C enablenewvsttables / disablenewvsttables (retired since 12.0)
11.5  11.5  24 TP Partition Move                     proutil -C enablepartitionmove / disablepartitionmove (was not implemented)
11.6        25 Partition Copy                  11.6  proutil -C dbrestrict partitioncopy enable / disable
11.6        26 Authentication GATEWAY          11.6  proutil -C enableauthgateway / disableauthgateway
11.6        27 Change Data Capture             11.6  proutil -C enableCDC / disableCDC (since 11.7)
11.7        28 Backup Counter Extension        11.7  proutil -C enablebackupcounterextension / disablebackupcounterextension (mb_bkincr_HIGH, mb_buseq_HIGH)

The features that seemed to be not implemented:

15 Concurrent JTA and Replication
24 TP Partition Move

The features that are retired since 12.0:

17 MT Index Rebuild
20 TP Index Rebuild
22 Read-only Partitions
23 New VST Tables

"Save Key Events" feature is not reported by _Database-Feature but reported by proutil -C describe.

Since V10.1B the enablekeyevents command creates the _KeyEvt table.
Proutil -C disablekeyevents does not remove the _KeyEvt table from metaschema.
4GL sessions are unable to check if the "Save Key Events" feature is currently enabled.

_Database-Feature VST gets data from the fields in Master Block:

mb_fmaDBContent (8 bytes) Active  feature list
mb_fmaDBEnabled (8 bytes) Enabled feature list

Old features are still stored as the single-byte fields in Master Block but these values are not used except mb_SaveKeyEvents:

mb_largeFilesEnabled  enablelargefiles
mb_replEnabled        enablesitereplication / disablesitereplication
mb_pdrEnabled         enableDXRE / disableDXRE
mb_clustEnabled       procluster enable / disable
mb_XAsupportEnabled   enablejta / disablejta

"Large Keys" feature is duplicated in _Db._Db-res1[1]

Posted by George Potemkin on 16-Dec-2019 17:54

Since V11 Progress by default calculates what seems to be an alternate (SQL) CRC: _File._Fil-res1[1]
It’s an addition to 4GL CRC: _File._CRC.

Article: Format of field _File._Fil-res1 is too short for values in OpenEdge 11
https://knowledgebase.progress.com/articles/Article/000043719

FOR EACH _File:
  DISPLAY 
    _File._Tbl-Type
    _File._File-Name
    _File._Fil-res1[1] FORMAT ">>>>>>9"
    _File._CRC.
END.

Both values are evenly distributed in the range from 0 to 32K.

Both are not applied to SQL Views (_Tbl-Type = “V”).
Both are changing if we are modifying a table structure.
But they are not equal.

I guess these CRCs are calculated based on the different sets of field properties. For example, 4GL CRC uses 4GL data type (_Field._Data-Type) while SQL CRC uses SQL data type (_Field._Fetch-Type). Is it correct?

Can we use SQL CRC to track the changes of the tables that are ignored by 4GL CRC? Or do they always change synchronously? For example, if we change a field type from “integer” to “int64” then SQL type will be automatically changed from “integer” to “bigint”. So both CRCs are changed.

Posted by gus bjorklund on 16-Dec-2019 20:20

> On Dec 16, 2019, at 12:57 PM, George Potemkin wrote:

>

> Since V11 Progress by default calculates what seems to be an alternate (SQL) CRC

dont know about this particular item, but historically, various _fil-res*[*] schema items (and simlarly named ones in other schema tables) have been used by the openedge dataserver code.

the openedge sql server does not care about default 4gl display formats.

Posted by George Potemkin on 17-Dec-2019 08:06

Gus, can I upload here your "Metadata" (Engine Crew Monograph Number 17) in pdf format? It's sad that nowadays we can find on the Internet only the shadows of these monographs.

Posted by George Potemkin on 17-Dec-2019 15:02

> various _fil-res* schema items (and simlarly named ones in other schema tables) have been used by the openedge dataserver code.

_Db._Db-res1[1] stores the "Large Keys Support" flag, I guess, since proutil -C enablelargekeys was introduced in 10.1B 

Update: enablelargefiles command was mentioned by mistake

Posted by gus bjorklund on 17-Dec-2019 15:32

> On Dec 17, 2019, at 10:06 AM, George Potemkin wrote:

>

> _Db._Db-res1[1] stores the "Large Keys Support" flag

these "res" fields were put in so that if we needed to add something we could do it without a database version change. at times we used them for things like the large keys flag. the intent was that in the next major release, they would be replaced by properly named fields. this did not always happen.

the dataservers were orginally on a different release cycle than the main product so they used a lot of the "res" fields for their own purposes. a given field might be used for one thing by the oracle dataserver and something else by the sybase dataserver.

later we added the feature bitmaps so we could add new things without waiting for the next (major) release that included a database version change.

Posted by gus bjorklund on 17-Dec-2019 15:36

> On Dec 17, 2019, at 3:07 AM, George Potemkin wrote:

>

> Gus, can I upload here your "Metadata" (Engine Crew Monograph Number 17) in pdf format?

yes. feel free to post that and any of the others you wish.

i also have a newer metadata document. it isn't quite up to date since i wrote it in the 10.2 time frame.

Posted by George Potemkin on 17-Dec-2019 17:32

All files are moved to the first post.

Posted by George Potemkin on 17-Dec-2019 18:59

New finding:

Since V12.0 proutil -C dbauthkey does not update _Db._Db-revision (integer) anymore. Now it updates _Db._Db-auth-key added in V12.0.

The _Db-auth-key value looks like: oakb1::qKgHqEYTQ3AXhvXquJN0bW+Zz2WEfOQffDqngiCO9EMD7Pad2D+TN/rc5hIrEze

The message is changed as well:

Before 12.0: Database authorization key changed to <newkey>. (1973)

Since 12.0: Database authorization key has been changed successfully. (19415)

This thread is closed