Hah. I have finally, (after what, two years?) finally, managed to prove that there is a bug in the reporting software we're using at work. And it's not my my damn fault for writing complicated reports.
There are two components to Business Objects: a stand-alone reporting tool, and a web server based tool, called InfoView. The web version has more limited functionality: you can't write new reports, or reformat existing ones. But you can run reports that other people have written for you (using the stand-alone version).
At least, that's the theory. The problem is that report writing is also split into two stages: before the report itself is written, a Universe needs to be defined, which describes various objects, and explains how they are related to each other. Then, in the report, if the auther selects the "registration" object and "address line 1" object, behind the scenes the relevant SQL is written. In this case:
SELECT car.registration, addr.line_1
FROM per, car, addr
WHERE per.per_id=car.per_id
AND per.per_id=addr.per_id
The Universes can be reused, so more objects, and relationships and general "stuff" can be added to them as the need arises (eg. pets, next of kin, etc, etc). The general idea is that somebody with detailed knowledge of the database writes the Universe, and makes objects avaiable to report authors. Some database fields never need to be made available, but can be used internally for conditions and so forth (eg, the query above could require an extra AND addr.addr_type='H' if all we're interested in is Home Addresses). And such upgrades to the queries are magically incorporated into existing reports.
Except in my case: after modifying the Universe, on a regular basis, I find that everything stops working. So far everybody else has simply told me that I'm being too ambitious, and adding complications which confuse the system. My response is that it's designed and documented to support these, and if I ignore an entire category of capabilities, then eventually I end up writing all the reports by hand in SQL by myself.
In practice, I cut and paste the entire Universe definition, and republish everything against the new definitions. Which demonstrates that they're not too complicated. But doesn't remove the problem.
And so last week, yet again, I redid some work that I'd been developing for the last 12 months, but suddenly broke. Cut and paste, cut and paste. And it worked. For almost a week. And then it too broke. Cue wailing, gnashing of teeth, tearing of hair, and generally not being a happy bunny. I didn't want to throw my toys out of the pram: they weren't my toys, but had been forced on me by management, despite my protestations.
And finally, finally, we found the cause. I noticed that the web page detailing the timestamps was wrong: the dates given were a couple of days out of date.
So this morning, I asked our operations team to delete a couple of files from the web server. They obliged, and the files were promptly regenerated from the database. And Lo! everything works!
Yup, it was the wonderful caching system which was broken. So when I made changes, sometimes they just didn't carry through, and everything subsequent to that just broke.
We still don't know why the caching goes wrong. But at least we know what to do about it now.
Only two years it took to find this. So my theory is that I've just done two years work today. And I'm going to bask in my glory for a while.