Thread: BUG #17139: Invalid input syntax for uuid (politely this time!)
The following bug has been logged on the website: Bug reference: 17139 Logged by: Anton Melser Email address: anton.melser@outlook.com PostgreSQL version: 13.3 Operating system: Linux Description: To begin with, thank you for the amazing database that keeps getting better over the decades! This is a hopefully far more polite follow-up to BUG #16726. A couple of decades ago when I first started out I had outbursts like that on public mailing lists... Anyway, at the time (https://www.postgresql.org/message-id/20201119133135.GA31339%40alvherre.pgsql) Alvaro Herrera suggested the following: ... ERROR: invalid input syntax for type uuid: "{dec3d6c4-c32e-45c6-000-1eae3df44fbf}" LÍNEA 1: insert into users values ('{dec3d6c4-c32e-45c6-000-1eae3df44... ^ HINT: Valid UUID values are of the form 'FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF'. ... Though he pointed out some issues with this, which are definitely valid ones. However, I still think there might be a way to suggest that there is something wrong with the *value*, rather than what most naive SQL users like myself assume when talking about the syntax, which would not include something inside the value. I can definitely see it is a syntactical (or maybe morphological?) issue on one level, but I spent more than a few minutes looking at the docs saying "but I've tried everything they have suggested and nothing works, my syntax is correct!!!". In my case it was a bad copy/paste of a UUID (missing the first two characters). When I saw there was an error with the syntax, I immediately assumed it might not be liking the single quotes, or the double colons, etc. The aforementioned bug report was the only thing that got me looking at the actual value I was trying to query. Anyway, I apologise for the community on behalf of nozdrum@gmx.de!
...
ERROR: invalid input syntax for type uuid:
"{dec3d6c4-c32e-45c6-000-1eae3df44fbf}"
LÍNEA 1: insert into users values ('{dec3d6c4-c32e-45c6-000-1eae3df44...
^
HINT: Valid UUID values are of the form
'FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF'.
...
Though he pointed out some issues with this, which are definitely valid
ones.
However, I still think there might be a way to suggest that there is
something wrong with the *value*,
It says: ERROR: invalid input syntax for type uuid:
Aside from the lack of the literal word "value" it seems to meet your criteria quite well Both the "input" and "type uuid" point the reader to the value as opposed to the statement.
rather than what most naive SQL users like
myself assume when talking about the syntax,
I'm unconvinced that this is a valid representation of reality. Even if "syntax error" by itself refers to the SQL 99% of the time if I tell people that 'ABC'::integer is a syntax error for type integer they are not likely to think the SQL part of the query is wrong. You can argue that it's more natural to say "invalid input value" but I suspect that because the input is not just a simple value but also contains its own structural elements (the brackets) that syntax was the chosen term. I do not find that to be a wrong choice.
The aforementioned bug
report was the only thing that got me looking at the actual value I was
trying to query.
Yes, the community is considered a valid resource to lean on in our design. We do not try to cover every possible misconception people may have and expect that through discussions with real people things will work out. I did make a single suggestion in that previous thread, pointing out the length difference explicitly, that would be a marginal improvement, but no one volunteered to write the patch and it isn't something worth pushing or figuring out how to do myself (at least then, I may give it a try at some point...).
David J.