Pavel Stehule <pavel.steh...@gmail.com> writes: > But maybe we try to design some that are designed already. Is there some > info about index specification in SQL/JSON?
We do have precedent for this, it's the rules about resolving argument types for overloaded functions. But the conclusion that that precedent leads to is that we should check whether the subscript expression can be *implicitly* coerced to either integer or text, and fail if neither coercion or both coercions succeed. I'd be okay with that from a system design standpoint, but it's hard to say without trying it whether it will work out nicely from a usability standpoint. In a quick trial it seems it might be okay: regression=# create function mysub(int) returns text language sql regression-# as $$select 'int'$$; CREATE FUNCTION regression=# create function mysub(text) returns text language sql as $$select 'text'$$; CREATE FUNCTION regression=# select mysub(42); mysub ------- int (1 row) regression=# select mysub('foo'); mysub ------- text (1 row) But there are definitely cases that will fail when an assignment coercion would have succeeded, eg regression=# select mysub(42::bigint); ERROR: function mysub(bigint) does not exist Maybe that's okay. (As I said earlier, we can't use assignment coercion when there's two possible coercion targets, because it'd be too likely that they both succeed.) regards, tom lane