MantisBT - Open CASCADE
View Issue Details
0029217Open CASCADE[OCCT] OCCT:Application Frameworkpublic2017-10-12 14:472020-12-05 13:02
kgv 
bugmaster 
normalminor 
verifiedfixed 
[OCCT] 7.2.0 
[OCCT] 7.6.0* 
bugs/caf/bug29217
0029217: Application Framework - undocumented API method XmlLDrivers::SetStorageVersion()
The patch for #0028691 introduced new feature ability to save OCAF document within XML persistence formats which can be (theoretically?) opened by earlier OCCT versions - at least Open CASCADE 6.7.0.

However, the way it was implemented (new global method XmlLDrivers::SetStorageVersion()) is quite questionable:
- No documentation provided anywhere, including API methods and Draw Harness command.
  No description provided about possible side effects of settings version below last.
- Patch does not clarifies what has been introduced within version 9 comparing to 8.
- No any checks for supported/unsupported version numbers.
  One may set any version.
  Only test case bugs/caf/bug28691 suggests that at least 7 and 9 are valid numbers.
- No API provided returning actual (last) version of format.
- XmlLDrivers_DocumentRetrievalDriver also uses XmlLDrivers::StorageVersion()
  resulting in read failure if application wants writing XML file
  in compatible mode (e.g. set version 7) and then try reading file
  written in latest format (9), which does not make sense.
Dear MPV, KGV, everything is fixed, could you review, please:

http://vm-jenkins-test-12.nnov.opencascade.com:8080/view/CR29217_5-master-vro/view/COMPARE/ [^]

