Re: no "+" operator for smallint and bigint
От | Dennis Gearon |
---|---|
Тема | Re: no "+" operator for smallint and bigint |
Дата | |
Msg-id | JEPMYWGB83JF54ZWEAUQQPYW1TUNIFB.3e5a46f6@cal-lab обсуждение исходный текст |
Ответ на | Re: no "+" operator for smallint and bigint (Tom Lane <tgl@sss.pgh.pa.us>) |
Список | pgsql-general |
Why not do it like C does, promote to the RESULTANT data type. If he had rewritten his statement like so, then it would work as per my statement above: operator# select (8::smallint + 8::bigint)::biginit; 2/24/2003 6:59:44 AM, Tom Lane <tgl@sss.pgh.pa.us> wrote: >Martijn van Oosterhout <kleptog@svana.org> writes: >> On Mon, Feb 24, 2003 at 08:19:20PM +0900, Jean-Christian Imbeault wrote: >>> PG=3D# >>> ERROR: Unable to identify an operator '+' for types 'smallint' and 'bigi= >> nt' > >> Since there is no explicit operator it doesn't know if the result should be >> a smallint or a bigint so it's asking you to tell it. > >More specifically, the parser finds two equally plausible choices: cast the >smallint to int and apply "int4 + int8", or cast the smallint to bigint >and apply "int8 + int8". Not knowing which to prefer, it has to punt. > >> Well, it not quite a straight forward problem and there has been much >> discussion about how to solve it. > >That's an understatement :-(. > >I currently like the idea of getting rid of as many cross-datatype >operators as possible --- offering a native "int4 + int8" operator >doesn't seem to have any obvious benefit over letting the parser >insert a promotion. But there are some pitfalls in that idea too. > > regards, tom lane > >---------------------------(end of broadcast)--------------------------- >TIP 4: Don't 'kill -9' the postmaster >
В списке pgsql-general по дате отправления: