It turns out that the SQL standard uses the function call notation
foo(this AS that)
for something else:
<routine invocation> ::= <routine name> <SQL argument list>
<routine name> ::= [ <schema name> <period> ] <qualified identifier>
<SQL argument list> ::= <left paren> [ <SQL argument> [ { <comma> <SQL
argument> }... ] ] <right paren>
<SQL argument> ::= <value expression>
| <generalized expression>
| <target specification>
<generalized expression> ::= <value expression> AS <path-resolved
user-defined type name>
In systems that have inheritance of composite types, this is used to
specify which type the value is supposed to be interpreted as (for
example, to treat the value as a supertype).
Seems kind of bad to overload this with something completely different.
What should we do?