Verificator Generated Location of Keys/Indexes and Relationships Check Error

Model = Oracle 12c Release 2.

When selecting the "Generated Location of Keys/Indexes and Relationships Check" is selected in the Verification Settings tab of the Model Verification form, upon <Save & Verify> the following Access Violation "Error occurred".

This error results even if no model objects are selected in the Model Objects tab of the Model Verification form.

This error only occurs if the "Generated Location of Keys/Indexes and Relationships Check" is selected in the Verification Settings tab of the Model Verification form.

I have been using the Scripting capabilities. Perhaps i inadvertently destroyed some reference. I may be able to repair such a reference if this is causing the error, but not sure what this verification is trying to do so I don't know where to begin looking.

What is the "Generated Location of Keys/Indexes and Relationships Check" verification option attempting to verify?

Your insights into this Access Violation error are much appreciated.

Using TDM 7.1.0.216 on Windows 10.

The error log details are below.

EurekaLog 7.6.6.0 hotfix 6 6E4B76CDA6FD364A9854EDF278B4D0BB 3E3C30CFD8087A4DA507C69B9D8F0204 DA39A3EE5E6B4B0D3255BFEF95601890AFD80709 7BD95DF89BCA43409EFA6B32B1799163

Application:

1.1 Start Date : Wed, 1 Apr 2020 20:15:38 -0400
1.2 Name/Description: TDM.exe - (Toad Data Modeler)
1.3 Version Number : 7.1.0.216
1.4 Parameters :
1.5 Compilation Date: Fri, 4 Oct 2019 07:47:12 -0400
1.6 Up Time : 30 minute(s), 27 second(s)

Exception:

2.1 Date : Wed, 1 Apr 2020 20:46:05 -0400
2.2 Address : 0000000002880974
2.3 Module Name : TDM.exe - (Toad Data Modeler)
2.4 Module Version: 7.1.0.216
2.5 Type : EAccessViolation
2.6 Message : Access violation at address 0000000002880974 in module 'TDM.exe'. Read of address 0000000000000000.
2.7 ID : 407CEE0D
2.8 Count : 1
2.9 Status : New
2.10 Note :
2.11 Sent : 0

User:

3.1 ID : XXX
3.2 Name : ZZZ
3.3 Email :
3.4 Company : ZZZ
3.5 Privileges: SeShutdownPrivilege - OFF
SeChangeNotifyPrivilege - ON
SeTimeZonePrivilege - OFF

Active Controls:

4.1 Form Class : TFormEditPadPro7
4.2 Form Text : EditPad Pro 7 - [*Untitled 5]
4.3 Control Class: TButton
4.4 Control Text : Save && Verify

Computer:

5.1 Name : YYY
5.2 Total Memory : 17036529664 (15.87 Gb)
5.3 Free Memory : 7754084352 (7.22 Gb)
5.4 Total Disk : 251093053440 (233.85 Gb)
5.5 Free Disk : 128364470272 (119.55 Gb)
5.6 System Up Time : 2 day(s), 11 hour(s), 26 minute(s), 13 second(s)
5.7 Processor : Intel(R) Core(TM) i5-6200U CPU @ 2.30GHz
5.8 Display Mode : \.\DISPLAY2[PRIMARY]: 1920x1080x32 96 DPI @ 0x0, \.\DISPLAY3: 1920x1080x32 96 DPI @ 0x-1080
5.9 Display DPI : 96
5.10 Video Card : Intel(R) HD Graphics 520 (driver 25.20.100.6576 - RAM 1073741824)
5.11 Printer : Microsoft Print To PDF (driver 10.0.17763.771)
5.12 Virtual Machine: Microsoft Hypervisor 10.0.17763 Service Pack 1

Operating System:

