Forum OpenACS Development: 16 parameters just bites...

Posted by Andrew Lahser on
Hm. Rereading this, my tone is a bit bitter. I am really enjoying the
possiblity the OpenACS system represents. Thanks for all your hard work.

I am new to ACS, Open ACS, Postgresql and even TCL. So far I am
impressed with the total system, but in the middle of writting my first
package I discover that Postgresql can only accept 16 parameters -- I need
24. I have searched in this forum and found a method to overload the function to
allow for multiple cases with varying attributes. Yet this seems kludgy.
Already, my 18 attribute table's creation script has grown from about 25 lines
(a simple create table script) to over 600 lines (permissions, object and attribute
type definition, functions to do new, update, delete within the object model)
to support the  'thin object model' in OpenACS. This limitation will add a couple
hundred lines more.

I am posting here because I want to learn the most effective way to
apply pressure to the postgresql team to increase the limit on
function parameters to a reasonable value, for example 512, or maybe

Again thanks for all your hard work, I am not really bitter. Its just late
and I was hoping to finish of this bit of code this evening...

Andrew Lahser

Posted by Jon Griffin on
If you need more than 16 you need to recompile Postgres, as it supports more than 16 just not in the default (stupid) configuration.

Unfortunatly OpenACS was made compatible with the stock install/RPM's of PG and their developers can't get it through their heads that someone may need more than 16 params.

If you are going to release your modules to the community you need to limit your parmeters to 16 and use overloaded functions. If you are not releasing the code to the community, you can do whatever you feel like.

Posted by Tom Jackson on

Also, the fact that you have to remember the order of these parameters when you use the function, and that default values are not supported is a real pain.

I wrote a package that handles all this. The package even writes out the new, update and delete functions.

More information can be found in this thread: