new function: ad_unless_script_abort and bump version to 5.10.1b12
This convenience function eases handling of ad_script_abort exceptions in cases, where the OpenACS request processor is not involved.
From the documentation: Execute the provided body in the callers' environment. When the body does not raise an "ad_script_abort" exception, the "non_abort_action" is also executed. This pattern is useful when handling client requests and where the "non_abort_action" is used to return results to the client. When "ad_script_abort" is executed, the connection is usually closed, and any attempt to talk to the client over the closed connection will fail.
The handling of script_abort exceptions is done usually in the request processor. The function is useful when registering own request procs (e.g., via "ns_register_proc") where the OpenACS request processor is not involved.
Fix potential problems when calling polymorphic SQL functions from Tcl
Some functions are defined in the database with the same number of arguments but different types, e.g., first argument "package_key" (type text) or "package_id" (type integer). This is fine from the SQL standpoint, but when calling from Tcl via bind-vars (e.g. ":package_id"), everything is passed as a string, and potentially, the wrong function is called.
Now, all the automatically generated subs are generated with casts, when the integer based variant must be called.
Some examples:
Before: set s [ns_pg_bind 0or1row $__DB {select apm__set_value(:package_id,:parameter_name,:attr_value)}] set s [ns_pg_bind 0or1row $__DB {select apm__get_value(:package_id,:parameter_name)}]
Now: set s [ns_pg_bind 0or1row $__DB {select apm__set_value(CAST(:package_id AS integer),:parameter_name,:attr_value)}] set s [ns_pg_bind 0or1row $__DB {select apm__get_value(CAST(:package_id AS integer),:parameter_name)}]