On Sunday, April 22, 2018, Jim Nasby <j...@nasby.net> wrote: > On 4/22/18 12:18 PM, Tom Lane wrote: > >> regression=# select 'foo' >> 'bar'; >> ?column? >> ---------- >> foobar >> (1 row) >> >> Perhaps there's something we could change to make this clearer, >> but I'm not sure what. >> > > I had no idea you could do that. While there's probably some wordy > description that could explain this, I think an example is probably the > best bet. Are there any other data types that work like this? > > This structural "normalization" gets applied before types get involved. Two literals only separated by a newline are concatenated together. Any type name prefix, E or b prefix, :: cast, or cast() application then gets applied to the combined literal.
The sql syntax section on this could maybe use another example or two but does communicate the behavior reasonably well. https://www.postgresql.org/docs/10/static/sql-syntax-lexical.html#SQL-SYNTAX-CONSTANTS David J.