as far as i know there is no case for this,
please create a case and if possible a sample solution and do test it again first on 5.2.4 because i am not going to try build a complete sample and then come to the conclusion that it works perfectly.
And i still don’t know exactly what you are doing… Are you using db transactions only? or in mem transactions or a combination?
We just have to guess way to much, that cost us quite some time, and many times we then also still can reproduce it, that is a waste of our time.
jcompagner:
And i still don’t know exactly what you are doing… Are you using db transactions only? or in mem transactions or a combination?
We just have to guess way to much, that cost us quite some time, and many times we then also still can reproduce it, that is a waste of our time.
Jeff and I may have not been clear enough, but we are working on the same solution in the same office. It’s mentioned in the thread by one of us that we do everything with db transactions (MySQL InnoDB), and I mentioned here viewtopic.php?f=25&t=15258&st=0&sk=t&sd=a&start=30#p82967 that I’ve tried every other way I could think of in desperation, but as a rule, 100% of our code that updates or creates data we wrap it within a transaction. Furthermore we make sure to wrap our find()'s that return data to be used in the insert/update within the same transaction to ensure consistent data with proper record locking.
the only thing i can say is that you should see the update statements in the performance log right after you have called: databaseManager.recalculate(record) if you are just using db transactions.
If that is not the case, create a case with a sample so that we can look at it.
I have a related question.
We are working on a large FileMaker to Servoy conversion. The FM tables have tons of calcs, both stored and unstored. Some of the unstored calcs we are converting to stored calcs because they are used in relationships. We need to initialize these for all rows in the table so we run databaseManager.recalculate on a foundset based on the whole table. Here’s our code:
function _recalculateTable(tablename) {
var fs = databaseManager.getFoundSet(globals.servername, tablename)
fs.loadAllRecords()
databaseManager.recalculate(fs)
application.output(tablename + ' recalc done');
}
The calcs in these tables are pretty straightforward, and yet for a table containing say 10,000 rows the recalculate can take several hours. And what’s strange is that Servoy is using very little CPU time during this operation.
Am I doing something wrong? Is there some way to speed this up?
Thanks.
amcgilly:
We need to initialize these for all rows in the table…
Is there some way to speed this up?
SQL update statements.
Hello Adrian
How are your memory settings for Java and the database (which database are you using?). May be you can show code snippets where we can see your memory settings. Memory settings have a great influence on speed for calcs.
Regards,
I wanted to make a quick post on this topic to thank the Servoy dev team for fixing the issues I was encountering with calculations. 5.2.4 for me is working as expected.
Much appreciated!
Both databroadcasting and calculations are now predictable and consistent.
Hi Jeff,
Glad it worked out. Tnx for reporting back.
Paul