Toad World® Forums

Object Compare Link Option not working

Object Compare Link Option not working:

When comparing 2 objects (Functions, Procedures, Package) the link option is not working in version 12.7 (It worked in version 11.6).

Is this controled with a toad option or is this a bug?

What is the last known version that it worked?

I’m not sure what you mean by the “link option”. Can you post a screen shot?

In version 11.6 (and before):

I would right click on line 23 in the left panel and select LINK.

Then I would right click on line 36 in the right panel and select LINK.

Then the TOAD Application would realign the comparison.

Oh, in the side by side viewer - got it.

Hey Dan, can you send me those two functions that you are comparing in your screen shots? Please send to john.dorlon@quest.com

Thanks

Thanks Dan, it should be fixed for the next beta.

Oh, and to answer your question about versions - looks like it works correctly in 12.1, buggy in 12.5, and not at all in 12.6 or 12.7.

Thnaks Dan very much!

Has this been fixed yet? I have TOAD 12.9.

Yes, it should be fixed. Are you having a problem?

Yes, in TOAD 12.9 Compare Files, right clicking in the left or right pane does nothing.

(In earlier versions I aligned lines for comparison by right clicking a line in one pane and selecting Link, then I would do the same in the other pane and the files would align on that record (as per posting of dan.peterson / 26 Aug 2015 at 2:24pm.)

Oh, starting in 12.9, we totally replaced the side-by-side comparison window because the old one was too slow and sometimes never finished for large files. If you click “Enable Merge”, it should produce a merged source at the bottom, and if you don’t like which side it used for the merge on a particular difference, you can select the line at the top and click either the “Use right side in merge” or “Use left side in merge” toolbar buttons.

Hey Mark,

One of the reasons the old compare utility had that option was because it was very old, and not all that good with its matching algorithm. So, it gave you the option of manually overriding the algorithm and setting matching anchor points. Those overrides were temporary, though; as soon as you refreshed, they were lost. In our internal tests, the new component was way faster and seemed to be far better in its matching algorithm.

Are you running into situations where the new comparison is not doing a good job in its matching algorithm? Granted, no comparison utility will be perfect, but the new one should be doing a fairly good job at lining up matches. If it’s not, can you forward me an example (via email or post on here) where you feel the need to override it and set match points?

One thing I was thinking of doing for this release was adding the option to use an external compare tool for all comparisons in Toad. That would open the door to allow you to use products like WinMerge, ExamDiff, BeyondCompare, Notepad++ with the compare plugin, etc. However, from what I can tell, the only product that still allows that manual override capability is BeyondCompare.

I’m also planning to add some extra functionality to the internal compare window for this release, based on feedback we’ve received from other users. I don’t know if it’s possible to add an override (or link) feature to our internal one; but I’ll think about it and see what I might be able to come up with.

-John

I saw the updates to my original question.

I am running Toad 12.9.0.71 ( I know there is an update available.)

The “Enable Merge” option does not meet the need.

If I have a 1000 line procedure, and someone adds 20 lines of code that is similar enough to the code around it, I need to be able to link the lines together to align the rest of the code to see if they changed anything else.

Additionally, if sections of code were added in a different order, by linking the beginning of matching sections together, I can verify the section is identical.

Finally, If I have two procedures I need to “merge” together, I need to be able to select sections of code from the left pain and sections from the right pain, and have them appended to each other.

-Dan P.

Hey Dan,

The new component we’re using is completely different from the old one we used, which dated back well before Toad 9.6. It should be doing a much better job at lining up matches and mismatches in code. In fact, when I took a look at most of the currently-available Windows comparison tools out there, the only one I could find that had this kind of functionality was BeyondCompare.

Do you have any examples that you’re running into where it’s not matching them up well enough to help illustrate the scenarios you mentioned? The reason I ask is because most of the current tool sets for file comparisons should be doing a well enough job where a manual override or linking shouldn’t really be necessary. The first two examples you provided should be recognized and handled easily with the new component. I can definitely understand the theory of how manual linking could potentially be beneficial, but I’m looking for real examples to help drive the argument to add it.

The third example you provided may be addressed in one of the updates I’m hoping to make for this release. The merge window will already give you the option to use lines from the LHS and RHS of the compare window (through the tool buttons or clicking the diamonds next to each line). You can also manually copy and paste items from the LHS and RHS into the editor at the bottom. However, I’m hoping to expand upon this functionality a bit more for this coming release.

Having some real-life examples that you’re running into would be very helpful in making some of these enhancements.

-John

Hello John,

I appreciate your attention to this issue.

Real life scenario 1:

A developer makes a code change in development and validates that it is working.

When Approved, the developer makes a targeted deployment to production. To do this they copy their new code into the code already in production. Unfortunately, they added their new code 20 lines above or below where they had it in development. Everything works as expected. The developer thinks everything is fine. Technically it is fine.

6 months later, another change is made to the same package/procedure/function, except this time a scheduled deployment is done. During the deployment the functions are compared, but because the code blocks are in a different sequence, time is spent sorting through the differences.

The real issue is the ability to do a targeted deployment, currently unavoidable.

Attached are 2 functions demonstrating the issue.

Actually, Not bad if the code block was only 12 lines long.

Real life scenario 2:

Code to correct replication issues between 4 databases needs updated in all 4 databases.

This is a targeted fix every time in each database needed to synchronize the data.

The Procedures (6 in each database) range from 6000 to 9000+ lines each. They all deal with inserting updating or deleting records. Although the table names are different so each section should be separated, all of the tables contain one of the following 3 key fields: Person_NBR, ORG_NBR or ISN. This used to causes the match to split the comparison. When I tested it yesterday, the new matching algorithm seems to be doing a much better comparison than in the previous versions I used to use.

Real life scenario 3:

I have not tested this with the new matching algorithm.

I have a package with several procedures in it and I need to do a special 1 time 1off process.

So I copy a couple of procedures, in the same package. I give the new procedures a new name and make a couple of small changes in the code.

Then when I compare the package, it matches my new 1off procedure to the old original procedure.

Previously I would then link the two old original procedures together and verify that I didn’t accidentally update the original procedure.

Thank you for your assistance.

Sincerely,

Dan Peterson
Database_2_Test_2_Function.txt (1.84 KB)

Here is the second function to compare to.
Database_1_Test_2_Function.txt (1.85 KB)