Servoy 7.3

Hi Jan

Thank you for replying!

We solved point 1: We understood (again), that only using the developer and committing changes to the repository (as we did this week) does not update the client automatically. It needs a new solutions release in the repository. Either manually or by importing a solution. And this release is checked by the java webstart process. So, the automatic client update works correct. As Rob mentioned is should.

For point 2 I will post the error message tonight or tomorrows.

Thanks so far and regards
Birgit

Hi

  1. Now that we found out, what we made wrong, new versions are downloaded fine.

2.Here is the console message and the error dialog for the problem with the foundset (size: 330 records).

ERROR - Debug - There is a problem with an aggregate
com.servoy.j2db.persistence.RepositoryException: java.lang.ArrayIndexOutOfBoundsException null
at com.servoy.j2db.dataprocessing.Zv.Za(Zv.java:1080)
at com.servoy.j2db.dataprocessing.Zv.Za(Zv.java:268)
at com.servoy.j2db.dataprocessing.Zv.performQuery(Zv.java:1172)
at sun.reflect.GeneratedMethodAccessor191.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:303)
at sun.rmi.transport.Transport$1.run(Transport.java:159)
at java.security.AccessController.doPrivileged(Native Method)
at sun.rmi.transport.Transport.serviceCall(Transport.java:155)
at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:535)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:790)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:649)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
at java.lang.Thread.run(Thread.java:680)
at sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(StreamRemoteCall.java:255)
at sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:233)
at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:142)
at java.rmi.server.RemoteObjectInvocationHandler.invokeRemoteMethod(RemoteObjectInvocationHandler.java:178)
at java.rmi.server.RemoteObjectInvocationHandler.invoke(RemoteObjectInvocationHandler.java:132)
at com.sun.proxy.$Proxy18.performQuery(Unknown Source)
at com.servoy.j2db.dataprocessing.FoundSet.performQuery(FoundSet.java:6307)
at com.servoy.j2db.dataprocessing.FoundSet.queryForAggregate(FoundSet.java:3558)
at com.servoy.j2db.dataprocessing.FoundSet.getAggregateValue(FoundSet.java:3463)
at com.servoy.j2db.dataprocessing.FoundSet.getDataProviderValue(FoundSet.java:3453)
at com.servoy.j2db.dataprocessing.Record.getValue(Record.java:220)
at com.servoy.j2db.dataprocessing.DataAdapterList.getValueObject(DataAdapterList.java:864)
at com.servoy.j2db.dataprocessing.DataAdapterList.getValueObject(DataAdapterList.java:841)
at com.servoy.j2db.dataprocessing.DataAdapterList.getStringValue(DataAdapterList.java:810)
at com.servoy.base.util.TagParser.processTags(TagParser.java:82)
at com.servoy.j2db.util.Text.processTags(Text.java:35)
at com.servoy.j2db.smart.dataui.DataLabel.setValueObject(DataLabel.java:179)
at com.servoy.j2db.dataprocessing.DisplaysAdapter.setValueToDisplays(DisplaysAdapter.java:220)
at com.servoy.j2db.dataprocessing.DisplaysAdapter.setRecord(DisplaysAdapter.java:130)
at com.servoy.j2db.dataprocessing.DataAdapterList.setRecord(DataAdapterList.java:403)
at com.servoy.j2db.smart.dataui.DataRenderer.refreshRecord(DataRenderer.java:667)
at com.servoy.j2db.FormController.refreshAllPartRenderers(FormController.java:3092)
at com.servoy.j2db.FormController.valueChanged(FormController.java:3172)
at javax.swing.DefaultListSelectionModel.fireValueChanged(DefaultListSelectionModel.java:167)
at com.servoy.j2db.util.model.AlwaysRowSelectedSelectionModel.fireValueChanged(AlwaysRowSelectedSelectionModel.java:245)
at javax.swing.DefaultListSelectionModel.fireValueChanged(DefaultListSelectionModel.java:137)
at com.servoy.j2db.util.model.AlwaysRowSelectedSelectionModel.setSelectedRows(AlwaysRowSelectedSelectionModel.java:225)
at com.servoy.j2db.util.model.AlwaysRowSelectedSelectionModel.setSelectedRow(AlwaysRowSelectedSelectionModel.java:190)
at com.servoy.j2db.util.model.AlwaysRowSelectedSelectionModel.setSelectedRow(AlwaysRowSelectedSelectionModel.java:158)
at com.servoy.j2db.dataprocessing.SwingFoundSet.setSelectedIndex(SwingFoundSet.java:134)
at com.servoy.j2db.dataprocessing.TableAndListEventDelegate$1.run(TableAndListEventDelegate.java:153)
at com.servoy.j2db.dataprocessing.TableAndListEventDelegate.fireTableAndListEvent(TableAndListEventDelegate.java:180)
at com.servoy.j2db.dataprocessing.SwingFoundSet.fireFoundSetEvent(SwingFoundSet.java:149)
at com.servoy.j2db.dataprocessing.FoundSet.fireDifference(FoundSet.java:4724)
at com.servoy.j2db.dataprocessing.FoundSet.loadExternalPKList(FoundSet.java:2051)
at com.servoy.j2db.dataprocessing.FoundSet.js_loadRecords(FoundSet.java:1143)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.mozilla.javascript.MemberBox.invoke(MemberBox.java:158)
at org.mozilla.javascript.NativeJavaMethod.call(NativeJavaMethod.java:312)
at org.mozilla.javascript.optimizer.OptRuntime.call1(OptRuntime.java:62)
at org.mozilla.javascript.gen.HadesPlacements_forms_PlcClassCoursesForTimetable_onShow_175._c_onShow_0(HadesPlacements/forms/PlcClassCoursesForTimetable/onShow:55)
at org.mozilla.javascript.gen.HadesPlacements_forms_PlcClassCoursesForTimetable_onShow_175.call(HadesPlacements/forms/PlcClassCoursesForTimetable/onShow)
at com.servoy.j2db.scripting.ScriptEngine.executeFunction(ScriptEngine.java:626)
at com.servoy.j2db.FormController.executeFunction(FormController.java:4983)
at com.servoy.j2db.FormController.executeFormMethod(FormController.java:5319)
at com.servoy.j2db.FormController.executeOnShowMethod(FormController.java:5185)
at com.servoy.j2db.FormController.access$17(FormController.java:5179)
at com.servoy.j2db.FormController$3.run(FormController.java:3964)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:715)
at java.awt.EventQueue.access$400(EventQueue.java:82)
at java.awt.EventQueue$2.run(EventQueue.java:676)
at java.awt.EventQueue$2.run(EventQueue.java:674)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:86)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:685)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:296)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:211)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:205)
at java.awt.Dialog$1.run(Dialog.java:1049)
at java.awt.Dialog$3.run(Dialog.java:1101)
at java.security.AccessController.doPrivileged(Native Method)
at java.awt.Dialog.show(Dialog.java:1099)
at java.awt.Component.show(Component.java:1615)
at java.awt.Component.setVisible(Component.java:1567)
at java.awt.Window.setVisible(Window.java:843)
at java.awt.Dialog.setVisible(Dialog.java:984)
at com.servoy.j2db.util.gui.JEscapeDialog.setVisible(JEscapeDialog.java:168)
at com.servoy.j2db.gui.FormDialog.setVisible(FormDialog.java:164)
at com.servoy.j2db.smart.SwingRuntimeWindow.finalizeShowWindow(SwingRuntimeWindow.java:767)
at com.servoy.j2db.smart.SwingRuntimeWindow.doOldShowInDialog(SwingRuntimeWindow.java:503)
at com.servoy.j2db.smart.SwingRuntimeWindow.doOldShow(SwingRuntimeWindow.java:415)
at com.servoy.j2db.scripting.RuntimeWindow.oldShow(RuntimeWindow.java:218)
at com.servoy.j2db.FormManager.showFormInDialog(FormManager.java:484)
at com.servoy.j2db.scripting.JSApplication.js_showFormInDialog(JSApplication.java:2478)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.mozilla.javascript.MemberBox.invoke(MemberBox.java:158)
at org.mozilla.javascript.NativeJavaMethod.call(NativeJavaMethod.java:312)
at org.mozilla.javascript.optimizer.OptRuntime.call1(OptRuntime.java:62)
at org.mozilla.javascript.gen.Hades_forms_PlcClassCoursePositions_openDialogToEnterTimetableLessonId_173._c_openDialogToEnterTimetableLessonId_0(Hades/forms/PlcClassCoursePositions/openDialogToEnterTimetableLessonId:427)
at org.mozilla.javascript.gen.Hades_forms_PlcClassCoursePositions_openDialogToEnterTimetableLessonId_173.call(Hades/forms/PlcClassCoursePositions/openDialogToEnterTimetableLessonId)
at org.mozilla.javascript.ContextFactory.doTopCall(ContextFactory.java:406)
at org.mozilla.javascript.ScriptRuntime.doTopCall(ScriptRuntime.java:3204)
at org.mozilla.javascript.gen.Hades_forms_PlcClassCoursePositions_openDialogToEnterTimetableLessonId_173.call(Hades/forms/PlcClassCoursePositions/openDialogToEnterTimetableLessonId)
at com.servoy.j2db.scripting.ScriptEngine.executeFunction(ScriptEngine.java:626)
at com.servoy.j2db.FormController.executeFunction(FormController.java:4983)
at com.servoy.j2db.FormController.executeFunction(FormController.java:4860)
at com.servoy.j2db.plugins.ClientPluginAccessProvider$MethodExecutor.run(ClientPluginAccessProvider.java:588)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:715)
at java.awt.EventQueue.access$400(EventQueue.java:82)
at java.awt.EventQueue$2.run(EventQueue.java:676)
at java.awt.EventQueue$2.run(EventQueue.java:674)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:86)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:685)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:296)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:211)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:196)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:188)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
ERROR - Debug - There is a problem with an aggregate, script stacktrace:
at HadesPlacements/forms/PlcClassCoursesForTimetable/onShow:55 (onShow)
at Hades/forms/PlcClassCoursePositions/openDialogToEnterTimetableLessonId:427 (openDialogToEnterTimetableLessonId)

