čt 17. 12. 2020 v 22:47 odesílatel Tom Lane <t...@sss.pgh.pa.us> napsal:
> Chapman Flack <c...@anastigmatix.net> writes: > > That's likely to be what a programmer intends when writing > > (variable explicitly typed integer) := js['n'] and > > (variable explicitly types varchar) := js['v'] > > I think that what we want, if we're to support that sort of thing, > is that the js[] constructs produce jsonb by definition, and then an > assignment-level cast is applied to get from jsonb to integer or text. > I see we already have most of the necessary casts, but they're currently > marked explicit-only. Downgrading them to assignment level might be > okay though. If we don't want to do that, it means we have to write > integervar := js['n']::integer > which is a bit more wordy but also unmistakable as to intent. (I think > the "intent" angle might be the reason we insisted on these things > being explicit to start with.) > > It's somewhat interesting to speculate about whether we could optimize > the combination of the subscripting function and the cast function. > But (a) that's an optimization, not something that should be part of > the user-visible semantics, and (b) it should not be part of the initial > feature. I think a large part of the reason this patch is still not > done after four years is that it's been biting off more than it could > chew all along. Let's try to get it to completion and then optimize > later. > sure Pavel > As far as "treat as" is concerned, we already have a spelling for > that, it's called a cast. > > regards, tom lane > > >