6.1 Type : Microsoft Windows 10 (64 bit)
6.2 Build # : 1809 (10.0.17763.1098)
6.3 Update :
6.4 Non-Unicode Language: English (0409)
6.5 Charset/ACP : 0/1252
6.6 Install Language : English (0409)
6.7 UI Language : English (0409)

Network:

[REDACTED]

Steps to reproduce:

8.1 Text:

Call Stack Information:

|Methods |Details|Stack |Address |Module |Offset |Source |Unit |Class |Procedure/Method |Line |

|*Exception Thread: ID=208476; Parent=0; Priority=-2 |
|Class=; Name=MAIN |
|DeadLock=0; Wait Chain= |

Comment=
7FFFFFFE
00000060
00000060
00000060
00000060
00000060
00000060
00000060
00000060
00000060
00000060
00000060
00000060
00000060
00000060
00000060
00000060
00000060
00000060
00000060
00000060
00000060
00000060
00000060
00000060
00000060
00000060
00000060
00000060
00000060
00000060
00000060
00000060
00000060
00000060
00000060
00000060
00000060
00000060
00000060
00000060
00000060
00000060
00000060
00000060
00000060
00000060
00000060
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Running Thread: ID=113036; Parent=0; Priority=0
Class=; Name=
DeadLock=0; Wait Chain=thread: [ 1B98C / 113036 ] is blocked
Comment=
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
7FFFFFFE
00000060
00000060
00000060
00000060
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Running Thread: ID=72864; Parent=0; Priority=0
Class=; Name=
DeadLock=0; Wait Chain=
Comment=
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
7FFFFFFE
00000060
00000060
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Running Thread: ID=112904; Parent=0; Priority=0
Class=; Name=
DeadLock=0; Wait Chain=thread: [ 1B908 / 112904 ] is blocked
Comment=
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
7FFFFFFE
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Running Thread: ID=120052; Parent=0; Priority=-1
Class=; Name=
DeadLock=0; Wait Chain=thread: [ 1D4F4 / 120052 ] is blocked
Comment=
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
7FFFFFFE
00000060
00000060
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Running Thread: ID=20756; Parent=0; Priority=0
Class=; Name=
DeadLock=0; Wait Chain=
Comment=

...

Found the error. There was a relationship with no foreign keys and no relationship key items.

ALTER TABLE EmployeeDim ADD CONSTRAINT Relationship201 FOREIGN KEY () REFERENCES LocDim () DEFERRABLE RELY
;

Hello,
Is your problem solved or you need some assistance? Relationship can be without foreign keys in Toad Data Modeler (of course is not generate valid SQL code). It should not generate access violation error. But in this relation should be still assigned default "invisible" key at least.
If your problem still preserve, let me know or send me your model on petr.daricek@quest.com and I can check it.

Tip: When you do some changes by scripting try to run Test model (Repair model) from popup menu (need to switch on Expert Mode in Settings).

Regards
Petr

Fixing the above Key (Relationship201) did resolve the issue.

Thank you Daril for the insight. Was not aware of the model Test/Repair. Using the Test model and some of my own scripts, I was able to identify and solve the issue.

The Repair model probably does some of the following, but I wrote my own repair scripts to fix missing backlinks using Tablespace.LinkObject() for Entities, Keys, and Indexes that had a tablespace assigned, but the tablespace didn't have the object linked; to remove duplicate tablespace backlinks using Tablespace.RemoveObjectink(); fixed Categories that have missing and duplicate backlinks; ensured KeyItems count matches the index items count; identified Indices with zero index items; and identified/fixed index item's whose attribute doesn't exist.

Index = Key.Owner.Indexes.GetObjectByName(Key.UsingIXName);
if (Key.KeyItems.Count != Index.IndexItems.Count)
{
  //...
}
if (0 == Index.IndexItems.Count)
{
  //...
}
IndexItem = Index.IndexItems.GetObject(i);
Attr = IndexItem.Attribute;
if (Attr == null)
{
  Index.IndexItems.Remove(IndexItem)
  //...
}