ERROR - Debug - Could not sort records, try ShowAll records
com.servoy.j2db.persistence.RepositoryException: java.lang.ArrayIndexOutOfBoundsException null
at com.servoy.j2db.dataprocessing.Zv.Za(Zv.java:1080)
at com.servoy.j2db.dataprocessing.Zv.Za(Zv.java:268)
at com.servoy.j2db.dataprocessing.Zv.performQuery(Zv.java:1172)
at sun.reflect.GeneratedMethodAccessor191.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:303)
at sun.rmi.transport.Transport$1.run(Transport.java:159)
at java.security.AccessController.doPrivileged(Native Method)
at sun.rmi.transport.Transport.serviceCall(Transport.java:155)
at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:535)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:790)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:649)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
at java.lang.Thread.run(Thread.java:680)
at sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(StreamRemoteCall.java:255)
at sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:233)
at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:142)
at java.rmi.server.RemoteObjectInvocationHandler.invokeRemoteMethod(RemoteObjectInvocationHandler.java:178)
at java.rmi.server.RemoteObjectInvocationHandler.invoke(RemoteObjectInvocationHandler.java:132)
at com.sun.proxy.$Proxy18.performQuery(Unknown Source)
at com.servoy.j2db.dataprocessing.FoundSet.performQuery(FoundSet.java:6307)
at com.servoy.j2db.dataprocessing.FoundSet.sort(FoundSet.java:4816)
at com.servoy.j2db.FormController.sort(FormController.java:3243)
at com.servoy.j2db.FormController.sort(FormController.java:3262)
at com.servoy.j2db.FormController$JSForm.js_sort(FormController.java:2004)
at com.servoy.j2db.FormController$JSForm.js_sort(FormController.java:1991)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.mozilla.javascript.MemberBox.invoke(MemberBox.java:158)
at org.mozilla.javascript.NativeJavaMethod.call(NativeJavaMethod.java:312)
at org.mozilla.javascript.optimizer.OptRuntime.call1(OptRuntime.java:62)
at org.mozilla.javascript.gen.HadesPlacements_forms_PlcClassCoursesForTimetable_onShow_175._c_onShow_0(HadesPlacements/forms/PlcClassCoursesForTimetable/onShow:56)
at org.mozilla.javascript.gen.HadesPlacements_forms_PlcClassCoursesForTimetable_onShow_175.call(HadesPlacements/forms/PlcClassCoursesForTimetable/onShow)
at com.servoy.j2db.scripting.ScriptEngine.executeFunction(ScriptEngine.java:626)
at com.servoy.j2db.FormController.executeFunction(FormController.java:4983)
at com.servoy.j2db.FormController.executeFormMethod(FormController.java:5319)
at com.servoy.j2db.FormController.executeOnShowMethod(FormController.java:5185)
at com.servoy.j2db.FormController.access$17(FormController.java:5179)
at com.servoy.j2db.FormController$3.run(FormController.java:3964)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:715)
at java.awt.EventQueue.access$400(EventQueue.java:82)
at java.awt.EventQueue$2.run(EventQueue.java:676)
at java.awt.EventQueue$2.run(EventQueue.java:674)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:86)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:685)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:296)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:211)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:205)
at java.awt.Dialog$1.run(Dialog.java:1049)
at java.awt.Dialog$3.run(Dialog.java:1101)
at java.security.AccessController.doPrivileged(Native Method)
at java.awt.Dialog.show(Dialog.java:1099)
at java.awt.Component.show(Component.java:1615)
at java.awt.Component.setVisible(Component.java:1567)
at java.awt.Window.setVisible(Window.java:843)
at java.awt.Dialog.setVisible(Dialog.java:984)
at com.servoy.j2db.util.gui.JEscapeDialog.setVisible(JEscapeDialog.java:168)
at com.servoy.j2db.gui.FormDialog.setVisible(FormDialog.java:164)
at com.servoy.j2db.smart.SwingRuntimeWindow.finalizeShowWindow(SwingRuntimeWindow.java:767)
at com.servoy.j2db.smart.SwingRuntimeWindow.doOldShowInDialog(SwingRuntimeWindow.java:503)
at com.servoy.j2db.smart.SwingRuntimeWindow.doOldShow(SwingRuntimeWindow.java:415)
at com.servoy.j2db.scripting.RuntimeWindow.oldShow(RuntimeWindow.java:218)
at com.servoy.j2db.FormManager.showFormInDialog(FormManager.java:484)
at com.servoy.j2db.scripting.JSApplication.js_showFormInDialog(JSApplication.java:2478)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.mozilla.javascript.MemberBox.invoke(MemberBox.java:158)
at org.mozilla.javascript.NativeJavaMethod.call(NativeJavaMethod.java:312)
at org.mozilla.javascript.optimizer.OptRuntime.call1(OptRuntime.java:62)
at org.mozilla.javascript.gen.Hades_forms_PlcClassCoursePositions_openDialogToEnterTimetableLessonId_173._c_openDialogToEnterTimetableLessonId_0(Hades/forms/PlcClassCoursePositions/openDialogToEnterTimetableLessonId:427)
at org.mozilla.javascript.gen.Hades_forms_PlcClassCoursePositions_openDialogToEnterTimetableLessonId_173.call(Hades/forms/PlcClassCoursePositions/openDialogToEnterTimetableLessonId)
at org.mozilla.javascript.ContextFactory.doTopCall(ContextFactory.java:406)
at org.mozilla.javascript.ScriptRuntime.doTopCall(ScriptRuntime.java:3204)
at org.mozilla.javascript.gen.Hades_forms_PlcClassCoursePositions_openDialogToEnterTimetableLessonId_173.call(Hades/forms/PlcClassCoursePositions/openDialogToEnterTimetableLessonId)
at com.servoy.j2db.scripting.ScriptEngine.executeFunction(ScriptEngine.java:626)
at com.servoy.j2db.FormController.executeFunction(FormController.java:4983)
at com.servoy.j2db.FormController.executeFunction(FormController.java:4860)
at com.servoy.j2db.plugins.ClientPluginAccessProvider$MethodExecutor.run(ClientPluginAccessProvider.java:588)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:715)
at java.awt.EventQueue.access$400(EventQueue.java:82)
at java.awt.EventQueue$2.run(EventQueue.java:676)
at java.awt.EventQueue$2.run(EventQueue.java:674)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:86)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:685)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:296)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:211)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:196)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:188)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
ERROR - Debug - Could not sort records, try ShowAll records, script stacktrace:
at HadesPlacements/forms/PlcClassCoursesForTimetable/onShow:56 (onShow)
at Hades/forms/PlcClassCoursePositions/openDialogToEnterTimetableLessonId:427 (openDialogToEnterTimetableLessonId)