For bugmaster:
- the branch CR29217_5 is for Open CASCADE,
- a new test-script "bugs caf bug29217" is added.
No tags attached.
related to 0031946assigned asuraven Open CASCADE Modeling Data - replace version numbers with enumerations in TopTools and BinTools 
cxx BinLDrivers_DocumentSection.cxx (8,324) 2020-11-26 10:54
https://tracker.dev.opencascade.org/
Issue History
2017-10-12 14:47kgvNew Issue
2017-10-12 14:47kgvAssigned To => mpv
2017-10-12 14:47kgvRelationship addedrelated to 0028691
2017-10-12 14:54kgvRelationship addedrelated to 0029216
2017-10-12 14:54mpvAssigned Tompv => vro
2017-10-19 16:25gitNote Added: 0071646
2017-10-20 09:05vroAssigned Tovro => mpv
2017-10-20 09:05vroStatusnew => resolved
2017-10-20 09:05vroSteps to Reproduce Updatedbug_revision_view_page.php?rev_id=17971#r17971
2017-10-20 15:34mpvAssigned Tompv => kgv
2017-10-20 15:34mpvNote Added: 0071662
2017-10-20 15:40kgvNote Added: 0071664
2017-10-20 15:40kgvSteps to Reproduce Updatedbug_revision_view_page.php?rev_id=17972#r17972
2017-10-20 15:40kgvAssigned Tokgv => abv
2018-01-23 15:43kgvRelationship addedparent of 0029443
2018-02-05 15:30gzyNote Added: 0073819
2018-02-05 15:30gzyAssigned Toabv => bugmaster
2018-02-05 15:30gzyStatusresolved => reviewed
2018-02-05 15:30gzyAssigned Tobugmaster => kgv
2018-02-05 15:34kgvAssigned Tokgv => abv
2018-02-05 15:34kgvStatusreviewed => feedback
2018-02-05 15:34gzyNote Deleted: 0073819
2019-09-04 17:52kgvTarget Version7.4.0 => 7.5.0
2020-09-11 15:32utverdovTarget Version7.5.0 => 7.6.0*
2020-11-18 00:31kgvRelationship addedrelated to 0031946
2020-11-22 22:16abvNote Added: 0096996
2020-11-22 22:16abvAssigned Toabv => mpv
2020-11-22 22:16abvStatusfeedback => assigned
2020-11-23 09:35mpvNote Added: 0097002
2020-11-23 09:35mpvAssigned Tompv => vro
2020-11-26 10:12vroNote Added: 0097083
2020-11-26 10:54mpvFile Added: BinLDrivers_DocumentSection.cxx
2020-11-26 10:57mpvNote Added: 0097085
2020-11-26 12:24vroNote Added: 0097093
2020-11-26 17:29gitNote Added: 0097101
2020-11-26 19:37vroAssigned Tovro => mpv
2020-11-26 19:37vroStatusassigned => resolved
2020-11-26 19:37vroSteps to Reproduce Updatedbug_revision_view_page.php?rev_id=24077#r24077
2020-11-26 20:45kgvSummaryApplication Framework - nonsense API method XmlLDrivers::SetStorageVersion() => Application Framework - undocumented API method XmlLDrivers::SetStorageVersion()
2020-11-26 20:48kgvNote Added: 0097103
2020-11-27 07:06vroNote Added: 0097104
2020-11-30 11:20vroAssigned Tompv => vro
2020-11-30 11:20vroStatusresolved => assigned
2020-11-30 13:55gitNote Added: 0097163
2020-11-30 14:13gitNote Added: 0097166
2020-11-30 14:19gitNote Added: 0097167
2020-11-30 14:31gitNote Added: 0097168
2020-11-30 15:00gitNote Added: 0097170
2020-11-30 15:32gitNote Added: 0097171
2020-11-30 21:11vroAssigned Tovro => mpv
2020-11-30 21:11vroStatusassigned => resolved
2020-11-30 21:11vroSteps to Reproduce Updatedbug_revision_view_page.php?rev_id=24095#r24095
2020-12-01 11:32mpvNote Added: 0097191
2020-12-01 11:32mpvAssigned Tompv => vro
2020-12-01 11:32mpvStatusresolved => assigned
2020-12-01 12:39gitNote Added: 0097196
2020-12-01 14:50kgvNote Added: 0097211
2020-12-02 09:38gitNote Added: 0097230
2020-12-02 12:23vroAssigned Tovro => mpv
2020-12-02 12:23vroStatusassigned => resolved
2020-12-02 12:23vroSteps to Reproduce Updatedbug_revision_view_page.php?rev_id=24113#r24113
2020-12-02 15:18mpvNote Added: 0097244
2020-12-02 15:18mpvAssigned Tompv => bugmaster
2020-12-02 15:18mpvStatusresolved => reviewed
2020-12-05 11:57bugmasterNote Added: 0097346
2020-12-05 11:57bugmasterStatusreviewed => tested
2020-12-05 12:08bugmasterTest case number => bugs/caf/bug29217
2020-12-05 12:15bugmasterChangeset attached => occt master 716cf4d9
2020-12-05 12:15bugmasterStatustested => verified
2020-12-05 12:15bugmasterResolutionopen => fixed
2020-12-05 13:01gitNote Added: 0097359
2020-12-05 13:01gitNote Added: 0097361
2020-12-05 13:01gitNote Added: 0097363
2020-12-05 13:01gitNote Added: 0097364
2020-12-05 13:01gitNote Added: 0097368
2020-12-05 13:02gitNote Added: 0097386

Notes
(0071646)
git   
2017-10-19 16:25   
Branch CR29217 has been created by vro.

SHA-1: 248dd6ca65ced8d4bd648f56a5eb6e3839b65c9d


Detailed log of new commits:

Author: vro
Date: Thu Oct 19 16:24:15 2017 +0300

    0029217: Application Framework - nonsense API method XmlLDrivers::SetStorageVersion()
(0071662)
mpv   
2017-10-20 15:34   
Dear KGV,

Could you review this fix from your case point of view.
(0071664)
kgv   
2017-10-20 15:40   
vro written:

Done:
- multiple definition of the document version in BinLDrivers, XmlLDrivers, ... is removed;
- a document version variable now belongs to each instance of the document (TDocStd_Document);
- it is possible to change the document version.
- a comment for the new methods of TDocStd_Document describe a purpose of the methods and how to use them.

The branch is compiled and tested: http://jenkins-test-10.nnov.opencascade.com/view/CR29217-master-vro/view/START%20BRANCH%20CERTIFICATION/ [^] [^]

Any remarks are welcome!
(0096996)
abv   
2020-11-22 22:16   
The patch does not contains sufficient description of the changes made and the new options introduced.

From the code changes it is apparent that effectively it changes default XML format version from 9 to 10. Does this mean that XML documents saved by OCCT after that change will not be readable by previous versions? If yes, this must be documented.

If an option to set document version is introduced, there should be descrioption on which versions are supported. Without that, this change is usable by its authors only; such stuff shall not appear in an open source library.
(0097002)
mpv   
2020-11-23 09:35   
In CR29217 only ability to set XML document storage version is added. As I see, the default version was set to 10 in "0028736: An error to read a binary OCAF document of > 2Gb", which looks reasonable.

I agree with ABV recommendations to document new API and to describe what is supported now and which versions of the document storage are supported in he current version.
(0097083)
vro   
2020-11-26 10:12   
Dear colleagues, if you don’t mind I would like to propose some improvements for SetStortageVersion().

So, a little history. Several years ago, a customer asked for an improvement of Ocaf XML storage file reader and writer to become faster and occupy less space on disk. I removed a default GUID for several attributes like TDataStd_TreeNode and some others, made some little other changes. As a consequence, writing became 25% faster, reading – about 10% faster, disk space – about 30% smaller. But… the document became incompatible with old versions. I mean, old applications couldn’t read documents saved by new application. Having reverted the changes I noticed that the document remained incompatible… but now it happened because of porting to a newer version of Open CASCADE – an attribute TPrsStd_AISPresentation was replaced by TDataXtd_Presentation, and some other changes were made in the newer version. So, we needed a solution to make a document readable by old applications.

The solution. After some modifications and further improvements the solution looks like this. I will describe in brief:
1. A document has a method Set/GetStorageFormatVersion(), which defines the version number to be saved on disk. So far, it works only for XML file format.
2. This version number is used in all storage drivers of Ocaf attributes and for example, in TDataStd_TreeNode, it stores or not the default GUID of the attribute. In particular, for the version number 7 (corresponding to Open CASCADE 6.7.0) it stores the GUID, but for later versions – doesn’t (optimization). Also, it stores a TPsStd_AISPresentation attribute instead of TDataXtd_Presentation if the version number is 7 or earlier.
3. On reading of the attribute, a driver of the old application expects a GUID, while in the newer applications the driver is improved so that it works fine if a GUID is absent.

So, these little changes gave us an opportunity to allow old applications based on Open CASCADE 6.7.0 to open documents saved by applications based on newest versions of Open CASCADE. But, as you noticed, this solution has many drawbacks… Here they are:
1. It works only for XML, not for binary file format.
2. It works only for Open CASCADE 6.7.0, storage version 7.
3. It works only for documents with old attributes. For example, if the user of a new application sets two TDataStd_Real attributes with different GUIDs, this solution fails.
In other words, it is a private solution for a particular case. In addition, it is not documented anyhow. And it is me who gave you this “piece of cake”.

A proposal:
1. I would like to propose usage of StorageFormatVerison of the document for the binary file format too. It was not used before, but may be later someone would like to do it and they will have already a working mechanism.
2. Documentation. I think a short article in the documentation dedicated to back-compatibility in OCAF would explain the users how to use the storage version, what it does and how to improve in case of need. Just a page would be enough.
3. There are the version 8 and 9 of XML file format. Should we develop a back-compatibility for them? I didn’t hear about such requests from any customer. Let me know please your opinion.
Any remarks and proposals are welcome!
(0097085)
mpv   
2020-11-26 10:57   
Dear VRO,

Could you also use the attached file BinLDrivers_DocumentSection.cxx? It was created by ESA basing on OCCT version 7.4.0 to support writing of binary file formats versions earlier than 10.
(0097093)
vro   
2020-11-26 12:24   
Ok, I will include this file. Thanks to ESA.
Any other remarks are welcome, please.
(0097101)
git   
2020-11-26 17:29   
Branch CR29217_1 has been created by vro.

SHA-1: d023d2f18bdc766777cb6b21b6a637eeeec80938


Detailed log of new commits:

Author: Vlad Romashko
Date: Thu Nov 26 17:29:13 2020 +0300

    0029217: Application Framework - nonsense API method XmlLDrivers::SetStorageVersion()
    
    1. Unification of usage of a storage version of a document by XML and binary file formats.
    2. Removal of unnecessary methods for storage version like XmlLDrivers::StorageVersion(), BinLDrivers::StorageVersion().
    3. Support of old documents (storage version <= 9) in binary file format (came from ESA).
    
    Modified files:
    - CDM_Document.cxx: a latest document storage version is defined.
    - BinLDrivers_DocumentSection.hxx and cxx: support of old document storage version in binary file format.
    - BinDrivers_DocumentStorageDriver.hxx and cxx,
    - BinLDrivers_DocumentStorageDriver.hxx and cxx,
    - BinLDrivers_DocumentRetrievalDriver.cxx: usage of document storage version from CDM_Document in storage and retrieval drivers of binary file format.
    
    New test:
    bugs caf bug29217: a test case for old document storage version in binary file format. It checks several attributes saved by the version 7 (old) and 10 (the latest version).
(0097103)
kgv   
2020-11-26 20:48   
+  if (theDocFormatVersion <= 9)

It would be handful relying on the patch 0031946 replacing version numbers with documented enumeration.
(0097104)
vro   
2020-11-27 07:06   
Hello KGV, may I take the enumeration from 0031946 and apply it here? Or should I wait for integration of 0031946 and then merge the sources?
(0097163)
git   
2020-11-30 13:55   
Branch CR29217_2 has been created by vro.

SHA-1: 740b30d0b854cc58596d0b9aa640ebbcf7df89b1


Detailed log of new commits:

Author: Vlad Romashko
Date: Mon Nov 30 13:56:11 2020 +0300

    0029217: Application Framework - nonsense API method XmlLDrivers::SetStorageVersion()
    
    1. Unification of usage of a storage version of an OCAF document by XML and binary file formats.
    2. A new format version enumeration in TDocStd package: TDocStd_FormatVersion.
    3. Removal of unnecessary methods for storage version like XmlLDrivers::StorageVersion() and BinLDrivers::StorageVersion().
    4. Support of old documents (storage version <= 9) in binary file format (came from ESA).
    
    New files:
    - TDocStd_FormatVersion.hxx: a new storage format version enumeration for an OCAF document.
    
    Modified files:
    - CDM_Document.hxx and cxx: removal of storage format version property (moved to TDocStd_Document).
    - TDocStd_Document.hxx and cxx: a storage format version property (moved from CDM_Document).
    - BinLDrivers_DocumentSection.hxx and cxx: support of old document storage version in binary file format.
    - BinDrivers_DocumentStorageDriver.hxx and cxx,
    - BinLDrivers_DocumentStorageDriver.hxx and cxx,
    - BinLDrivers_DocumentRetrievalDriver.cxx,
    - XmlLDrivers_DocumentRetrievalDriver.cxx,
    - XmlLDrivers_DocumentStorageDriver.cxx: usage of document storage version from TDocStd_Document in storage and retrieval drivers.
    - DDocStd_ApplicationCommands.cxx: draw-command name StorageVersion is replaced by StorageFormatVersion (to be the same everywhere). A corresponding script is corrected too.
    
    New test:
    - bugs caf bug29217: a test case for old document storage version in binary file format. It checks several attributes saved by the version TDocStd_FormatVersion_VERSION_7 (old) and the latest version.
    
    Modified test:
    caf presentation M1: the test used a file in the current folder, not in {imagedir} like all other tests.
(0097166)
git   
2020-11-30 14:13   
Branch CR29217_2 has been updated by vro.

SHA-1: 3b6fc56b1221b86b32eff1a192867de873b78744


Detailed log of new commits:

Author: Vlad Romashko
Date: Mon Nov 30 14:13:33 2020 +0300

    0029217: Application Framework - nonsense API method XmlLDrivers::SetStorageVersion()
    
    // Non-ascii symbols are removed from TDocStd_FormatVersion.hxx

(0097167)
git   
2020-11-30 14:19   
Branch CR29217_2 has been updated by vro.

SHA-1: 7ece7c7aca4d76bde094490827ddd8e43a92b7e0


Detailed log of new commits:

Author: Vlad Romashko
Date: Mon Nov 30 14:19:43 2020 +0300

    0029217: Application Framework - nonsense API method XmlLDrivers::SetStorageVersion()
    
    // Remove non-ascii symbols.

(0097168)
git   
2020-11-30 14:31   
Branch CR29217_2 has been updated by vro.

SHA-1: 0234daf31fa06cd23f1c3def4e0bd4f044cc4538


Detailed log of new commits:

Author: Vlad Romashko
Date: Mon Nov 30 14:31:46 2020 +0300

    0029217: Application Framework - nonsense API method XmlLDrivers::SetStorageVersion()
    
    // Removed non-ascii symbols.

(0097170)
git   
2020-11-30 15:00   
Branch CR29217_2 has been updated by vro.

SHA-1: 238e3ade6526d2f6dab49c7d43c65f125f2f9d99


Detailed log of new commits:

Author: Vlad Romashko
Date: Mon Nov 30 15:00:34 2020 +0300

    0029217: Application Framework - nonsense API method XmlLDrivers::SetStorageVersion()
    
    // Remove non-ascii symbols.

Author: Vlad Romashko
Date: Mon Nov 30 14:54:47 2020 +0300

    Merge branch 'CR29217_2' of git.dev.opencascade.org:occt into CR29217_2

Author: Vlad Romashko
Date: Mon Nov 30 14:54:20 2020 +0300

    0029217: Application Framework - nonsense API method XmlLDrivers::SetStorageVersion()
    
    // Removed non-ascii symbols.

Author: Vlad Romashko
Date: Mon Nov 30 14:31:46 2020 +0300

    0029217: Application Framework - nonsense API method XmlLDrivers::SetStorageVersion()
    
    // Removed non-ascii symbols.

(0097171)
git   
2020-11-30 15:32   
Branch CR29217_3 has been created by vro.

SHA-1: c775e1ae8993ffeaa66b3cb000afd7d3b6d5fc95


Detailed log of new commits:

Author: Vlad Romashko
Date: Mon Nov 30 15:32:41 2020 +0300

    0029217: Application Framework - nonsense API method XmlLDrivers::SetStorageVersion()
    
    1. Unification of usage of a storage version of an OCAF document by XML and binary file formats.
    2. A new format version enumeration in TDocStd package: TDocStd_FormatVersion.
    3. Removal of unnecessary methods for storage version like XmlLDrivers::StorageVersion() and BinLDrivers::StorageVersion().
    4. Support of old documents (storage version <= 9) in binary file format (came from ESA).
    
    New files:
    - TDocStd_FormatVersion.hxx: a new storage format version enumeration for an OCAF document.
    
    Modified files:
    - CDM_Document.hxx and cxx: removal of storage format version property (moved to TDocStd_Document).
    - TDocStd_Document.hxx and cxx: a storage format version property (moved from CDM_Document).
    - BinLDrivers_DocumentSection.hxx and cxx: support of old document storage version in binary file format.
    - BinDrivers_DocumentStorageDriver.hxx and cxx,
    - BinLDrivers_DocumentStorageDriver.hxx and cxx,
    - BinLDrivers_DocumentRetrievalDriver.cxx,
    - XmlLDrivers_DocumentRetrievalDriver.cxx,
    - XmlLDrivers_DocumentStorageDriver.cxx: usage of document storage version from TDocStd_Document in storage and retrieval drivers.
    - DDocStd_ApplicationCommands.cxx: draw-command name StorageVersion is replaced by StorageFormatVersion (to be the same everywhere). A corresponding script is corrected too.
    
    New test:
    - bugs caf bug29217: a test case for old document storage version in binary file format. It checks several attributes saved by the version TDocStd_FormatVersion_VERSION_7 (old) and the latest version.
    
    Modified test:
    caf presentation M1: the test used a file in the current folder, not in {imagedir} like all other tests.
(0097191)
mpv   
2020-12-01 11:32   
Please, append into dox/upgrade/upgrade.md file information how to change the version of the document and port to this OCCT, since you have removed old methods, possibly used externally.

In TDocStd_FormatVersion.hxx misprint: TDpcStd_Document
Also, it is worth in this file comment change "Open CASCADE" to "Open CASCADE Technology".

