Обсуждение: error handling in cast functions for user defined types
Hi, I'm writing a set of casts to/from various user defined types. As is unexpected, there are cases where one data type doesn't neatly map to another (for certain values). In these cases I emit an INVALID_PARAMETER_VALUE or OUT_OF_RANGE error -- depending on the situation. But, should I also PG_RETURN_NULL()? I note the cast of int4's to int2's signal similar errors -- *but* returns "(int2) value". Is the return value just *ignored* when the error is signaled? Thanks! --don
Don Y <pgsql@DakotaCom.Net> writes: > I'm writing a set of casts to/from various user defined > types. As is unexpected, there are cases where one > data type doesn't neatly map to another (for certain > values). In these cases I emit an INVALID_PARAMETER_VALUE > or OUT_OF_RANGE error -- depending on the situation. > But, should I also PG_RETURN_NULL()? elog(ERROR) doesn't return to your function --- think of it as being like exit(). So it's pointless to code anything after it. regards, tom lane
Tom Lane wrote: > Don Y <pgsql@DakotaCom.Net> writes: >> I'm writing a set of casts to/from various user defined >> types. As is unexpected, there are cases where one >> data type doesn't neatly map to another (for certain >> values). In these cases I emit an INVALID_PARAMETER_VALUE >> or OUT_OF_RANGE error -- depending on the situation. > >> But, should I also PG_RETURN_NULL()? > > elog(ERROR) doesn't return to your function --- think of it as being > like exit(). So it's pointless to code anything after it. Ah, OK. "/* NOT REACHED */" Thanks! --don