[attachment=0]error.png[/attachment]

The code which raises the errors is:

var queryClassCoursePositions =
		" SELECT ccp.class_profile_class_level_number," +
		"        ccp.class_profile_class_period_fraction_name," +
		"        ccp.class_profile_class_period_school_year," +
		"        ccp.class_profile_class_sign," +
		"        ccp.class_profile_profile_code," +
		"        ccp.class_profile_profile_period_fraction_name," +
		"        ccp.class_profile_profile_period_school_year," +
		"        ccp.profile_definition_subject_code," +
		"        ccp.profile_definition_subject_type_code" +
		"   FROM class_course_positions ccp" +
		"  WHERE ccp.class_profile_class_period_fraction_name = '" + globals.plcSelectedPeriod.split(' ')[0] + "'" +
		"    AND ccp.class_profile_class_period_school_year = " + globals.plcSelectedPeriod.split(' ')[1] +
		"  ORDER BY ccp.class_profile_class_level_number, ccp.class_profile_class_sign, ccp.profile_definition_subject_type_code, ccp.profile_definition_subject_code";
		
	var dataset = databaseManager.getDataSetByQuery(databaseManager.getDataSourceServerName(controller.getDataSource()), queryClassCoursePositions, null, -1);

	// Remove positions with same profile, keep only one per profile. We couldn't find an SQL statement for this.
	for (var i = dataset.getMaxRowIndex(); i > 1; i--) {
		if (dataset.getValue(i, 1) == dataset.getValue(i - 1, 1)		
			&& dataset.getValue(i, 4) == dataset.getValue(i - 1, 4)			
			&& dataset.getValue(i, 8) == dataset.getValue(i - 1, 8)
			&& dataset.getValue(i, 9) == dataset.getValue(i - 1, 9)) {
			
			dataset.removeRow(i);
		}
	}

	foundset.loadRecords(dataset);
	controller.sort('class_profile_class_level_number, class_profile_class_sign, class_course_positions_taught_in_profile_definitions.profile_definitions_classified_by_subject_types.sort_order, class_course_positions_taught_in_profile_definitions.profile_definitions_consisting_of_subjects.sort_order');

