Thread: bit-strings with white space
The following documentation comment has been logged on the website: Page: https://www.postgresql.org/docs/9.6/static/sql-syntax-lexical.html Description: Postgresql 9.6, section 4.1.2.5 says that bit-strings can spill over multiple lines, same as regular string constants. I tried SELECTing such and found that they may only contain characters '0' and '1'.
=?utf-8?q?PG_Doc_comments_form?= <noreply@postgresql.org> writes: > Postgresql 9.6, section 4.1.2.5 says that bit-strings can spill over > multiple lines, same as regular string constants. I tried SELECTing such and > found that they may only contain characters '0' and '1'. As indeed the text says. What the continuation mention is talking about is this syntax: regression=# select b'10001' '00100'; ?column? ------------ 1000100100 (1 row) which works like 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. regards, tom lane
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? -- Jim C. Nasby, Data Architect jim@nasby.net 512.569.9461 (cell) http://jim.nasby.net
On Sunday, April 22, 2018, Jim Nasby <jim@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.
David J.