The server needs these limits in order to figure out how to size
database tables, so there exists a reason. Given that constraint,
there are two paths to go down:
1) specify a maximum length
2) specify a way for the client to find out the maximum length
either way, you need to specify what happens if the length is exceeded
(error, truncation, etc.)
The first way is much simpler.
It is, but given the reason for it that its for database implementation
constraints (i.e. edging towards implementation specific) IMO it would
be better to be flexible and go for option 2 and let the implementations
decide their limits rather than have it hard coded in the protocol to a
value that might not allow for optimal performance in certain environments.
I would go for option 2 and specify what error should be returned if the
client goes over the limit so it can present the appropriate user
interface for the end user.
Richard