Any ideas what could be our problem?

Thank you and kind regards
Birgit

I have not a real answer why you get this error, but this is really expensive what your doing,

first you query a dataset.
after that you are doing foundset.loadRecords(dataset) which is basiclly a query again.
and than you do: controller.sort (why not foundset.sort??) which is doing a query again, but than with another sort-order…

(Also I believe a controller.sort must have a columnname with asc, or desc setting)

If you want to use a dataset in foundset.loadRecords(dataset) in the dataset, the first column has to be the pk!, is that the case?

It’s really worth the case, to found out, howto eliminate those records inside the query (what you do now in the dataset)
than also do the sort (orderby) in the same query and you only have todo: foundset.loadRecords(query,arguments)

My 2 cents: NEVER use controller.loadRecords(dataset)

Birgit,

Can you find a ArrayIndexOutOfBoundsException in the server logs as well?

Rob

Hi Harjo

Thank you for responding. Of course, I like to understand, what’s behind the different calls.

first you query a dataset.
after that you are doing foundset.loadRecords(dataset) which is basiclly a query again.

Would it be cheaper to use foundset.loadRecords(query)? I thought, this leads also to two queries: One for the pk-dataset and one for the displayed values. Sometimes I use loadRecords(dataset) for easier debugging. To see, what the query returns. And here, obviously, for post operations.

and than you do: controller.sort (why not foundset.sort??) which is doing a query again, but than with another sort-order…

The ORDER BY in the query is new, because I now have to omit the controller.sort() to avoid the error. We only sort once.
And to get the same sorting as before, I have to extend the query with some joins.
But: Is there a difference between controller.aFunction() and foundset.aFunction()? I thought, the two are comparable?

(Also I believe a controller.sort must have a columnname with asc, or desc setting)

I’ll check if the error will disappear with ASC.

If you want to use a dataset in foundset.loadRecords(dataset) in the dataset, the first column has to be the pk!, is that the case?

All ten attributes (in alphabetic order) are the pk.

It’s really worth the case, to found out, howto eliminate those records inside the query (what you do now in the dataset)

We spent a lot of time (and still do now and then) to make queries for these records of class_course_positions easier.

We’ll see us in January. I’m looking forward to some interesting discussions ;-)
Thank you again for pointing things out.

I hope, I’ll find an answer to avoid the error.

Kind regards
Birgit

Is there a release date for Servoy 7.3.1, because we are encountered some critical errors in Servoy 7.3?

SVY-5408: “Servoy seems to not recognise file changes”
SVY-5362: “Move form” leaves js file in old solution folder"
SVY-5412: “Can not change the row ident in table editor”
SVY-5396: “Unhandled event loop exception Java heap space”
SVY-5355: “Unhandled event loop exception, GC overhead limit exceeded”
SVY-5348: “‘Requesting Script AST from selection’ has encountered a problem”

