Subject: RE: BUG #17258: Unexpected results in CHAR(1) data type
Ok, but my example was just a simplified version of what is going on. The actual problem stems from a CHAR(1) column data type that is behaving the same way. I was just trying to create a super-simple example of the problem. It still seems to me that a CHAR(1) should never be zero length, regardless of how it's implemented.
This qualifies as a feature request, not a bug. One could write a version of substr that does what you expect (it probably wouldn't be named substr though) and takes in a character data type. It's just no one has, nor is likely to. Thus you are stuck using versions that take in text and you get the char-to-text casting side effects.
If you do octet_length(' ':: character(1)) it will return 1, not zero. So it indeed has a length one.