<html>
  <head>

  </head>
  <body style="font-variant: normal; font-size: 12pt; margin-right: 4px; margin-top: 4px; font-weight: normal; line-height: normal; font-family: Lucida Grande; font-style: normal; margin-left: 4px; margin-bottom: 1px">
    <p style="margin-bottom: 0; margin-top: 0">
      <font size="3" face="Lucida Grande">Hi Mark&#44;</font>    </p>
<br>      
    <p style="margin-bottom: 0; margin-top: 0">
      <font size="3" face="Lucida Grande">You could take a look at Casacore&#39;s TaQL&#44; the query language for its tables. It uses array syntax similar to Python.</font>    </p>
    <p style="margin-bottom: 0; margin-top: 0">
      <font size="3" face="Lucida Grande">I understood that an ADQL query command is parsed and rewritten to a command for the underlying query language. That should make it possible to use python-like array syntax and rewrite it to UDFs as needed. Probably not needed for PostgreSQL that supports arrays.</font>    </p>
    <p style="margin-bottom: 0; margin-top: 0">
      <font size="3" face="Lucida Grande">Note that TaQL also support units in a natural way.</font>    </p>
    <p style="margin-bottom: 0; margin-top: 0">
      <font size="3" face="Lucida Grande">See </font><font size="3" color="#0000ff" face="Lucida Grande"><i><u><a href="http://casacore.github.io/casacore-notes/199.html">http://casacore.github.io/casacore-notes/199.html</a></u></i></font><font size="3" face="Lucida Grande"></font>    </p>
<br>      
    <p style="margin-bottom: 0; margin-top: 0">
      <font size="3" face="Lucida Grande">Cheers&#44;</font>    </p>
    <p style="margin-bottom: 0; margin-top: 0">
      <font size="3" face="Lucida Grande">ger</font><br><br>&gt;&gt;&gt; Mark Taylor &lt;M.B.Taylor@bristol.ac.uk&gt; 04-Jul-17 13:43 &gt;&gt;&gt;<br>Dear DAL&#44;<br><br>Upcoming releases of the Gaia catalogue will contain some<br>array-valued columns in the source catalogues&#44; things like<br>time series&#44; spectra and correlation matrices.<br>TAP does not prevent array-valued columns&#44; but as far as<br>I know there is no standard way to access array elements<br>within ADQL queries.&#160;&#32;In DPAC we are considering ways to allow this.<br><br>We can define User-Defined Functions for this purpose&#44; and<br>some experimental functionality along these lines has been<br>implemented.&#160;&#32;But we&#39;re interested in input from the IVOA:<br><br>&#160;&#160;&#32;- have other people encountered this and come up with solutions<br>&#160;&#160;&#160;&#160;&#32;that we can copy&#63;<br><br>&#160;&#160;&#32;- should we try to come up with something &#40;a de facto standard&#41;<br>&#160;&#160;&#160;&#160;&#32;that can be used by other services&#63;<br><br>&#160;&#160;&#32;- is there a case for language support for these features in<br>&#160;&#160;&#160;&#160;&#32;a future version of ADQL&#63;<br><br>Here is the initial discussion item reported by Alcione Mora from<br>the DPAC issue tracking system &#40;ref for DPAC insiders: C9GACS-239&#41;:<br><br>&#160;&#160;&#32;Experimental support for array functions has been added to Gaia Archive<br>&#160;&#160;&#32;v1.3.0. Array types are supported as valid output formats. In addition&#44;<br>&#160;&#160;&#32;some user defined functions have been defined for direct manipulation&#44;<br>&#160;&#160;&#32;most notably &#40;see Archive help&#41;:<br><br>&#160;&#160;&#32;GET_DOUBLE_ARRAY_ELEMENT&#40;array&#44;indexes&#41;: Returns the selected element<br>&#160;&#160;&#32;from the array of double precision values&#44; where:<br><br>&#160;&#160;&#160;&#160;&#160;&#32;- array &#91;double&#93;:<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#32;Input array<br>&#160;&#160;&#160;&#160;&#160;&#32;- indexes &#91;string&#93;:<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#32;String with the selected indexes with the format &#39;&#91;i&#93;&#91;j&#93;..&#39;<br><br>&#160;&#160;&#32;The syntax is functional&#44; but should be considered a work in progress<br>&#160;&#160;&#32;until DR2.<br><br>&#160;&#160;&#32;Extra functionality is needed Some suggestions to discuss include<br>&#160;&#160;&#32;the following:<br><br>&#160;&#160;&#160;&#160;&#160;&#32;- get_length&#40;array_column&#44; any type&#41;&#44; null for null input cell<br>&#160;&#160;&#160;&#160;&#160;&#32;- create_double_array&#40;list_of_columns&#41;&#44; autocasting<br>&#160;&#160;&#160;&#160;&#160;&#32;- create_int_array&#40;list_of_columns&#41;&#44; autocasting<br>&#160;&#160;&#160;&#160;&#160;&#32;- Is ADQL function overload supported&#63; I could not find<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#32;any reference in ADQL and TAPRegExt &#40;neither allowing nor<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#32;forbidding&#41;. If yes&#44; GET_ARRAY_ELEMENT should be implemented using<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#32;a single function name for all data types transparently to the<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#32;user. If not&#44; consider some of the following six bullet points<br>&#160;&#160;&#160;&#160;&#160;&#32;- Similar functions for float&#44; long&#44; int&#44; byte and boolean<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#32;get_double and get_float should accept all numeric types as input<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#32;&#40;automatic casting&#41;<br>&#160;&#160;&#160;&#160;&#160;&#32;- get_long should accept long&#44; int&#44; byte and boolean &#40;1&#61;true&#44; 0&#61;false&#41;<br>&#160;&#160;&#160;&#160;&#160;&#32;- get_int should accept int and byte and boolean &#40;1&#61;true&#44; 0&#61;false&#41;<br>&#160;&#160;&#160;&#160;&#160;&#32;- get_byte should accept byte and boolean &#40;1&#61;true&#44; 0&#61;false&#41;<br>&#160;&#160;&#160;&#160;&#160;&#32;- Alternatively or complementary&#44; the CAST ADQL 2.1 optional<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#32;function could be implemented<br><br>If anyone in VO-land has input on this&#44; we&#39;d be pleased to hear it&#44;<br>so we can do something re-usable or re-used as much as possible.<br>Otherwise&#44; we&#39;ll go ahead and do whatever looks like a best fit<br>to Gaia requirements.<br><br>Thanks<br><br>Mark<br><br>--<br>Mark Taylor&#160;&#160;&#32;Astronomical Programmer&#160;&#160;&#32;Physics&#44; Bristol University&#44; UK<br>m.b.taylor@bris.ac.uk &#43;44-117-9288776&#160;&#32;<a href="http://www.star.bris.ac.uk/~mbt/">http://www.star.bris.ac.uk/&#126;mbt/</a><br>
    </p>
  </body>
</html>