I would also like to see an analysis of what being ANSI SQL 92 compliant
means in term of change of behavior (for arithmetics and *any features we
have already released*).
Simply because without it, I find the decision pretty hard to make.

On Thu, Nov 22, 2018 at 11:51 AM Benedict Elliott Smith <bened...@apache.org>
wrote:

> We’re not presently voting*; we’re only discussing, whether we should base
> our behaviour on a widely agreed upon standard.
>
> I think perhaps the nub of our disagreement is that, in my view, this is
> the only relevant fact to decide.  There is no data to base this decision
> upon.  It’s axiomatic, or ideological; procedural, not technical:  Do we
> think we should try to hew to standards (where appropriate), or do we think
> we should stick with what we arrived at in an adhoc manner?
>
> If we believe the former, as I now do, then the current state is only
> relevant when we come to implement the decision.
>
>
> * But given how peripheral and inherently ideological this decision is,
> and how meandering the discussion was with no clear consensus, it seemed to
> need a vote in the near future.  The prospect of a vote seems to have
> brought some healthy debate forward too, which is great, but I apologise if
> this somehow came across as presumptuous.
>
>
> > On 22 Nov 2018, at 09:26, Sylvain Lebresne <lebre...@gmail.com> wrote:
> >
> > I'm not saying "let's not do this no matter what and ever fix technical
> > debt", nor am I fearing decision.
> >
> > But I *do* think decisions, technical ones at least, should be fact and
> > data driven. And I'm not even sure why we're talking of having a vote
> here.
> > The Apache Way is *not* meant to be primarily vote-driven, votes are
> > supposed to be a last resort when, after having debated facts and data,
> no
> > consensus can be reached. Can we have the debate on facts and data first?
> > Please.
> >
> > At the of the day, I object to: "There are still a number of unresolved
> > issues, but to make progress I wonder if it would first be helpful to
> have
> > a vote on ensuring we are ANSI SQL 92 compliant for our arithmetic?".
> More
> > specifically, I disagree that such vote is a good starting point. Let's
> > identify and discuss the unresolved issues first. Let's check precisely
> > what getting our arithmetic ANSI SQL 92 compliant means and how we can
> get
> > it. I do support the idea of making such analysis btw, it would be good
> > data, but no vote is needed whatsoever to make it. Again, I object to
> > voting first and doing the analysis 2nd.
> >
> > --
> > Sylvain
> >
> >
> > On Thu, Nov 22, 2018 at 1:25 AM Jonathan Haddad <j...@jonhaddad.com>
> wrote:
> >
> >> I can’t agree more. We should be able to make changes in a manner that
> >> improves the DB In the long term, rather than live with the technical
> debt
> >> of arbitrary decisions made by a handful of people.
> >>
> >> I also agree that putting a knob in place to let people migrate over is
> a
> >> reasonable decision.
> >>
> >> Jon
> >>
> >> On Wed, Nov 21, 2018 at 4:54 PM Benedict Elliott Smith <
> >> bened...@apache.org>
> >> wrote:
> >>
> >>> The goal is simply to agree on a set of well-defined principles for how
> >> we
> >>> should behave.  If we don’t like the implications that arise, we’ll
> have
> >>> another vote?  A democracy cannot bind itself, so I never understood
> this
> >>> fear of a decision.
> >>>
> >>> A database also has a thousand toggles.  If we absolutely need to, we
> can
> >>> introduce one more.
> >>>
> >>> We should be doing this upfront a great deal more often.  Doing it
> >>> retrospectively sucks, but in my opinion it's a bad reason to bind
> >>> ourselves to whatever made it in.
> >>>
> >>> Do we anywhere define the principles of our current behaviour?  I
> >> couldn’t
> >>> find it.
> >>>
> >>>
> >>>> On 21 Nov 2018, at 21:08, Sylvain Lebresne <lebre...@gmail.com>
> wrote:
> >>>>
> >>>> On Tue, Nov 20, 2018 at 5:02 PM Benedict Elliott Smith <
> >>> bened...@apache.org>
> >>>> wrote:
> >>>>
> >>>>> FWIW, my meaning of arithmetic in this context extends to any
> features
> >>> we
> >>>>> have already released (such as aggregates, and perhaps other built-in
> >>>>> functions) that operate on the same domain.  We should be consistent,
> >>> after
> >>>>> all.
> >>>>>
> >>>>> Whether or not we need to revisit any existing functionality we can
> >>> figure
> >>>>> out after the fact, once we have agreed what our behaviour should be.
> >>>>>
> >>>>
> >>>> I'm not sure I correctly understand the process suggested, but I don't
> >>>> particularly like/agree with what I understand. What I understand is a
> >>>> suggestion for voting on agreeing to be ANSI SQL 92 compliant, with no
> >>> real
> >>>> evaluation of what that entails (at least I haven't seen one), and
> that
> >>>> this vote, if passed, would imply we'd then make any backward
> >>> incompatible
> >>>> change necessary to achieve compliance ("my meaning of arithmetic in
> >> this
> >>>> context extends to any features we have already released" and "Whether
> >> or
> >>>> not we need to revisit any existing functionality we can figure out
> >> after
> >>>> the fact, once we have agreed what our behaviour should be").
> >>>>
> >>>> This might make sense of a new product, but at our stage that seems
> >>>> backward to me. I think we owe our users to first make the effort of
> >>>> identifying what "inconsistencies" our existing arithmetic has[1] and
> >>>> _then_ consider what options we have to fix those, with their pros and
> >>> cons
> >>>> (including how bad they break backward compatibility). And if _then_
> >>>> getting ANSI SQL 92 compliant proves to not be disruptive (or at least
> >>>> acceptably so), then sure, that's great.
> >>>>
> >>>> [1]: one possibly efficient way to do that could actually be to
> compare
> >>> our
> >>>> arithmetic to ANSI SQL 92. Not that all differences found would imply
> >>>> inconsistencies/wrongness of our arithmetic, but still, it should be
> >>>> helpful. And I guess my whole point is that we should that analysis
> >>> first,
> >>>> and then maybe decide that being ANSI SQL 92 is a reasonable option,
> >> not
> >>>> decide first and live with the consequences no matter what they are.
> >>>>
> >>>> --
> >>>> Sylvain
> >>>>
> >>>>
> >>>>> I will make this more explicit for the vote, but just to clarify the
> >>>>> intention so that we are all discussing the same thing.
> >>>>>
> >>>>>
> >>>>>> On 20 Nov 2018, at 14:18, Ariel Weisberg <adwei...@fastmail.fm>
> >> wrote:
> >>>>>>
> >>>>>> Hi,
> >>>>>>
> >>>>>> +1
> >>>>>>
> >>>>>> This is a public API so we will be much better off if we get it
> right
> >>>>> the first time.
> >>>>>>
> >>>>>> Ariel
> >>>>>>
> >>>>>>> On Nov 16, 2018, at 10:36 AM, Jonathan Haddad <j...@jonhaddad.com>
> >>>>> wrote:
> >>>>>>>
> >>>>>>> Sounds good to me.
> >>>>>>>
> >>>>>>> On Fri, Nov 16, 2018 at 5:09 AM Benedict Elliott Smith <
> >>>>> bened...@apache.org>
> >>>>>>> wrote:
> >>>>>>>
> >>>>>>>> So, this thread somewhat petered out.
> >>>>>>>>
> >>>>>>>> There are still a number of unresolved issues, but to make
> >> progress I
> >>>>>>>> wonder if it would first be helpful to have a vote on ensuring we
> >> are
> >>>>> ANSI
> >>>>>>>> SQL 92 compliant for our arithmetic?  This seems like a sensible
> >>>>> baseline,
> >>>>>>>> since we will hopefully minimise surprise to operators this way.
> >>>>>>>>
> >>>>>>>> If people largely agree, I will call a vote, and we can pick up a
> >>>>> couple
> >>>>>>>> of more focused discussions afterwards on how we interpret the
> >> leeway
> >>>>> it
> >>>>>>>> gives.
> >>>>>>>>
> >>>>>>>>
> >>>>>>>>> On 12 Oct 2018, at 18:10, Ariel Weisberg <ar...@weisberg.ws>
> >> wrote:
> >>>>>>>>>
> >>>>>>>>> Hi,
> >>>>>>>>>
> >>>>>>>>> From reading the spec. Precision is always implementation
> defined.
> >>> The
> >>>>>>>> spec specifies scale in several cases, but never precision for any
> >>>>> type or
> >>>>>>>> operation (addition/subtraction, multiplication, division).
> >>>>>>>>>
> >>>>>>>>> So we don't implement anything remotely approaching precision and
> >>>>> scale
> >>>>>>>> in CQL when it comes to numbers I think? So we aren't going to
> >> follow
> >>>>> the
> >>>>>>>> spec for scale. We are already pretty far down that road so I
> would
> >>>>> leave
> >>>>>>>> it alone.
> >>>>>>>>>
> >>>>>>>>> I don't think the spec is asking for the most approximate type.
> >> It's
> >>>>>>>> just saying the result is approximate, and the precision is
> >>>>> implementation
> >>>>>>>> defined. We could return either float or double. I think if one of
> >>> the
> >>>>>>>> operands is a double we should return a double because clearly the
> >>>>> schema
> >>>>>>>> thought a double was required to represent that number. I would
> >> also
> >>>>> be in
> >>>>>>>> favor of returning a double all the time so that people can expect
> >> a
> >>>>>>>> consistent type from expressions involving approximate numbers.
> >>>>>>>>>
> >>>>>>>>> I am a big fan of widening for arithmetic expressions in a
> >> database
> >>> to
> >>>>>>>> avoid having to error on overflow. You can go to the trouble of
> >> only
> >>>>>>>> widening the minimum amount, but I think it's simpler if we always
> >>>>> widen to
> >>>>>>>> bigint and double. This would be something the spec allows.
> >>>>>>>>>
> >>>>>>>>> Definitely if we can make overflow not occur we should and the
> >> spec
> >>>>>>>> allows that. We should also not return different types for the
> same
> >>>>> operand
> >>>>>>>> types just to work around overflow if we detect we need more
> >>> precision.
> >>>>>>>>>
> >>>>>>>>> Ariel
> >>>>>>>>>> On Fri, Oct 12, 2018, at 12:45 PM, Benedict Elliott Smith wrote:
> >>>>>>>>>> If it’s in the SQL spec, I’m fairly convinced.  Thanks for
> >> digging
> >>>>> this
> >>>>>>>>>> out (and Mike for getting some empirical examples).
> >>>>>>>>>>
> >>>>>>>>>> We still have to decide on the approximate data type to return;
> >>> right
> >>>>>>>>>> now, we have float+bigint=double, but float+int=float.  I think
> >>> this
> >>>>> is
> >>>>>>>>>> fairly inconsistent, and either the approximate type should
> >> always
> >>>>> win,
> >>>>>>>>>> or we should always upgrade to double for mixed operands.
> >>>>>>>>>>
> >>>>>>>>>> The quoted spec also suggests that decimal+float=float, and
> >> decimal
> >>>>>>>>>> +double=double, whereas we currently have decimal+float=decimal,
> >>> and
> >>>>>>>>>> decimal+double=decimal
> >>>>>>>>>>
> >>>>>>>>>> If we’re going to go with an approximate operand implying an
> >>>>>>>> approximate
> >>>>>>>>>> result, I think we should do it consistently (and consistent
> with
> >>> the
> >>>>>>>>>> SQL92 spec), and have the type of the approximate operand always
> >> be
> >>>>> the
> >>>>>>>>>> return type.
> >>>>>>>>>>
> >>>>>>>>>> This would still leave a decision for float+double, though.  The
> >>> most
> >>>>>>>>>> consistent behaviour with that stated above would be to always
> >> take
> >>>>> the
> >>>>>>>>>> most approximate type to return (i.e. float), but this would
> seem
> >>> to
> >>>>> me
> >>>>>>>>>> to be fairly unexpected for the user.
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>> On 12 Oct 2018, at 17:23, Ariel Weisberg <ar...@weisberg.ws>
> >>> wrote:
> >>>>>>>>>>>
> >>>>>>>>>>> Hi,
> >>>>>>>>>>>
> >>>>>>>>>>> I agree with what's been said about expectations regarding
> >>>>> expressions
> >>>>>>>> involving floating point numbers. I think that if one of the
> inputs
> >>> is
> >>>>>>>> approximate then the result should be approximate.
> >>>>>>>>>>>
> >>>>>>>>>>> One thing we could look at for inspiration is the SQL spec. Not
> >> to
> >>>>>>>> follow dogmatically necessarily.
> >>>>>>>>>>>
> >>>>>>>>>>> From the SQL 92 spec regarding assignment
> >>>>>>>>
> https://urldefense.proofpoint.com/v2/url?u=http-3A__www.contrib.andrew.cmu.edu_-7Eshadow_sql_sql1992.txt&d=DwIFaQ&c=adz96Xi0w1RHqtPMowiL2g&r=Jad7nE1Oab1mebx31r7AOfSsa0by8th6tCxpykmmOBA&m=vuYFCiEg1Hk9RcozkHxMcCqfg4quy5zdS6jn4LoxIog&s=2dMzYnFvO5Wf7J74IbDE27vxjfOX2xYT4-u7MEXUqHg&e=
> section
> >>> 4.6:
> >>>>>>>>>>> "
> >>>>>>>>>>>    Values of the data types NUMERIC, DECIMAL, INTEGER,
> >> SMALLINT,
> >>>>>>>>>>>    FLOAT, REAL, and DOUBLE PRECISION are numbers and are all
> >>>>>>>> mutually
> >>>>>>>>>>>    comparable and mutually assignable. If an assignment would
> >>>>>>>> result
> >>>>>>>>>>>    in a loss of the most significant digits, an exception
> >>>>> condition
> >>>>>>>>>>>    is raised. If least significant digits are lost,
> >>>>> implementation-
> >>>>>>>>>>>    defined rounding or truncating occurs with no exception
> >>>>>>>> condition
> >>>>>>>>>>>    being raised. The rules for arithmetic are generally
> >> governed
> >>>>> by
> >>>>>>>>>>>    Subclause 6.12, "<numeric value expression>".
> >>>>>>>>>>> "
> >>>>>>>>>>>
> >>>>>>>>>>> Section 6.12 numeric value expressions:
> >>>>>>>>>>> "
> >>>>>>>>>>>    1) If the data type of both operands of a dyadic arithmetic
> >>>>>>>> opera-
> >>>>>>>>>>>       tor is exact numeric, then the data type of the result is
> >>>>>>>> exact
> >>>>>>>>>>>       numeric, with precision and scale determined as follows:
> >>>>>>>>>>> ...
> >>>>>>>>>>>    2) If the data type of either operand of a dyadic arithmetic
> >>>>> op-
> >>>>>>>>>>>       erator is approximate numeric, then the data type of the
> >>> re-
> >>>>>>>>>>>       sult is approximate numeric. The precision of the result
> >> is
> >>>>>>>>>>>       implementation-defined.
> >>>>>>>>>>> "
> >>>>>>>>>>>
> >>>>>>>>>>> And this makes sense to me. I think we should only return an
> >> exact
> >>>>>>>> result if both of the inputs are exact.
> >>>>>>>>>>>
> >>>>>>>>>>> I think we might want to look closely at the SQL spec and
> >>> especially
> >>>>>>>> when the spec requires an error to be generated. Those are
> >> sometimes
> >>>>> in the
> >>>>>>>> spec to prevent subtle paths to wrong answers. Any time we deviate
> >>>>> from the
> >>>>>>>> spec we should be asking why is it in the spec and why are we
> >>>>> deviating.
> >>>>>>>>>>>
> >>>>>>>>>>> Another issue besides overflow handling is how we determine
> >>>>> precision
> >>>>>>>> and scale for expressions involving two exact types.
> >>>>>>>>>>>
> >>>>>>>>>>> Ariel
> >>>>>>>>>>>
> >>>>>>>>>>>> On Fri, Oct 12, 2018, at 11:51 AM, Michael Burman wrote:
> >>>>>>>>>>>> Hi,
> >>>>>>>>>>>>
> >>>>>>>>>>>> I'm not sure if I would prefer the Postgres way of doing
> >> things,
> >>>>>>>> which is
> >>>>>>>>>>>> returning just about any type depending on the order of
> >>> operators.
> >>>>>>>>>>>> Considering it actually mentions in the docs that using
> >>>>>>>> numeric/decimal is
> >>>>>>>>>>>> slow and also multiple times that floating points are inexact.
> >> So
> >>>>>>>> doing
> >>>>>>>>>>>> some math with Postgres (9.6.5):
> >>>>>>>>>>>>
> >>>>>>>>>>>> SELECT 2147483647::bigint*1.0::double precision returns double
> >>>>>>>>>>>> precision 2147483647
> >>>>>>>>>>>> SELECT 2147483647::bigint*1.0 returns numeric 2147483647.0
> >>>>>>>>>>>> SELECT 2147483647::bigint*1.0::real returns double
> >>>>>>>>>>>> SELECT 2147483647::double precision*1::bigint returns double
> >>>>>>>> 2147483647
> >>>>>>>>>>>> SELECT 2147483647::double precision*1.0::bigint returns double
> >>>>>>>> 2147483647
> >>>>>>>>>>>>
> >>>>>>>>>>>> With + - we can get the same amount of mixture of returned
> >> types.
> >>>>>>>> There's
> >>>>>>>>>>>> no difference in those calculations, just some casting. To me
> >>>>>>>>>>>> floating-point math indicates inexactness and has errors and
> >>>>> whoever
> >>>>>>>> mixes
> >>>>>>>>>>>> up two different types should understand that. If one didn't
> >> want
> >>>>>>>> exact
> >>>>>>>>>>>> numeric type, why would the server return such? The floating
> >>> point
> >>>>>>>> value
> >>>>>>>>>>>> itself could be wrong already before the calculation - trying
> >> to
> >>>>> say
> >>>>>>>> we do
> >>>>>>>>>>>> it lossless is just wrong.
> >>>>>>>>>>>>
> >>>>>>>>>>>> Fun with 2.65:
> >>>>>>>>>>>>
> >>>>>>>>>>>> SELECT 2.65::real * 1::int returns double 2.65000009536743
> >>>>>>>>>>>> SELECT 2.65::double precision * 1::int returns double 2.65
> >>>>>>>>>>>>
> >>>>>>>>>>>> SELECT round(2.65) returns numeric 4
> >>>>>>>>>>>> SELECT round(2.65::double precision) returns double 4
> >>>>>>>>>>>>
> >>>>>>>>>>>> SELECT 2.65 * 1 returns double 2.65
> >>>>>>>>>>>> SELECT 2.65 * 1::bigint returns numeric 2.65
> >>>>>>>>>>>> SELECT 2.65 * 1.0 returns numeric 2.650
> >>>>>>>>>>>> SELECT 2.65 * 1.0::double precision returns double 2.65
> >>>>>>>>>>>>
> >>>>>>>>>>>> SELECT round(2.65) * 1 returns numeric 3
> >>>>>>>>>>>> SELECT round(2.65) * round(1) returns double 3
> >>>>>>>>>>>>
> >>>>>>>>>>>> So as we're going to have silly values in any case, why
> pretend
> >>>>>>>> something
> >>>>>>>>>>>> else? Also, exact calculations are slow if we crunch large
> >> amount
> >>>>> of
> >>>>>>>>>>>> numbers. I guess I slightly deviated towards Postgres'
> >>> implemention
> >>>>>>>> in this
> >>>>>>>>>>>> case, but I wish it wasn't used as a benchmark in this case.
> >> And
> >>>>> most
> >>>>>>>>>>>> importantly, I would definitely want the exact same type
> >> returned
> >>>>>>>> each time
> >>>>>>>>>>>> I do a calculation.
> >>>>>>>>>>>>
> >>>>>>>>>>>> - Micke
> >>>>>>>>>>>>
> >>>>>>>>>>>> On Fri, Oct 12, 2018 at 4:29 PM Benedict Elliott Smith <
> >>>>>>>> bened...@apache.org>
> >>>>>>>>>>>> wrote:
> >>>>>>>>>>>>
> >>>>>>>>>>>>> As far as I can tell we reached a relatively strong consensus
> >>>>> that we
> >>>>>>>>>>>>> should implement lossless casts by default?  Does anyone have
> >>>>>>>> anything more
> >>>>>>>>>>>>> to add?
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> Looking at the emails, everyone who participated and
> >> expressed a
> >>>>>>>>>>>>> preference was in favour of the “Postgres approach” of
> >> upcasting
> >>>>> to
> >>>>>>>> decimal
> >>>>>>>>>>>>> for mixed float/int operands?
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> I’d like to get a clear-cut decision on this, so we know what
> >>>>> we’re
> >>>>>>>> doing
> >>>>>>>>>>>>> for 4.0.  Then hopefully we can move on to a collective
> >> decision
> >>>>> on
> >>>>>>>> Ariel’s
> >>>>>>>>>>>>> concerns about overflow, which I think are also pressing -
> >>>>>>>> particularly for
> >>>>>>>>>>>>> tinyint and smallint.  This does also impact implicit casts
> >> for
> >>>>> mixed
> >>>>>>>>>>>>> integer type operations, but an approach for these will
> >> probably
> >>>>>>>> fall out
> >>>>>>>>>>>>> of any decision on overflow.
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>> On 3 Oct 2018, at 11:38, Murukesh Mohanan <
> >>>>>>>> murukesh.moha...@gmail.com>
> >>>>>>>>>>>>> wrote:
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>> I think you're conflating two things here. There's the loss
> >>>>>>>> resulting
> >>>>>>>>>>>>> from
> >>>>>>>>>>>>>> using some operators, and loss involved in casting. Dividing
> >> an
> >>>>>>>> integer
> >>>>>>>>>>>>> by
> >>>>>>>>>>>>>> another integer to obtain an integer result can result in
> >> loss,
> >>>>> but
> >>>>>>>>>>>>> there's
> >>>>>>>>>>>>>> no implicit casting there and no loss due to casting.
> >> Casting
> >>> an
> >>>>>>>> integer
> >>>>>>>>>>>>>> to a float can also result in loss. So dividing an integer
> >> by a
> >>>>>>>> float,
> >>>>>>>>>>>>> for
> >>>>>>>>>>>>>> example, with an implicit cast has an additional avenue for
> >>> loss:
> >>>>>>>> the
> >>>>>>>>>>>>>> implicit cast for the operands so that they're of the same
> >>> type.
> >>>>> I
> >>>>>>>>>>>>> believe
> >>>>>>>>>>>>>> this discussion so far has been about the latter, not the
> >> loss
> >>>>> from
> >>>>>>>> the
> >>>>>>>>>>>>>> operations themselves.
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>> On Wed, 3 Oct 2018 at 18:35 Benjamin Lerer <
> >>>>>>>> benjamin.le...@datastax.com>
> >>>>>>>>>>>>>> wrote:
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>>> Hi,
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>> I would like to try to clarify things a bit to help people
> >> to
> >>>>>>>> understand
> >>>>>>>>>>>>>>> the true complexity of the problem.
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>> The *float *and *double *types are inexact numeric types.
> >> Not
> >>>>> only
> >>>>>>>> at
> >>>>>>>>>>>>> the
> >>>>>>>>>>>>>>> operation level.
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>> If you insert 676543.21 in a *float* column and then read
> >> it,
> >>>>> you
> >>>>>>>> will
> >>>>>>>>>>>>>>> realize that the value has been truncated to 676543.2.
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>> If you want accuracy the only way is to avoid those inexact
> >>>>> types.
> >>>>>>>>>>>>>>> Using *decimals
> >>>>>>>>>>>>>>> *during operations will mitigate the problem but will not
> >>> remove
> >>>>>>>> it.
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>> I do not recall PostgreSQL behaving has described. If I am
> >> not
> >>>>>>>> mistaken
> >>>>>>>>>>>>> in
> >>>>>>>>>>>>>>> PostgreSQL *SELECT 3/2* will return *1*. Which is similar
> to
> >>>>> what
> >>>>>>>> MS SQL
> >>>>>>>>>>>>>>> server and Oracle do. So all thoses databases will lose
> >>>>> precision
> >>>>>>>> if you
> >>>>>>>>>>>>>>> are not carefull.
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>> If you truly need precision you can have it by using exact
> >>>>> numeric
> >>>>>>>> types
> >>>>>>>>>>>>>>> for your data types. Of course it has a cost on
> performance,
> >>>>>>>> memory and
> >>>>>>>>>>>>>>> disk usage.
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>> The advantage of the current approach is that it give you
> >> the
> >>>>>>>> choice.
> >>>>>>>>>>>>> It is
> >>>>>>>>>>>>>>> up to you to decide what you need for your application. It
> >> is
> >>>>> also
> >>>>>>>> in
> >>>>>>>>>>>>> line
> >>>>>>>>>>>>>>> with the way CQL behave everywhere else.
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>> --
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>> Muru
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>
> >>>>> ---------------------------------------------------------------------
> >>>>>>>>>>>>> To unsubscribe, e-mail: dev-unsubscr...@cassandra.apache.org
> >>>>>>>>>>>>> For additional commands, e-mail:
> >> dev-h...@cassandra.apache.org
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>> ---------------------------------------------------------------------
> >>>>>>>>>>> To unsubscribe, e-mail: dev-unsubscr...@cassandra.apache.org
> >>>>>>>>>>> For additional commands, e-mail: dev-h...@cassandra.apache.org
> >>>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>> ---------------------------------------------------------------------
> >>>>>>>>>> To unsubscribe, e-mail: dev-unsubscr...@cassandra.apache.org
> >>>>>>>>>> For additional commands, e-mail: dev-h...@cassandra.apache.org
> >>>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>> ---------------------------------------------------------------------
> >>>>>>>>> To unsubscribe, e-mail: dev-unsubscr...@cassandra.apache.org
> >>>>>>>>> For additional commands, e-mail: dev-h...@cassandra.apache.org
> >>>>>>>>>
> >>>>>>>>
> >>>>>>>>
> >>>>>>>>
> >> ---------------------------------------------------------------------
> >>>>>>>> To unsubscribe, e-mail: dev-unsubscr...@cassandra.apache.org
> >>>>>>>> For additional commands, e-mail: dev-h...@cassandra.apache.org
> >>>>>>>>
> >>>>>>>> --
> >>>>>>> Jon Haddad
> >>>>>>>
> https://urldefense.proofpoint.com/v2/url?u=http-3A__www.rustyrazorblade.com&d=DwIFaQ&c=adz96Xi0w1RHqtPMowiL2g&r=Jad7nE1Oab1mebx31r7AOfSsa0by8th6tCxpykmmOBA&m=vuYFCiEg1Hk9RcozkHxMcCqfg4quy5zdS6jn4LoxIog&s=nIwl4l-6xszzYOOWiSHkxLYvgGVVdlf_izS5h1pfOck&e=
> >>>>>>> twitter: rustyrazorblade
> >>>>>>
> >>>>>>
> >>>>>>
> ---------------------------------------------------------------------
> >>>>>> To unsubscribe, e-mail: dev-unsubscr...@cassandra.apache.org
> >>>>>> For additional commands, e-mail: dev-h...@cassandra.apache.org
> >>>>>>
> >>>>>
> >>>>>
> >>>>> ---------------------------------------------------------------------
> >>>>> To unsubscribe, e-mail: dev-unsubscr...@cassandra.apache.org
> >>>>> For additional commands, e-mail: dev-h...@cassandra.apache.org
> >>>>>
> >>>>>
> >>>
> >>> --
> >> Jon Haddad
> >>
> https://urldefense.proofpoint.com/v2/url?u=http-3A__www.rustyrazorblade.com&d=DwIFaQ&c=adz96Xi0w1RHqtPMowiL2g&r=Jad7nE1Oab1mebx31r7AOfSsa0by8th6tCxpykmmOBA&m=vuYFCiEg1Hk9RcozkHxMcCqfg4quy5zdS6jn4LoxIog&s=nIwl4l-6xszzYOOWiSHkxLYvgGVVdlf_izS5h1pfOck&e=
> >> twitter: rustyrazorblade
> >>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscr...@cassandra.apache.org
> For additional commands, e-mail: dev-h...@cassandra.apache.org
>
>

Reply via email to