From: Peter Gulutzan <pgulutzan@ocelot.ca> To: Nikita Pettik <korablev@tarantool.org>, Mergen Imeev <imeevma@tarantool.org> Cc: tarantool-discussions@dev.tarantool.org Subject: Re: [Tarantool-discussions] Implicit cast for COMPARISON Date: Tue, 4 Feb 2020 19:57:09 -0700 [thread overview] Message-ID: <c75e0748-c35d-77f3-a80b-12dd249a8208@ocelot.ca> (raw) In-Reply-To: <20200204185011.GF1049@tarantool.org> Hi, On 2020-02-04 11:50 a.m., Nikita Pettik wrote: > On 03 Feb 14:35, Mergen Imeev wrote: <cut> >> 7) We need to clarify the rules when comparing SCALAR values. I >> think we cannot use the Tarantool rules here, as the Tarantool >> rules indicate that “100 < '2' == true”, but we decided that >> "100 > '2' == true", since '2' implicitly cast to 2. Could you >> suggest the rules that we should use here? > > There's already existing solution: while fetching value from space, > we preserve its initial field type. For SCALAR values we may use one > rules, for values fetched from INTEGER/STRING fields - apply another ones. I do not think it is always so simple. First, with regard to the implicit cast part of the question, the current situation is: CREATE TABLE t (A SCALAR PRIMARY KEY, B INTEGER); INSERT INTO t VALUES (1,1); SELECT * FROM t WHERE A = B AND A < '0' AND B > '0'; Result: 1 row. It looks odd, but that is what happens if the SCALAR rules and the non-SCALAR rules can fit in the same statement. This could be solved by making implicit cast illegal. But you still want to have two sets of rules, and (behaviour change) values can be SCALAR. Suppose CREATE TABLE t (scalar_column SCALAR PRIMARY KEY, non_scalar_column INT); CAST(non_scalar_column AS SCALAR) result data type is SCALAR? scalar_column < non_scalar_column is legal? scalar_column < 1 /* data type of 1 is INTEGER */ ... is legal? SUM(scalar_column) is SCALAR? scalar_column + non_scalar_column is SCALAR? SELECT scalar_column UNION SELECT non_scalar_column is SCALAR? UPDATE t SET non_scalar_column = scalar_column is legal? Peter Gulutzan
next prev parent reply other threads:[~2020-02-05 2:57 UTC|newest] Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top 2020-01-21 11:11 Mergen Imeev 2020-01-21 18:09 ` Peter Gulutzan 2020-01-22 14:13 ` Mergen Imeev 2020-01-22 14:24 ` Nikita Pettik 2020-01-30 18:51 ` Konstantin Osipov 2020-01-22 16:43 ` Peter Gulutzan 2020-01-30 18:52 ` Konstantin Osipov 2020-02-03 11:35 ` Mergen Imeev 2020-02-03 15:02 ` Konstantin Osipov 2020-02-04 18:50 ` Nikita Pettik 2020-02-05 2:57 ` Peter Gulutzan [this message] 2020-02-07 14:24 ` Nikita Pettik 2020-02-07 14:40 ` Konstantin Osipov 2020-02-07 22:30 ` Peter Gulutzan 2020-02-11 13:32 ` Mergen Imeev 2020-02-05 7:52 ` Mergen Imeev 2020-02-06 12:41 ` Mergen Imeev 2020-02-06 13:09 ` Mergen Imeev
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=c75e0748-c35d-77f3-a80b-12dd249a8208@ocelot.ca \ --to=pgulutzan@ocelot.ca \ --cc=imeevma@tarantool.org \ --cc=korablev@tarantool.org \ --cc=tarantool-discussions@dev.tarantool.org \ --subject='Re: [Tarantool-discussions] Implicit cast for COMPARISON' \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox