<html>
  <head>

  </head>
  <body style="margin-right: 4px; font-weight: normal; font-size: 12pt; margin-bottom: 1px; font-style: normal; margin-left: 4px; font-variant: normal; font-family: Lucida Grande; line-height: normal; margin-top: 4px">
    <p style="margin-bottom: 0; margin-top: 0">
      <font face="Lucida Grande" size="3">Operator precedence is not even clear to programmers&#44; let alone to users. Many people think that in C &amp;&amp; and&#32;&#124;&#124;&#32;have the same precedence which is not true. Therefore compilers give a warning when using them together without parentheses.</font>    </p>
    <p style="margin-bottom: 0; margin-top: 0">
      <font face="Lucida Grande" size="3">Yet&#44; I prefer operators to functions because they are less verbose and more natural. I agree with Walter that parsing is quite straightforward when using tools like bison/flex. I assume similar tools exist in the Java world.</font>    </p>
<br>      
    <p style="margin-bottom: 0; margin-top: 0">
      <font face="Lucida Grande" size="3">I think the query must be written like</font>    </p>
    <p style="margin-bottom: 0; margin-top: 0">
      <font face="Lucida Grande" size="3">&#160;&#160;&#160;&#160;&#160;IN_UNIT&#40;M&#44; &quot;solmass&quot;&#41; &lt; 10</font>    </p>
    <p style="margin-bottom: 0; margin-top: 0">
      <font face="Lucida Grande" size="3">because the unit of M has to be converted to solmass &#40;you know 10 is specified as solmass&#41;.</font>    </p>
<br>      
    <p style="margin-bottom: 0; margin-top: 0">
      <font face="Lucida Grande" size="3">Some time ago I&#39;ve had some discussion with Markus about units. Unlike Markus I prefer to write the query like</font>    </p>
    <p style="margin-bottom: 0; margin-top: 0">
      <font face="Lucida Grande" size="3">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;M &lt; 10 solmass</font>    </p>
    <p style="margin-bottom: 0; margin-top: 0">
      <font face="Lucida Grande" size="3">Quotes are needed for composite units like</font>    </p>
    <p style="margin-bottom: 0; margin-top: 0">
      <font face="Lucida Grande" size="3">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;velocity &lt; 3 &#39;km/h&#39;</font><br><font face="Lucida Grande" size="3">In such grammar&nbsp;the unit specification is unambiguous and easy to parse &#40;I&#39;ve done that in TaQL&#41;. I find it more natural and less confusing&#44; because that&#39;s the way we express it in normal language. I think it also easier to write.</font>    </p>
    <p style="margin-bottom: 0; margin-top: 0">
      <font face="Lucida Grande" size="3">I understood that ADQL is parsed and rewritten&#44; so in principle such syntax is possible.</font>    </p>
<br>      
    <p style="margin-bottom: 0; margin-top: 0">
      <font face="Lucida Grande" size="3">Cheers&#44;</font>    </p>
    <p style="margin-bottom: 0; margin-top: 0">
      <font face="Lucida Grande" size="3">Ger</font>    </p>
    <p style="margin-bottom: 0; margin-top: 0">
      <br>
      &gt;&gt;&gt; Walter Landry &lt;wlandry@caltech.edu&gt; 6/10/2015 10:39 AM &gt;&gt;&gt;<br>Markus Demleitner &lt;msdemlei@ari.uni-heidelberg.de&gt; wrote:<br>&gt; Hi Walter&#44;<br>&gt;<br>&gt; On Tue&#44; Jun 09&#44; 2015 at 04:53:26PM -0700&#44; Walter Landry wrote:<br>&gt;&gt; 2&#41; I do not understand the syntax for IN_UNIT&#40;&#41;.&#160;&#32;Shouldn&#39;t there be<br>&gt;&gt;&#160;&#160;&#160;&#32;three arguments &#40;value&#44; units_from&#44; units_to&#41; and not two&#63;<br>&gt;<br>&gt; No&#44; the whole point is that query writers don&#39;t have to assume units<br>&gt; in the query but let the database &#40;or rather the translation layer&#41;<br>&gt; work it out for them.<br>&gt;<br>&gt; There are two reasons I&#39;ve proposed this:<br>&gt;<br>&gt; &#40;1&#41; people get unit conversions wrong all the time&#44; and the computer<br>&gt; is much better reliably tracing units than humans are&#59; also&#44; it helps<br>&gt; writing a bit more generic queries<br>&gt;<br>&gt; &#40;2&#41; if people do manual unit conversions&#44; there&#39;s no way a computer<br>&gt; can reliably figure out the new unit&#44; so your metadata is hosed.<br>&gt;<br>&gt; To satisfy both cases&#44; it really needs to be a two-arg function.<br><br>Now I am really confused.&#160;&#32;If I&#44; as a query writer&#44; want to find all<br>stars with mass M &lt; 10&#42;solMass&#44; would I write<br><br>&#160;&#32;M &lt; IN_UNIT&#40;10&#44;&quot;solMass&quot;&#41;<br><br>or<br><br>&#160;&#32;IN_UNIT&#40;M&#44;&quot;solMass&quot;&#41; &lt; 10<br><br>&gt;&gt; 4&#41; Can we put the math and trig functions into the optional<br>&gt;&gt;&#160;&#160;&#160;&#32;components&#63;&#160;&#32;Most of them are not implemented in sqlite.<br>&gt;<br>&gt; ...but they&#39;re reasonably easy to retrofit&#44; no&#63;&#160;&#32;In general&#44; I&#39;m<br>&gt; against optional features&#44; as they are a big liability on<br>&gt; clients/users &#40;that have to figure out where they are available&#41;.<br>&gt; The code for adding trig to sqlite only needs to be written once&#44; on<br>&gt; the other hand &#40;probably already has several times&#41;.<br><br>After a little wandering through the internet&#44; I found<br><br>&#160;&#32;<a href="http://sqlite.org/contrib/download/extension-functions.c?get=25">http://sqlite.org/contrib/download/extension-functions.c&#63;get&#61;25</a><br><br>which implements most of these functions.&#160;&#32;A little more work for me<br>&#40;grumble&#44; grumble&#41;&#44; but not so bad.<br><br>&gt;&gt; 5&#41; Why are we making new function names BIT_AND&#44; BIT_OR&#44; etc&#63;&#160;&#32;Why not<br>&gt;&gt;&#160;&#160;&#160;&#32;just use the operators&#63;&#160;&#32;It is what everyone but Oracle and<br>&gt;&gt;&#160;&#160;&#160;&#32;Informix implement&#44; and they use different names anyway.<br>&gt;<br>&gt; ...but operators are harder to parse &#40;precedence&#33;&#160;&#32;Left-recursive<br>&gt; rules&#33;&#41;&#44; and it&#39;s easier for a machine to go from prefix notation to<br>&gt; infix than the other way round.&#160;&#32;I&#39;m all for functions.<br><br>We have to parse the operators anyway.&#160;&#32;And it is really not<br>that hard.<br><br>Cheers&#44;<br>Walter Landry<br>
    </p>
  </body>
</html>