@Birgit

As Harjo already stated, there are quite a few performance issues with that query:

When you get a dataset, a query is fired and your dataset is returned (fully loaded into memory). Then you do a loadRecords(dataset) which fires another query that loads the PKs in your dataset (again). Your sort command at the end will lead to yet another query (with the results sorted). You can prevent that by using the defer parameter in the sort and issue the sort command before you load the records. So in the end you fire 3 queries where one would be possible.

By parsing the arguments into your query, you prevent that the DB can reuse an execution plan in case you fire this query again a bit later. Best practice is to use a prepared statement like this

" WHERE ccp.class_profile_class_period_fraction_name = ? " +
" AND ccp.class_profile_class_period_school_year = ? " +

var dataset = databaseManager.getDataSetByQuery(databaseManager.getDataSourceServerName(controller.getDataSource()), queryClassCoursePositions, [globals.plcSelectedPeriod.split(’ ‘)[0], globals.plcSelectedPeriod.split(’ ')[1]], -1);

This also takes away the hassle of quoting, escaping etc. depending on the data type of your column (especially dates are ugly).

And why don’t you use some simple PK instead of a ten column combined key? Also note that column names longer than 30 characters won’t work on all databases (e.g. Oracle), so this is not really cross database.

It is also recommended to use the query builder. It makes sure your queries work everywhere and makes some stuff like querying for PK a bit easier here by simply saying query.result.addPk().

And last but not least: shouldn’t it be possible to let the database remove the duplicates by using some group by clause instead of walking over the whole dataset and remove result rows there?

Hi,

It looks like the double scroll-bar is reintroduced in the werbclient with the release of servoy 7.3.0,

[attachment=0]2013-11-09_1059.png[/attachment]

I thought it was fixed in 7.2.x

Regards,

Peter

Peter de Groot:
Hi,

It looks like the double scroll-bar is reintroduced in the werbclient with the release of servoy 7.3.0,

[attachment=0]2013-11-09_1059.png[/attachment]

I thought it was fixed in 7.2.x

Regards,

Peter

Thank for noticing,
Can you create a case in our jira support system describing your solution ?(attaching a sample solution would greatly help us)

Hi all,

I use Servoy as Team Provider (this is not recommended, I know, but it’s the best option for me…) and i worked fine until v7. My devolpment cycle is as usual: make changes in developer, commit changes, flush solution in server and restart client. As I said, this worked fin in previous releases of Servoy, but now I’m migrating to v7.3 and It doesn’t work: I don’t see in client the changes made in developer and commited to repository.

Any ideas?

This is a very very strange problem… I did this test:

  • I’ve created a label with “hello” text and I put in main form. Changes commited to respository and flushed solution in server.

  • I’ve opened a smart client in computer 1: I see “hello” label in main form. OK.

  • In developer I’ve changed label to “hello 2”. Commit and flush.

  • I’ve reopened solution in computer 1: I only see “hello” :?

  • I’ve opened a smart client in computer 2: I see “hello 2” in main form :shock:

  • In developer I’ve changed label to “hello 3”. Commit and flush.

  • I’ve reopened solution in computer 1: I only see “hello” :?: :?:

  • I’ve reopened solution in computerr 2: I only see “hello 2” :!: :!:

  • I’ve opened a smart client in computer 3: I see “hello 3” in main form :shock: :shock: :shock:

It has no sense!

obuligan:

Peter de Groot:
Hi,

It looks like the double scroll-bar is reintroduced in the werbclient with the release of servoy 7.3.0,

[attachment=0]2013-11-09_1059.png[/attachment]

I thought it was fixed in 7.2.x

Regards,

Peter

Thank for noticing,
Can you create a case in our jira support system describing your solution ?(attaching a sample solution would greatly help us)

Case created SVY-5464 sample solution included.

Regards,

Peter

About my problems committing (see above):

In server machine I’ve installed a servoy 6.0 server and created a solution. I did the same test I did with servoy 7, successfully: in the 3 computers I can see the same changes I commited with my developer.

Unfortunately, I can’t upgrade to v7, perhaps v7.4 will fix it.

About STP. You can create a case for that but it’s no longer actively supported so I’m not sure what attention it will get for 7.4.

It sounds like the solution is loaded directly from the JNLP & smart client cache - it doesn’t get a solution update.
You can clear java cache from control panel & delete the .servoy folder (or just the affected solution file) from your user dir - then it will probably work fine until the next commit at least.

Thanks, Andrei… I’ve deleted the .servoy folder (I didn’t know that there is that folder for caching!!) and it works fine… But, as you say, until the next commit :cry:

STP is “Servoy as Team Provider”, isn’t it? Why is it no longer supported? It’s not recommended, but it’s a good option when there’s only one developer and many changes in a solution. Anyway, STP worked fine in Servoy versions prior to v7.

I’ll create a case for it.

Regards,

Case created: SVP-323

Yes, STP = Servoy Team Provider.

It’s no longer actively supported because it’s backed up by a repository DB that wasn’t intended to store file/text formatted data, so it was pretty hard to keep the same text formatting after commit to avoid conflicts (as on the server it would no longer be stored as text files). Also when you use that for deployment you can’t nicely use other team providers such as SVN/Git/… (those are useful to use even if you are the only developer working on that solution). Extra column information is read directly from the repository database - not from .dbi files (so some .dbi related functionality is not supported either + you can’t have different extra column info in different resources projects). There were I think other smaller reasons as well.

Thanks for the info…

I’m going to move to a other Team Provider (any recommendation?), then.

Regards,

SVN is easy to use and does the job. Git is more complex but can do much more (especially helpful for open source projects). Of course there are many others.

But be aware that none of those will be able to update your running application server directly. (STP was more into deployment then into Source Control Management).
You can use import/export for that.

Andrei Costescu:
But be aware that none of those will be able to update your running application server directly. (STP was more into deployment then into Source Control Management).
You can use import/export for that.

So, with SVN, I have to export the solution and then import it to server (usign server admin page), haven’t I? Do I have to restart the server after import? Do I have to delete the current solution before import it again?