In XmlLDrivers_DocumentStorageDriver.cxx modifications complains coding rules: write "{" at a new line. If method contains arguments, there must be a space before "(".
(0097196)
git   
2020-12-01 12:39   
Branch CR29217_4 has been created by vro.

SHA-1: e9f27212ac106262813f4c2d7e643a38bdbf008f


Detailed log of new commits:

Author: Vlad Romashko
Date: Tue Dec 1 12:40:00 2020 +0300

    0029217: Application Framework - nonsense API method XmlLDrivers::SetStorageVersion()
    
    1. Unification of usage of a storage version of an OCAF document by XML and binary file formats.
    2. A new format version enumeration in TDocStd package: TDocStd_FormatVersion.
    3. Removal of unnecessary methods for storage version like XmlLDrivers::StorageVersion() and BinLDrivers::StorageVersion().
    4. Support of old documents (storage version <= 9) in binary file format (came from ESA).
    
    New files:
    - TDocStd_FormatVersion.hxx: a new storage format version enumeration for an OCAF document.
    
    Modified files:
    - CDM_Document.hxx and cxx: removal of storage format version property (moved to TDocStd_Document).
    - TDocStd_Document.hxx and cxx: a storage format version property (moved from CDM_Document).
    - BinLDrivers_DocumentSection.hxx and cxx: support of old document storage version in binary file format.
    - BinDrivers_DocumentStorageDriver.hxx and cxx,
    - BinLDrivers_DocumentStorageDriver.hxx and cxx,
    - BinLDrivers_DocumentRetrievalDriver.cxx,
    - XmlLDrivers_DocumentRetrievalDriver.cxx,
    - XmlLDrivers_DocumentStorageDriver.cxx: usage of document storage version from TDocStd_Document in storage and retrieval drivers.
    - DDocStd_ApplicationCommands.cxx: draw-command name StorageVersion is replaced by StorageFormatVersion (to be the same everywhere). A corresponding script is corrected too.
    
    New test:
    - bugs caf bug29217: a test case for old document storage version in binary file format. It checks several attributes saved by the version TDocStd_FormatVersion_VERSION_7 (old) and the latest version.
    
    Modified test:
    - caf presentation M1: the test used a file in the current folder, not in {imagedir} like all other tests.
    
    Documentation:
    - dox/upgrade/upgrade.md
(0097211)
kgv   
2020-12-01 14:50   
+  if (theDocFormatVersion <= TDocStd_FormatVersion_VERSION_9)
+  {
+    // Old documents stored file position as 4-bytes values.
+    Standard_Integer aValInt[3] = {

It would be useful throwing an exception on 32-bit signed integer overflow on attempt to write too big file (requiring 64-bit size).
Tip: int32_t would be less ambiguous than Standard_Integer.

+  theCommands.Add("GetStorageFormatVersion",
+                 "GetStorageFormatVersion Doc",
+                 __FILE__, DDocStd_GetStorageFormatVersion, g);
+  theCommands.Add("SetStorageFormatVersion",
+                 "SetStorageFormatVersion Doc Version",

Could you please add some description to Draw Harness commands to elaborate which version could be passed in (or at least some references to documentation)?

+  //! Sets <theVersion> of the format to be used to store the document
+  Standard_EXPORT void ChangeStorageFormatVersion(const TDocStd_FormatVersion theVersion);

Please avoid using angle brackets in Doxygen comments - they generate Doxygen warnings. Use @param and @return syntax for describing parameters and return values.

+//! (smaller files on disk, reading and writing of the XML files is faster).
+
+enum TDocStd_FormatVersion

Please drop redundant empty lines between documentation and class/enum/method definition.

+puts "OCC29217"
...
+# Storage of Ocaf documents in BIN file format in old document version

Please move test description to "puts" above, so that it will appear in logs.
(0097230)
git   
2020-12-02 09:38   
Branch CR29217_5 has been created by vro.

SHA-1: 412127b523edd1ef02cdcaa3014ad52840abf82a


Detailed log of new commits:

Author: Vlad Romashko
Date: Wed Dec 2 09:38:28 2020 +0300

    0029217: Application Framework - nonsense API method XmlLDrivers::SetStorageVersion()
    
    1. Unification of usage of a storage version of an OCAF document by XML and binary file formats.
    2. A new format version enumeration in TDocStd package: TDocStd_FormatVersion.
    3. Removal of unnecessary methods for storage version like XmlLDrivers::StorageVersion() and BinLDrivers::StorageVersion().
    4. Support of old documents (storage version <= 9) in binary file format (came from ESA).
    
    New files:
    - TDocStd_FormatVersion.hxx: a new storage format version enumeration for an OCAF document.
    
    Modified files:
    - CDM_Document.hxx and cxx: removal of storage format version property (moved to TDocStd_Document).
    - TDocStd_Document.hxx and cxx: a storage format version property (moved from CDM_Document).
    - BinLDrivers_DocumentSection.hxx and cxx: support of old document storage version in binary file format.
    - BinDrivers_DocumentStorageDriver.hxx and cxx,
    - BinLDrivers_DocumentStorageDriver.hxx and cxx,
    - BinLDrivers_DocumentRetrievalDriver.cxx,
    - XmlLDrivers_DocumentRetrievalDriver.cxx,
    - XmlLDrivers_DocumentStorageDriver.cxx: usage of document storage version from TDocStd_Document in storage and retrieval drivers.
    - DDocStd_ApplicationCommands.cxx: draw-command name StorageVersion is replaced by StorageFormatVersion (to be the same everywhere). A corresponding script is corrected too.
    
    New test:
    - bugs caf bug29217: a test case for old document storage version in binary file format. It checks several attributes saved by the version TDocStd_FormatVersion_VERSION_7 (old) and the latest version.
    
    Modified test:
    - caf presentation M1: the test used a file in the current folder, not in {imagedir} like all other tests.
    - bugs caf bug28691
    
    Documentation:
    - dox/upgrade/upgrade.md
    
    // All remarks are fixed.
(0097244)
mpv   
2020-12-02 15:18   
Reviewed
OCCT branch: CR29217_5
Products branch: NOTHING
(0097346)
bugmaster   
2020-12-05 11:57   
Combination -
OCCT branch : IR-2020-12-04
master SHA - 1e08a76f1e872a1f38931a6c3e8cf71396fc1209
a206de37fbfa0bf71bd534ae47192bbec23b8522
Products branch : IR-2020-12-04 SHA - cb56638fb6b31df41b28133f69a1dc202dcb56aa
was compiled on Linux, MacOS and Windows platforms and tested in optimize mode.

Number of compiler warnings:
No new/fixed warnings

Regressions/Differences/Improvements:
No regressions/differences

CPU differences:
Debian80-64:
OCCT
Total CPU difference: 18090.67999999998 / 18052.040000000085 [+0.21%]
Products
Total CPU difference: 12342.950000000128 / 12326.850000000131 [+0.13%]
Windows-64-VC14:
OCCT
Total CPU difference: 19751.5 / 19705.828125 [+0.23%]
Products
Total CPU difference: 13772.515625 / 13793.796875 [-0.15%]


Image differences :
No differences that require special attention

Memory differences :
No differences that require special attention
(0097359)
git   
2020-12-05 13:01   
Branch CR29217_5 has been deleted by inv.

SHA-1: 412127b523edd1ef02cdcaa3014ad52840abf82a
(0097361)
git   
2020-12-05 13:01   
Branch CR29217_4 has been deleted by inv.

SHA-1: e9f27212ac106262813f4c2d7e643a38bdbf008f
(0097363)
git   
2020-12-05 13:01   
Branch CR29217_3 has been deleted by inv.

SHA-1: c775e1ae8993ffeaa66b3cb000afd7d3b6d5fc95
(0097364)
git   
2020-12-05 13:01   
Branch CR29217_2 has been deleted by inv.

SHA-1: 238e3ade6526d2f6dab49c7d43c65f125f2f9d99
(0097368)
git   
2020-12-05 13:01   
Branch CR29217_1 has been deleted by inv.

SHA-1: d023d2f18bdc766777cb6b21b6a637eeeec80938
(0097386)
git   
2020-12-05 13:02   
Branch CR29217 has been deleted by inv.

SHA-1: 248dd6ca65ced8d4bd648f56a5eb6e3839b65c9d