/[volute]/trunk/projects/dal/TAPNotes/TAPNotes-fmt.html
ViewVC logotype

Diff of /trunk/projects/dal/TAPNotes/TAPNotes-fmt.html

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 2619 by marco.merot@gmail.com, Tue May 6 10:30:49 2014 UTC revision 2620 by yrvafhom@gmail.com, Tue May 13 22:59:14 2014 UTC
# Line 3  Line 3 
3  Paul Harrison -->  Paul Harrison -->
4  <!DOCTYPE html  <!DOCTYPE html
5    PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">    PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
6  <html xmlns="http://www.w3.org/1999/xhtml"><head profile="http://www.w3.org/1999/xhtml/vocab"><title>TAP Implementation Notes IVOA Note  13 December 2013</title><meta http-equiv="content-type" value="text/html;charset=utf-8"/><meta name="Title" content="TAP Implementation Notes"/><meta name="author" content="Markus Demleitner, msdemlei@ari.uni-heidelberg.de"/><meta name="maintainedBy" content="Markus Demleitner, msdemlei@ari.uni-heidelberg.de"/><link href="http://www.ivoa.net/misc/ivoa_a.css" rel="stylesheet" type="text/css"/><!-- Add other styling information here (but this element, if present, mustn't be empty)  <html xmlns="http://www.w3.org/1999/xhtml">
7    <head profile="http://www.w3.org/1999/xhtml/vocab">
8    <title>TAP Implementation Notes IVOA Note  13 December 2013</title>
9    <meta http-equiv="content-type" value="text/html;charset=utf-8"/>
10    <meta name="Title" content="TAP Implementation Notes"/>
11    <meta name="author" content="Markus Demleitner, msdemlei@ari.uni-heidelberg.de"/>
12    <meta name="maintainedBy" content="Markus Demleitner, msdemlei@ari.uni-heidelberg.de"/>
13    <link href="http://www.ivoa.net/misc/ivoa_a.css" rel="stylesheet" type="text/css"/>
14    <!-- Add other styling information here (but this element, if present, mustn't be empty)
15    <style type="text/css"></style>    <style type="text/css"></style>
16  --><link href="./ivoadoc/XMLPrint.css" rel="stylesheet" type="text/css"/><link href="./ivoadoc/ivoa-extras.css" rel="stylesheet" type="text/css"/><style type="text/css" xml:space="preserve">  -->
17    <link href="./ivoadoc/XMLPrint.css" rel="stylesheet" type="text/css"/>
18    <link href="./ivoadoc/ivoa-extras.css" rel="stylesheet" type="text/css"/>
19    <style type="text/css" xml:space="preserve">
20    
21  .tbw {  .tbw {
22    background: yellow;    background: yellow;
# Line 16  Line 27 
27  }  }
28    
29    
30  </style><link rel="stylesheet" type="text/css" href="http://www.ivoa.net/misc/ivoa_note.css"/></head><body>  </style>
31    <link rel="stylesheet" type="text/css" href="http://www.ivoa.net/misc/ivoa_note.css"/></head>
32    <body>
33  <div class="head">  <div class="head">
34    <div id="titlehead" style="position:relative;height:170px;width: 500px">    <div id="titlehead" style="position:relative;height:170px;width: 500px">
35      <div id="logo" style="position:absolute;width:300px;height:169px;left: 50px;top: 0px;">      <div id="logo" style="position:absolute;width:300px;height:169px;left: 50px;top: 0px;">
# Line 32  Line 45 
45    Version <span class="docversion">1.0</span></h1>    Version <span class="docversion">1.0</span></h1>
46  <h2 class="subtitle">IVOA Note  13 December 2013</h2>  <h2 class="subtitle">IVOA Note  13 December 2013</h2>
47    
48  <dl><dt>Working Group</dt><dd><a href="http://www.ivoa.net/twiki/bin/view/IVOA/IvoaGridAndWebServices" shape="rect">http://www.ivoa.net/twiki/bin/view/IVOA/IvoaGridAndWebServices</a></dd><dt><b>This version:</b></dt><dd><a class="currentlink" href="http://www.ivoa.net/documents/TAPNotes/20131213">http://www.ivoa.net/documents/TAPNotes/20131213</a></dd><dt><b>Latest version:</b></dt><dd> not issued outside DAL WG</dd><dt><b>Previous version(s):</b></dt><dd>None</dd><dt>Authors:</dt><dd>  <dl>
49      <dt>Working Group</dt>
50      <dd><a href="http://www.ivoa.net/twiki/bin/view/IVOA/IvoaGridAndWebServices" shape="rect">http://www.ivoa.net/twiki/bin/view/IVOA/IvoaGridAndWebServices</a></dd>
51      <dt><b>This version:</b></dt>
52      <dd><a class="currentlink" href="http://www.ivoa.net/documents/TAPNotes/20131213">http://www.ivoa.net/documents/TAPNotes/20131213</a></dd>
53      <dt><b>Latest version:</b></dt>
54      <dd> not issued outside DAL WG</dd>
55      <dt><b>Previous version(s):</b></dt>
56      <dd>None</dd>
57      <dt>Authors:</dt><dd>
58      <a href="http://www.ivoa.net/cgi-bin/twiki/bin/view/IVOA/MarkusDemleitner" shape="rect">Markus Demleitner</a><br clear="none"/>      <a href="http://www.ivoa.net/cgi-bin/twiki/bin/view/IVOA/MarkusDemleitner" shape="rect">Markus Demleitner</a><br clear="none"/>
59      <a href="http://www.ivoa.net/cgi-bin/twiki/bin/view/IVOA/PaulHarrison" shape="rect">Paul Harrison</a><br clear="none"/>      <a href="http://www.ivoa.net/cgi-bin/twiki/bin/view/IVOA/PaulHarrison" shape="rect">Paul Harrison</a><br clear="none"/>
60      <a href="http://www.ivoa.net/cgi-bin/twiki/bin/view/IVOA/MarkTaylor" shape="rect">Mark Taylor</a><br clear="none"/>      <a href="http://www.ivoa.net/cgi-bin/twiki/bin/view/IVOA/MarkTaylor" shape="rect">Mark Taylor</a><br clear="none"/>
61    </dd></dl>    </dd>
62    </dl>
63    
64  <h2>Abstract</h2>  <h2>Abstract</h2>
65  <p>This IVOA Note discusses several clarifications to the TAP protocol  <p>This IVOA Note discusses several clarifications to the TAP protocol
# Line 74  Line 97 
97    
98  <h2>Contents</h2>  <h2>Contents</h2>
99  <div><!--The contents of this div are automatically generated from the following processing instruction when processed with ivoarestructure.xsl-->  <div><!--The contents of this div are automatically generated from the following processing instruction when processed with ivoarestructure.xsl-->
100      <?toc?><div id="toc" class="toc"><ul><li><a href="#introduction"><span class="secnum">1. </span>Introduction</a></li><li><a href="#adql"><span class="secnum">2. </span>ADQL</a><ul><li><a href="#adql-clar"><span class="secnum">2.1. </span>ADQL: Clarifications, Errata, and Recommendations</a><ul><li><a href="#ac-sep"><span class="secnum">2.1.1. </span>The Separator Nonterminal</a></li><li><a href="#ac-typesystem"><span class="secnum">2.1.2. </span>Type System</a></li><li><a href="#ac-emptycoosys"><span class="secnum">2.1.3. </span>Empty Coordinate Systems</a></li><li><a href="#ac-geo-opt"><span class="secnum">2.1.4. </span>Explanation of optional features</a></li></ul></li><li><a href="#adql-features"><span class="secnum">2.2. </span>ADQL: Proposed New Features</a><ul><li><a href="#af-simplecrossmatch"><span class="secnum">2.2.1. </span>Simple Crossmatch Function</a></li><li><a href="#af-intersects"><span class="secnum">2.2.2. </span>No Type-based Decay of INTERSECTS</a></li><li><a href="#af-genudf"><span class="secnum">2.2.3. </span>Generalized User Defined Functions</a></li><li><a href="#af-casefolding"><span class="secnum">2.2.4. </span>Case-Insensitive String Comparisons</a></li><li><a href="#af-setops"><span class="secnum">2.2.5. </span>Set Operators</a></li><li><a href="#af-booleans"><span class="secnum">2.2.6. </span>Adding a Boolean Type</a></li><li><a href="#af-unitcast"><span class="secnum">2.2.7. </span>Casting to Unit</a></li><li><a href="#af-ucdcol"><span class="secnum">2.2.8. </span>Column References with UCD Patterns</a></li><li><a href="#af-modulo"><span class="secnum">2.2.9. </span>Modulo operator</a></li><li><a href="#af-bitwise"><span class="secnum">2.2.10. </span>Bitwise operators</a></li></ul></li></ul></li><li><a href="#uws"><span class="secnum">3. </span>UWS</a><ul><li><a href="#uws-clar"><span class="secnum">3.1. </span>UWS: Clarifications, Errata, and Recommendations</a><ul><li><a href="#uc-initpost"><span class="secnum">3.1.1. </span>Updating Parameters</a></li><li><a href="#uc-failedjobcreation"><span class="secnum">3.1.2. </span>Behaviour for Failed Job Creation</a></li></ul></li><li><a href="#uws-features"><span class="secnum">3.2. </span>UWS: Proposed New Features</a><ul><li><a href="#uf-quoteformat"><span class="secnum">3.2.1. </span>Format of Quote</a></li></ul></li></ul></li><li><a href="#tap"><span class="secnum">4. </span>TAP</a><ul><li><a href="#tap-clar"><span class="secnum">4.1. </span>TAP: Clarifications, Errata, and Recommendations</a><ul><li><a href="#tc-uploadsyntax"><span class="secnum">4.1.1. </span>Names of Uploaded Tables</a></li><li><a href="#tc-multiupload"><span class="secnum">4.1.2. </span>Multiple UPLOAD Posts</a></li><li><a href="#tc-dbregion"><span class="secnum">4.1.3. </span>Database Column Types</a></li><li><a href="#tc-size"><span class="secnum">4.1.4. </span>The size Column in TAP_SCHEMA</a></li><li><a href="#tc-errordoc"><span class="secnum">4.1.5. </span>Use of VOTable</a></li></ul></li><li><a href="#tap-features"><span class="secnum">4.2. </span>TAP: New Features</a><ul><li><a href="#tf-examples"><span class="secnum">4.2.1. </span>An examples Endpoint</a><ul><li><a href="#tf-ex-endpoint"><span class="secnum">4.2.1.1. </span>The Endpoint</a></li><li><a href="#tf-ex-content"><span class="secnum">4.2.1.2. </span>Document Content</a></li><li><a href="#tf-ex-use"><span class="secnum">4.2.1.3. </span>Intended Use</a></li><li><a href="#tf-ex-validation"><span class="secnum">4.2.1.4. </span>Validation</a></li></ul></li><li><a href="#tf-plan"><span class="secnum">4.2.2. </span>A plan Endpoint</a></li><li><a href="#tf-scaletable"><span class="secnum">4.2.3. </span>Scaleable tables Endpoint</a></li><li><a href="#tf-noasync"><span class="secnum">4.2.4. </span>Making the async Endpoint Optional</a></li><li><a href="#tf-tapschema-opt"><span class="secnum">4.2.5. </span>Making TAP_SCHEMA optional</a><ul><li><a href="#tf-tapschema-examples"><span class="secnum">4.2.5.1. </span>Examples</a><ul><li><a href="#tf-tapschema-virtual"><span class="secnum">4.2.5.1.1. </span>Virtual data</a></li><li><a href="#tf-tapschema-private"><span class="secnum">4.2.5.1.2. </span>Private data</a></li><li><a href="#tf-tapschema-nosql"><span class="secnum">4.2.5.1.3. </span>Alternative systems</a></li></ul></li></ul></li><li><a href="#tapschema-naming"><span class="secnum">4.2.6. </span>Letting TAP_SCHEMA name be custom</a></li><li><a href="#tf-meta-dyn"><span class="secnum">4.2.7. </span>Dynamic metadata</a><ul><li><a href="#tf-meta-ttl"><span class="secnum">4.2.7.1. </span>Time to live</a></li></ul></li></ul></li></ul></li><li><a href="#appA"><span class="secnum">A. </span>An Example for an /examples Document</a></li><li><a href="#appB"><span class="secnum">B. </span>An XSLT Stylesheet for Validating an examples Document</a></li><li><a href="#references"><span class="secnum"/>References</a></li></ul></div>      <?toc?><div id="toc" class="toc"><ul><li><a href="#introduction"><span class="secnum">1. </span>Introduction</a></li><li><a href="#adql"><span class="secnum">2. </span>ADQL</a><ul><li><a href="#adql-clar"><span class="secnum">2.1. </span>ADQL: Clarifications, Errata, and Recommendations</a><ul><li><a href="#ac-sep"><span class="secnum">2.1.1. </span>The Separator Nonterminal</a></li><li><a href="#ac-typesystem"><span class="secnum">2.1.2. </span>Type System</a></li><li><a href="#ac-datetime"><span class="secnum">2.1.3. </span>DATETIME</a></li><li><a href="#ac-emptycoosys"><span class="secnum">2.1.4. </span>Empty Coordinate Systems</a></li><li><a href="#ac-geo-opt"><span class="secnum">2.1.5. </span>Explanation of optional features</a></li></ul></li><li><a href="#adql-features"><span class="secnum">2.2. </span>ADQL: Proposed New Features</a><ul><li><a href="#af-simplecrossmatch"><span class="secnum">2.2.1. </span>Simple Crossmatch Function</a></li><li><a href="#af-intersects"><span class="secnum">2.2.2. </span>No Type-based Decay of INTERSECTS</a></li><li><a href="#af-genudf"><span class="secnum">2.2.3. </span>Generalized User Defined Functions</a></li><li><a href="#af-casefolding"><span class="secnum">2.2.4. </span>Case-Insensitive String Comparisons</a></li><li><a href="#af-setops"><span class="secnum">2.2.5. </span>Set Operators</a></li><li><a href="#af-booleans"><span class="secnum">2.2.6. </span>Adding a Boolean Type</a></li><li><a href="#af-unitcast"><span class="secnum">2.2.7. </span>Casting to Unit</a></li><li><a href="#af-ucdcol"><span class="secnum">2.2.8. </span>Column References with UCD Patterns</a></li><li><a href="#af-modulo"><span class="secnum">2.2.9. </span>Modulo operator</a></li><li><a href="#af-bitwise"><span class="secnum">2.2.10. </span>Bitwise operators</a></li><li><a href="#af-cast"><span class="secnum">2.2.11. </span>CAST operator</a></li></ul></li></ul></li><li><a href="#uws"><span class="secnum">3. </span>UWS</a><ul><li><a href="#uws-clar"><span class="secnum">3.1. </span>UWS: Clarifications, Errata, and Recommendations</a><ul><li><a href="#uc-initpost"><span class="secnum">3.1.1. </span>Updating Parameters</a></li><li><a href="#uc-failedjobcreation"><span class="secnum">3.1.2. </span>Behaviour for Failed Job Creation</a></li></ul></li><li><a href="#uws-features"><span class="secnum">3.2. </span>UWS: Proposed New Features</a><ul><li><a href="#uf-quoteformat"><span class="secnum">3.2.1. </span>Format of Quote</a></li></ul></li></ul></li><li><a href="#tap"><span class="secnum">4. </span>TAP</a><ul><li><a href="#tap-clar"><span class="secnum">4.1. </span>TAP: Clarifications, Errata, and Recommendations</a><ul><li><a href="#tc-uploadsyntax"><span class="secnum">4.1.1. </span>Names of Uploaded Tables</a></li><li><a href="#tc-multiupload"><span class="secnum">4.1.2. </span>Multiple UPLOAD Posts</a></li><li><a href="#tc-dbregion"><span class="secnum">4.1.3. </span>Database Column Types</a></li><li><a href="#tc-size"><span class="secnum">4.1.4. </span>The size Column in TAP_SCHEMA</a></li><li><a href="#tc-errordoc"><span class="secnum">4.1.5. </span>Use of VOTable</a></li></ul></li><li><a href="#tap-features"><span class="secnum">4.2. </span>TAP: New Features</a><ul><li><a href="#tf-examples"><span class="secnum">4.2.1. </span>An examples Endpoint</a><ul><li><a href="#tf-ex-endpoint"><span class="secnum">4.2.1.1. </span>The Endpoint</a></li><li><a href="#tf-ex-content"><span class="secnum">4.2.1.2. </span>Document Content</a></li><li><a href="#tf-ex-use"><span class="secnum">4.2.1.3. </span>Intended Use</a></li><li><a href="#tf-ex-validation"><span class="secnum">4.2.1.4. </span>Validation</a></li></ul></li><li><a href="#tf-plan"><span class="secnum">4.2.2. </span>A plan Endpoint</a></li><li><a href="#tf-scaletable"><span class="secnum">4.2.3. </span>Scaleable tables Endpoint</a></li><li><a href="#tf-noasync"><span class="secnum">4.2.4. </span>Making the async Endpoint Optional</a></li><li><a href="#tf-tapschema-opt"><span class="secnum">4.2.5. </span>Making TAP_SCHEMA optional</a><ul><li><a href="#tf-tapschema-examples"><span class="secnum">4.2.5.1. </span>Examples</a><ul><li><a href="#tf-tapschema-virtual"><span class="secnum">4.2.5.1.1. </span>Virtual data</a></li><li><a href="#tf-tapschema-private"><span class="secnum">4.2.5.1.2. </span>Private data</a></li><li><a href="#tf-tapschema-nosql"><span class="secnum">4.2.5.1.3. </span>Alternative systems</a></li></ul></li></ul></li><li><a href="#tapschema-naming"><span class="secnum">4.2.6. </span>Letting TAP_SCHEMA name be custom</a></li><li><a href="#tf-meta-dyn"><span class="secnum">4.2.7. </span>Dynamic metadata</a><ul><li><a href="#tf-meta-ttl"><span class="secnum">4.2.7.1. </span>Time to live</a></li></ul></li></ul></li></ul></li><li><a href="#appA"><span class="secnum">A. </span>An Example for an /examples Document</a></li><li><a href="#appB"><span class="secnum">B. </span>An XSLT Stylesheet for Validating an examples Document</a></li><li><a href="#references"><span class="secnum"/>References</a></li></ul></div>
101      <!--end of autogenerated content--></div>      <!--end of autogenerated content--></div>
102    
103  <div class="body">  <div class="body">
# Line 176  Line 199 
199  operator || should be applicable to all columns resulting from VOTable  operator || should be applicable to all columns resulting from VOTable
200  char-typed columns.</p>  char-typed columns.</p>
201    
202  <table border="1"><tr><th colspan="3" rowspan="1">VOTable</th><th rowspan="1" colspan="1">ADQL</th></tr><tr><th rowspan="1" colspan="1">datatype</th><th rowspan="1" colspan="1">arraysize</th><th rowspan="1" colspan="1">xtype</th><th rowspan="1" colspan="1">type</th></tr><tr><td rowspan="1" colspan="1">boolean</td><td rowspan="1" colspan="1">1</td><td rowspan="1" colspan="1"/><td rowspan="1" colspan="1">implemenation defined</td></tr><tr><td rowspan="1" colspan="1">short</td><td rowspan="1" colspan="1">1</td><td rowspan="1" colspan="1"/><td rowspan="1" colspan="1">SMALLINT</td></tr><tr><td rowspan="1" colspan="1">int</td><td rowspan="1" colspan="1">1</td><td rowspan="1" colspan="1"/><td rowspan="1" colspan="1">INTEGER</td></tr><tr><td rowspan="1" colspan="1">long</td><td rowspan="1" colspan="1">1</td><td rowspan="1" colspan="1"/><td rowspan="1" colspan="1">BIGINT</td></tr><tr><td rowspan="1" colspan="1">float</td><td rowspan="1" colspan="1">1</td><td rowspan="1" colspan="1"/><td rowspan="1" colspan="1">REAL</td></tr><tr><td rowspan="1" colspan="1">double</td><td rowspan="1" colspan="1">1</td><td rowspan="1" colspan="1"/><td rowspan="1" colspan="1">DOUBLE</td></tr><tr><td rowspan="1" colspan="1">(numeric)</td><td rowspan="1" colspan="1">&gt; 1</td><td rowspan="1" colspan="1"/><td rowspan="1" colspan="1">  <table border="1">
203  implementation defined</td></tr><tr><td rowspan="1" colspan="1">char</td><td rowspan="1" colspan="1">1</td><td rowspan="1" colspan="1"/><td rowspan="1" colspan="1">CHAR(1)</td></tr><tr><td rowspan="1" colspan="1">char</td><td rowspan="1" colspan="1">n*</td><td rowspan="1" colspan="1"/><td rowspan="1" colspan="1">VARCHAR(n)</td></tr><tr><td rowspan="1" colspan="1">char</td><td rowspan="1" colspan="1">n</td><td rowspan="1" colspan="1"/><td rowspan="1" colspan="1">CHAR(n)</td></tr><tr><td rowspan="1" colspan="1">unsignedByte</td><td rowspan="1" colspan="1">n*</td><td rowspan="1" colspan="1"/><td rowspan="1" colspan="1">VARBINARY(n)</td></tr><tr><td rowspan="1" colspan="1">unsignedByte</td><td rowspan="1" colspan="1">n</td><td rowspan="1" colspan="1"/><td rowspan="1" colspan="1">BINARY(n)</td></tr><tr><td rowspan="1" colspan="1">unsignedByte</td><td rowspan="1" colspan="1">n, *,  <tr><th colspan="3" rowspan="1">VOTable</th><th rowspan="1" colspan="1">ADQL</th></tr>
204  n*</td><td rowspan="1" colspan="1">adql:BLOB</td><td rowspan="1" colspan="1">BLOB</td></tr><tr><td rowspan="1" colspan="1">char</td><td rowspan="1" colspan="1">n, *, n*</td><td rowspan="1" colspan="1">adql:CLOB</td><td rowspan="1" colspan="1">CLOB</td></tr><tr><td rowspan="1" colspan="1">char</td><td rowspan="1" colspan="1">n, *,  <tr><th rowspan="1" colspan="1">datatype</th><th rowspan="1" colspan="1">arraysize</th><th rowspan="1" colspan="1">xtype</th>
205  n*</td><td rowspan="1" colspan="1">adql:TIMESTAMP</td><td rowspan="1" colspan="1">TIMESTAMP</td></tr><tr><td rowspan="1" colspan="1">char</td><td rowspan="1" colspan="1">n, *, n*</td><td rowspan="1" colspan="1">adql:POINT</td><td rowspan="1" colspan="1">POINT</td></tr><tr><td rowspan="1" colspan="1">char</td><td rowspan="1" colspan="1">n, *,  <th rowspan="1" colspan="1">type</th></tr>
206  n*</td><td rowspan="1" colspan="1">adql:REGION</td><td rowspan="1" colspan="1">REGION</td></tr></table>  <tr><td rowspan="1" colspan="1">boolean</td><td rowspan="1" colspan="1">1</td><td rowspan="1" colspan="1"/><td rowspan="1" colspan="1">implemenation defined</td></tr>
207    <tr><td rowspan="1" colspan="1">short</td><td rowspan="1" colspan="1">1</td><td rowspan="1" colspan="1"/><td rowspan="1" colspan="1">SMALLINT</td></tr>
208    <tr><td rowspan="1" colspan="1">int</td><td rowspan="1" colspan="1">1</td><td rowspan="1" colspan="1"/><td rowspan="1" colspan="1">INTEGER</td></tr>
209    <tr><td rowspan="1" colspan="1">long</td><td rowspan="1" colspan="1">1</td><td rowspan="1" colspan="1"/><td rowspan="1" colspan="1">BIGINT</td></tr>
210    <tr><td rowspan="1" colspan="1">float</td><td rowspan="1" colspan="1">1</td><td rowspan="1" colspan="1"/><td rowspan="1" colspan="1">REAL</td></tr>
211    <tr><td rowspan="1" colspan="1">double</td><td rowspan="1" colspan="1">1</td><td rowspan="1" colspan="1"/><td rowspan="1" colspan="1">DOUBLE</td></tr>
212    <tr><td rowspan="1" colspan="1">(numeric)</td><td rowspan="1" colspan="1">&gt; 1</td><td rowspan="1" colspan="1"/><td rowspan="1" colspan="1">
213    implementation defined</td></tr>
214    <tr><td rowspan="1" colspan="1">char</td><td rowspan="1" colspan="1">1</td><td rowspan="1" colspan="1"/><td rowspan="1" colspan="1">CHAR(1)</td></tr>
215    <tr><td rowspan="1" colspan="1">char</td><td rowspan="1" colspan="1">n*</td><td rowspan="1" colspan="1"/><td rowspan="1" colspan="1">VARCHAR(n)</td></tr>
216    <tr><td rowspan="1" colspan="1">char</td><td rowspan="1" colspan="1">n</td><td rowspan="1" colspan="1"/><td rowspan="1" colspan="1">CHAR(n)</td></tr>
217    <tr><td rowspan="1" colspan="1">unsignedByte</td><td rowspan="1" colspan="1">n*</td><td rowspan="1" colspan="1"/><td rowspan="1" colspan="1">VARBINARY(n)</td></tr>
218    <tr><td rowspan="1" colspan="1">unsignedByte</td><td rowspan="1" colspan="1">n</td><td rowspan="1" colspan="1"/><td rowspan="1" colspan="1">BINARY(n)</td></tr>
219    
220    <tr><td rowspan="1" colspan="1">unsignedByte</td><td rowspan="1" colspan="1">n, *,
221    n*</td><td rowspan="1" colspan="1">adql:BLOB</td><td rowspan="1" colspan="1">BLOB</td></tr>
222    <tr><td rowspan="1" colspan="1">char</td><td rowspan="1" colspan="1">n, *, n*</td><td rowspan="1" colspan="1">adql:CLOB</td><td rowspan="1" colspan="1">CLOB</td></tr>
223    <tr><td rowspan="1" colspan="1">char</td><td rowspan="1" colspan="1">n, *,
224    n*</td><td rowspan="1" colspan="1">adql:TIMESTAMP</td><td rowspan="1" colspan="1">TIMESTAMP</td></tr>
225    <tr><td rowspan="1" colspan="1">char</td><td rowspan="1" colspan="1">n, *, n*</td><td rowspan="1" colspan="1">adql:POINT</td><td rowspan="1" colspan="1">POINT</td></tr>
226    <tr><td rowspan="1" colspan="1">char</td><td rowspan="1" colspan="1">n, *,
227    n*</td><td rowspan="1" colspan="1">adql:REGION</td><td rowspan="1" colspan="1">REGION</td></tr>
228    </table>
229    
230  <p>"Implementation defined" in the above table means that an  <p>"Implementation defined" in the above table means that an
231  implementation is free to reject attempts to (de-) serialize values in  implementation is free to reject attempts to (de-) serialize values in
# Line 197  Line 242 
242    
243  </div> <!-- subsubsection ac-typesystem -->  </div> <!-- subsubsection ac-typesystem -->
244    
245    <div class="section"><h4><a id="ac-datetime" shape="rect"><span class="secnum">2.1.3. </span>DATETIME</a></h4>
246    <p>
247    The term <code>TIMESTAMP</code> has additional meanings above and beyond the simple meaning of a date and time,
248    some of which impose additional constraints on the range of values that can be represented.
249    <ul>
250        <li>
251            <a href="http://en.wikipedia.org/wiki/Unix_time" shape="rect">Unix TIMESTAMP</a>, number of seconds since 1st January 1970.
252        </li>
253        <li>
254            <a href="http://dev.mysql.com/doc/refman/5.0/en/datetime.html" shape="rect">MySQL TIMESTAMP</a>, 1st January 1970 to 19th January 2038,
255        </li>
256        <li>
257            <a href="http://technet.microsoft.com/en-us/library/aa260631%28v=sql.80%29.aspx" shape="rect">SQLServer TIMESTAMP</a>, server generated binary number, NOT a date time.
258        </li>
259    </ul>
260    </p>
261    <p>
262    With this in mind we would like to propose replacing the terms
263    <code>TIMESTAMP</code> and <code>ADQL:TIMESTAMP</code>
264    in the preceeding section with <code>DATETIME</code>
265    and <code>ADQL:DATETIME</code>.
266    </p>
267    </div> <!-- subsubsection ac-datetime -->
268    
269  <div class="section"><h4><a id="ac-emptycoosys" shape="rect"><span class="secnum">2.1.3. </span>Empty Coordinate Systems</a></h4>  <div class="section"><h4><a id="ac-emptycoosys" shape="rect"><span class="secnum">2.1.4. </span>Empty Coordinate Systems</a></h4>
270    
271  <p>The legal values and the semantics of the first arguments to the  <p>The legal values and the semantics of the first arguments to the
272  geometry constructors (POINT, BOX, CIRCLE, POLYGON) have been left  geometry constructors (POINT, BOX, CIRCLE, POLYGON) have been left
# Line 249  Line 317 
317    
318  </div> <!-- subsubsection adql-emptycoosys -->  </div> <!-- subsubsection adql-emptycoosys -->
319    
320  <div class="section"><h4><a id="ac-geo-opt" shape="rect"><span class="secnum">2.1.4. </span>Explanation of optional features</a></h4>  <div class="section"><h4><a id="ac-geo-opt" shape="rect"><span class="secnum">2.1.5. </span>Explanation of optional features</a></h4>
321  <p>  <p>
322  We would like to propose adding a section of text to both the  We would like to propose adding a section of text to both the
323  <cite>[<a href="#std:TAP">std:TAP</a>]</cite> and <cite>[<a href="#std:ADQL">std:ADQL</a>]</cite> specifications that  <cite>[<a href="#std:TAP">std:TAP</a>]</cite> and <cite>[<a href="#std:ADQL">std:ADQL</a>]</cite> specifications that
# Line 261  Line 329 
329  </p>  </p>
330  <p>  <p>
331  In the current release documents  In the current release documents
332  <ul><li>Section 1.2.1 of <cite>[<a href="#std:TAP-20100327">std:TAP-20100327</a>]</cite> states that  <ul>
333        <li>Section 1.2.1 of <cite>[<a href="#std:TAP-20100327">std:TAP-20100327</a>]</cite> states that
334      <em>"Support for ADQL queries is mandatory"</em>.      <em>"Support for ADQL queries is mandatory"</em>.
335      </li><li>Section 2.4 of <cite>[<a href="#std:ADQL-20081030">std:ADQL-20081030</a>]</cite>      </li>
336        <li>Section 2.4 of <cite>[<a href="#std:ADQL-20081030">std:ADQL-20081030</a>]</cite>
337          describes the geometric functions, and section 2.5 describes support for user defined functions.          describes the geometric functions, and section 2.5 describes support for user defined functions.
338      </li></ul>      </li>
339    </ul>
340  However, the current <cite>[<a href="#std:TAP-20100327">std:TAP-20100327</a>]</cite> and  However, the current <cite>[<a href="#std:TAP-20100327">std:TAP-20100327</a>]</cite> and
341  <cite>[<a href="#std:ADQL-20081030">std:ADQL-20081030</a>]</cite> specifications do not describe how  <cite>[<a href="#std:ADQL-20081030">std:ADQL-20081030</a>]</cite> specifications do not describe how
342  <code>tr:languageFeatures</code> elements from the  <code>tr:languageFeatures</code> elements from the
# Line 289  Line 360 
360  references and examples.  references and examples.
361  </p>  </p>
362  </div> <!-- subsubsection ac-geo-opt -->  </div> <!-- subsubsection ac-geo-opt -->
 </div> <!-- subsection adql-clar -->  
363    
364    </div> <!-- subsection adql-clar -->
365  <div class="section"><h3><a id="adql-features" shape="rect"><span class="secnum">2.2. </span>ADQL: Proposed New Features</a></h3>  <div class="section"><h3><a id="adql-features" shape="rect"><span class="secnum">2.2. </span>ADQL: Proposed New Features</a></h3>
366    
367  <div class="section"><h4><a id="af-simplecrossmatch" shape="rect"><span class="secnum">2.2.1. </span>Simple Crossmatch Function</a></h4>  <div class="section"><h4><a id="af-simplecrossmatch" shape="rect"><span class="secnum">2.2.1. </span>Simple Crossmatch Function</a></h4>
# Line 525  Line 596 
596  <p>  <p>
597  Many of the poular RDBMS platforms support both the <code>MOD(x,y)</code>  Many of the poular RDBMS platforms support both the <code>MOD(x,y)</code>
598  function and the <code>x % y</code> operator syntax.  function and the <code>x % y</code> operator syntax.
599  <ul><li>  <ul>
600        <li>
601          <a href="http://www.postgresql.org/docs/9.3/static/functions-math.html" shape="rect">PostgreSQL</a>          <a href="http://www.postgresql.org/docs/9.3/static/functions-math.html" shape="rect">PostgreSQL</a>
602      </li><li>      </li>
603        <li>
604          <a href="https://dev.mysql.com/doc/refman/5.7/en/arithmetic-functions.html#operator_mod" shape="rect">MySQL</a>          <a href="https://dev.mysql.com/doc/refman/5.7/en/arithmetic-functions.html#operator_mod" shape="rect">MySQL</a>
605      </li><li>      </li>
606        <li>
607          <a href="https://mariadb.com/kb/en/modulo-operator/" shape="rect">MariaDB</a>          <a href="https://mariadb.com/kb/en/modulo-operator/" shape="rect">MariaDB</a>
608      </li><li>      </li>
609        <li>
610          <a href="https://www.sqlite.org/lang_expr.html" shape="rect">SQLite</a>          <a href="https://www.sqlite.org/lang_expr.html" shape="rect">SQLite</a>
611      </li><li>      </li>
612        <li>
613          <a href="http://technet.microsoft.com/en-us/library/ms190279.aspx" shape="rect">SQLServer</a>          <a href="http://technet.microsoft.com/en-us/library/ms190279.aspx" shape="rect">SQLServer</a>
614      </li></ul>      </li>
615    </ul>
616  </p>  </p>
617  <p>  <p>
618  However, we are aware that some platforms only support the <code>MOD(x,y)</code>  However, we are aware that some platforms only support the <code>MOD(x,y)</code>
619  function syntax and not the <code>x % y</code> operator.  function syntax and not the <code>x % y</code> operator.
620  <ul><li>  <ul>
621        <li>
622          <a href="https://db.apache.org/derby/docs/10.10/ref/rrefsqlj19433.html" shape="rect">Derby</a>          <a href="https://db.apache.org/derby/docs/10.10/ref/rrefsqlj19433.html" shape="rect">Derby</a>
623      </li><li>      </li>
624        <li>
625          <a href="http://hsqldb.org/doc/guide/builtinfunctions-chapt.html#bfc_numeric_functions" shape="rect">HyperSQL</a>          <a href="http://hsqldb.org/doc/guide/builtinfunctions-chapt.html#bfc_numeric_functions" shape="rect">HyperSQL</a>
626      </li><li>      </li>
627        <li>
628          <a href="http://www.techonthenet.com/oracle/functions/mod.php" shape="rect">Oracle</a>          <a href="http://www.techonthenet.com/oracle/functions/mod.php" shape="rect">Oracle</a>
629      </li></ul>      </li>
630    </ul>
631  Adding the <code>x % y</code> operator syntax to ADQL  Adding the <code>x % y</code> operator syntax to ADQL
632  would mean that some platforms would need translate the ADQL <code>x % y</code>  would mean that some platforms would need translate the ADQL <code>x % y</code>
633  operator syntax into the <code>MOD(x,y)</code> function syntax.  operator syntax into the <code>MOD(x,y)</code> function syntax.
# Line 613  Line 694 
694  However, some platforms only provide a limited set of bitwise operators.  However, some platforms only provide a limited set of bitwise operators.
695  </p>  </p>
696  <p>  <p>
697  <table border="1"><tr><th rowspan="1" colspan="1">Platform</th><th rowspan="1" colspan="1">BIT_AND</th><th rowspan="1" colspan="1">BIT_OR</th><th rowspan="1" colspan="1">BIT_XOR</th><th rowspan="1" colspan="1">BIT_NOT</th></tr><tr><td rowspan="1" colspan="1">  <table border="1">
698        <tr>
699            <th rowspan="1" colspan="1">Platform</th>
700            <th rowspan="1" colspan="1">BIT_AND</th>
701            <th rowspan="1" colspan="1">BIT_OR</th>
702            <th rowspan="1" colspan="1">BIT_XOR</th>
703            <th rowspan="1" colspan="1">BIT_NOT</th>
704        </tr>
705        <tr>
706            <td rowspan="1" colspan="1">
707              <a href="http://www.postgresql.org/docs/9.3/static/functions-math.html" shape="rect">PostgreSQL</a>              <a href="http://www.postgresql.org/docs/9.3/static/functions-math.html" shape="rect">PostgreSQL</a>
708          </td><td rowspan="1" colspan="1">YES</td><td rowspan="1" colspan="1">YES</td><td rowspan="1" colspan="1">YES</td><td rowspan="1" colspan="1">YES</td></tr><tr><td rowspan="1" colspan="1">          </td>
709            <td rowspan="1" colspan="1">YES</td>
710            <td rowspan="1" colspan="1">YES</td>
711            <td rowspan="1" colspan="1">YES</td>
712            <td rowspan="1" colspan="1">YES</td>
713        </tr>
714        <tr>
715            <td rowspan="1" colspan="1">
716              <a href="https://dev.mysql.com/doc/refman/5.7/en/bit-functions.html" shape="rect">MySQL</a>              <a href="https://dev.mysql.com/doc/refman/5.7/en/bit-functions.html" shape="rect">MySQL</a>
717          </td><td rowspan="1" colspan="1">YES</td><td rowspan="1" colspan="1">YES</td><td rowspan="1" colspan="1">YES</td><td rowspan="1" colspan="1">YES</td></tr><tr><td rowspan="1" colspan="1">          </td>
718            <td rowspan="1" colspan="1">YES</td>
719            <td rowspan="1" colspan="1">YES</td>
720            <td rowspan="1" colspan="1">YES</td>
721            <td rowspan="1" colspan="1">YES</td>
722        </tr>
723        <tr>
724            <td rowspan="1" colspan="1">
725              <a href="https://mariadb.com/kb/en/bit-functions-and-operators/" shape="rect">MariaDB</a>              <a href="https://mariadb.com/kb/en/bit-functions-and-operators/" shape="rect">MariaDB</a>
726          </td><td rowspan="1" colspan="1">YES</td><td rowspan="1" colspan="1">YES</td><td rowspan="1" colspan="1">YES</td><td rowspan="1" colspan="1">YES</td></tr><tr><td rowspan="1" colspan="1">          </td>
727            <td rowspan="1" colspan="1">YES</td>
728            <td rowspan="1" colspan="1">YES</td>
729            <td rowspan="1" colspan="1">YES</td>
730            <td rowspan="1" colspan="1">YES</td>
731        </tr>
732        <tr>
733            <td rowspan="1" colspan="1">
734              <a href="http://hsqldb.org/doc/guide/builtinfunctions-chapt.html#bfc_numeric_functions" shape="rect">HyperSQL</a>              <a href="http://hsqldb.org/doc/guide/builtinfunctions-chapt.html#bfc_numeric_functions" shape="rect">HyperSQL</a>
735          </td><td rowspan="1" colspan="1">YES</td><td rowspan="1" colspan="1">YES</td><td rowspan="1" colspan="1">YES</td><td rowspan="1" colspan="1">YES</td></tr><tr><td rowspan="1" colspan="1">          </td>
736            <td rowspan="1" colspan="1">YES</td>
737            <td rowspan="1" colspan="1">YES</td>
738            <td rowspan="1" colspan="1">YES</td>
739            <td rowspan="1" colspan="1">YES</td>
740        </tr>
741        <tr>
742            <td rowspan="1" colspan="1">
743              <a href="http://technet.microsoft.com/en-us/library/ms176122.aspx" shape="rect">SQLServer</a>              <a href="http://technet.microsoft.com/en-us/library/ms176122.aspx" shape="rect">SQLServer</a>
744          </td><td rowspan="1" colspan="1">YES</td><td rowspan="1" colspan="1">YES</td><td rowspan="1" colspan="1">YES</td><td rowspan="1" colspan="1">YES</td></tr><tr><td rowspan="1" colspan="1">          </td>
745            <td rowspan="1" colspan="1">YES</td>
746            <td rowspan="1" colspan="1">YES</td>
747            <td rowspan="1" colspan="1">YES</td>
748            <td rowspan="1" colspan="1">YES</td>
749        </tr>
750        <tr>
751            <td rowspan="1" colspan="1">
752              <a href="https://www.sqlite.org/lang_expr.html" shape="rect">SQLite</a>              <a href="https://www.sqlite.org/lang_expr.html" shape="rect">SQLite</a>
753          </td><td rowspan="1" colspan="1">YES</td><td rowspan="1" colspan="1">YES</td><td rowspan="1" colspan="1"><strong>NO</strong></td><td rowspan="1" colspan="1">YES</td></tr><tr><td rowspan="1" colspan="1">          </td>
754            <td rowspan="1" colspan="1">YES</td>
755            <td rowspan="1" colspan="1">YES</td>
756            <td rowspan="1" colspan="1"><strong>NO</strong></td>
757            <td rowspan="1" colspan="1">YES</td>
758        </tr>
759        <tr>
760            <td rowspan="1" colspan="1">
761              <a href="http://www.techonthenet.com/oracle/functions/bitand.php" shape="rect">Oracle</a>              <a href="http://www.techonthenet.com/oracle/functions/bitand.php" shape="rect">Oracle</a>
762          </td><td rowspan="1" colspan="1">YES</td><td rowspan="1" colspan="1"><strong>NO</strong></td><td rowspan="1" colspan="1"><strong>NO</strong></td><td rowspan="1" colspan="1"><strong>NO</strong></td></tr><tr><td rowspan="1" colspan="1">          </td>
763            <td rowspan="1" colspan="1">YES</td>
764            <td rowspan="1" colspan="1"><strong>NO</strong></td>
765            <td rowspan="1" colspan="1"><strong>NO</strong></td>
766            <td rowspan="1" colspan="1"><strong>NO</strong></td>
767        </tr>
768        <tr>
769            <td rowspan="1" colspan="1">
770              <a href="https://db.apache.org/derby/docs/10.10/ref/rrefsqlj55788.html" shape="rect">Derby</a>              <a href="https://db.apache.org/derby/docs/10.10/ref/rrefsqlj55788.html" shape="rect">Derby</a>
771          </td><td rowspan="1" colspan="1"><strong>NO</strong></td><td rowspan="1" colspan="1"><strong>NO</strong></td><td rowspan="1" colspan="1"><strong>NO</strong></td><td rowspan="1" colspan="1"><strong>NO</strong></td></tr></table>          </td>
772            <td rowspan="1" colspan="1"><strong>NO</strong></td>
773            <td rowspan="1" colspan="1"><strong>NO</strong></td>
774            <td rowspan="1" colspan="1"><strong>NO</strong></td>
775            <td rowspan="1" colspan="1"><strong>NO</strong></td>
776        </tr>
777    </table>
778  </p>  </p>
779  <p>  <p>
780  Given that support for the bitwise operators is not universal, it may be  Given that support for the bitwise operators is not universal, it may be
781  necessary to define the bitwise operators as ADQL functions rather  necessary to define the bitwise operators as ADQL functions in addition to
782  than as operators.  the bitwise operators.
783  </p>  </p>
784  <p>  <p>
785  <pre xml:space="preserve">  <pre xml:space="preserve">
# Line 645  Line 790 
790  </pre>  </pre>
791  </p>  </p>
792  <p>  <p>
793  In which case we should also define a new <code>feature</code> in the  We can also define a <code>feature</code> in the <cite>[<a href="#std:TAPREGEXT">std:TAPREGEXT</a>]</cite>
794  <cite>[<a href="#std:TAPREGEXT">std:TAPREGEXT</a>]</cite> specification to describe which of the  specification, <code>features-bitwise</code>, to describe which of the
795  bitwise functions a service implements, similar to the  bitwise functions a service implements, similar to the
796  <code>features-adqlgeo</code> feature defined for the geometric functions.  <code>features-adqlgeo</code> feature defined for the geometric
797    functions.
798    </p>
799    <p>
800    The meaning of the <code>features-bitwise</code> feature would cover both
801    the function syntax and the corresponding operator syntax.
802    </p>
803    <p>
804    So, a registration entry that declares support for the bitwise AND function
805    <pre xml:space="preserve">
806        BIT_AND(x, y)
807    </pre>
808    would also imply support for the bitwise AND operator.
809    <pre xml:space="preserve">
810        x &amp; y
811    </pre>
812  </p>  </p>
813  </div> <!-- subsubsection af-bitwise -->  </div> <!-- subsubsection af-bitwise -->
814    
815    <div class="section"><h4><a id="af-cast" shape="rect"><span class="secnum">2.2.11. </span>CAST operator</a></h4>
816    <p>
817    There are a number of cases where our scientists use the CAST operator
818    to control the type, size and precision of numerical values.
819    </p>
820    <p>
821    An example of this is a query described in
822    <a href="http://adsabs.harvard.edu/abs/2008MNRAS.384..637H" shape="rect">Hambly et al 2008,MNRAS,384,637–662</a>
823    which is useful for summarizing the contents of a selection and 'binning' the data.
824    <pre xml:space="preserve">
825        SELECT
826            COUNT(*) AS num
827            CAST(ROUND(l * 6.0, 0) AS INT) / 6.0 AS lon,
828            CAST(ROUND(b * 6.0, 0) AS INT) / 6.0 AS lat
829        FROM
830            gpsSource
831        WHERE
832            k_1Class BETWEEN −2 AND −1
833        AND
834            k_1ppErrBits &lt; 256
835        AND
836            (priOrSec = 0 OR priOrSec = frameSetID)
837        GROUP BY
838            CAST(ROUND(l * 6.0, 0) AS INT) / 6.0,
839            CAST(ROUND(b * 6.0, 0) AS INT) / 6.0
840    </pre>
841    </p>
842    <p>
843    With this use case in mind we would like to propose adding a limited version of the CAST operator to the ADQL language.
844    <pre xml:space="preserve">
845        CAST(&lt;numeric&gt; AS &lt;type&gt;)
846    </pre>
847    </p>
848    <p>
849    Note that the proposed syntax is slightly different to that of a normal ADQL function,
850    using <code>AS</code> rather than a comma as the separator, and a fixed enumeration of
851    types for the second parameter which would cover just the standard numeric types
852    <pre xml:space="preserve">
853        "SMALLINT" | "SHORT" | "INT" | "INTEGER" | "BIGINT" | "LONG" | "FLOAT" | "DOUBLE"
854    </pre>
855    </p>
856    <p>
857    The propsed <code>CAST(x AS &lt;type&gt;)</code> syntax is similar that used in many of the standard RDBMS.
858    <ul>
859        <li>
860            <a href="http://www.postgresql.org/docs/9.3/static/sql-expressions.html#SQL-SYNTAX-TYPE-CASTS" shape="rect">PostgreSQL</a>
861        </li>
862        <li>
863            <a href="https://dev.mysql.com/doc/refman/5.7/en/cast-functions.html#function_cast" shape="rect">MySQL</a>
864        </li>
865        <li>
866            <a href="http://msdn.microsoft.com/en-us/library/ms187928.aspx" shape="rect">SQLServer</a>
867        </li>
868        <li>
869            <a href="https://db.apache.org/derby/docs/10.2/ref/rrefsqlj33562.html" shape="rect">Apache Derby</a>
870        </li>
871        <li>
872            <a href="http://www.sqlite.org/lang_expr.html" shape="rect">SQLite</a>
873        </li>
874        <li>
875            <a href="http://www.techonthenet.com/oracle/functions/cast.php" shape="rect">Oracle</a>
876        </li>
877    </ul>
878    </p>
879    <p>
880    The proposed change does not aim to replicate the full functionality
881    and range of types provided by the different RDBMS implementations
882    of CAST. In particular we are not proposing to support <code>CHAR</code>,
883    <code>VARCHAR</code> or <code>DATETIME</code> conversions.
884    </p>
885    <p>
886    The aim of the proposed change is just to cover the primary use case of
887    provding a mechanism for converting between the standard numeric types.
888    <table>
889        <tr>
890            <th rowspan="1" colspan="1">&nbsp;</th>
891            <th rowspan="1" colspan="1">SHORT</th>
892            <th rowspan="1" colspan="1">INTEGER</th>
893            <th rowspan="1" colspan="1">LONG</th>
894            <th rowspan="1" colspan="1">FLOAT</th>
895            <th rowspan="1" colspan="1">DOUBLE</th>
896        </tr>
897        <tr>
898            <th rowspan="1" colspan="1">SHORT</th>
899            <td rowspan="1" colspan="1">-</td>
900            <td rowspan="1" colspan="1">Y</td>
901            <td rowspan="1" colspan="1">Y</td>
902            <td rowspan="1" colspan="1">Y</td>
903            <td rowspan="1" colspan="1">Y</td>
904        </tr>
905        <tr>
906            <th rowspan="1" colspan="1">INTEGER</th>
907            <td rowspan="1" colspan="1">Y</td>
908            <td rowspan="1" colspan="1">-</td>
909            <td rowspan="1" colspan="1">Y</td>
910            <td rowspan="1" colspan="1">Y</td>
911            <td rowspan="1" colspan="1">Y</td>
912        </tr>
913        <tr>
914            <th rowspan="1" colspan="1">LONG</th>
915            <td rowspan="1" colspan="1">Y</td>
916            <td rowspan="1" colspan="1">Y</td>
917            <td rowspan="1" colspan="1">-</td>
918            <td rowspan="1" colspan="1">Y</td>
919            <td rowspan="1" colspan="1">Y</td>
920        </tr>
921        <tr>
922            <th rowspan="1" colspan="1">FLOAT</th>
923            <td rowspan="1" colspan="1">Y</td>
924            <td rowspan="1" colspan="1">Y</td>
925            <td rowspan="1" colspan="1">Y</td>
926            <td rowspan="1" colspan="1">-</td>
927            <td rowspan="1" colspan="1">Y</td>
928        </tr>
929        <tr>
930            <th rowspan="1" colspan="1">DOUBLE</th>
931            <td rowspan="1" colspan="1">Y</td>
932            <td rowspan="1" colspan="1">Y</td>
933            <td rowspan="1" colspan="1">Y</td>
934            <td rowspan="1" colspan="1">Y</td>
935            <td rowspan="1" colspan="1">-</td>
936        </tr>
937    </table>
938    </p>
939    </div> <!-- subsubsection af-cast -->
940  </div> <!-- subsection adql-features -->  </div> <!-- subsection adql-features -->
941  </div> <!-- section adql -->  </div> <!-- section adql -->
942    
# Line 838  Line 1124 
1124  <cite>[<a href="#std:TAP">std:TAP</a>]</cite>:</p>  <cite>[<a href="#std:TAP">std:TAP</a>]</cite>:</p>
1125    
1126    
1127  <table><tr><th rowspan="1" colspan="1">Current</th><th rowspan="1" colspan="1">New</th></tr><tr><td rowspan="1" colspan="1">  <table>
1128    <tr><th rowspan="1" colspan="1">Current</th><th rowspan="1" colspan="1">New</th></tr>
1129    <tr>
1130    <td rowspan="1" colspan="1">
1131  The VOTable must contain a RESOURCE element identified with the  The VOTable must contain a RESOURCE element identified with the
1132  attribute type='results', containing a single TABLE element with the  attribute type='results', containing a single TABLE element with the
1133  results of the query.</td><td rowspan="1" colspan="1">  results of the query.</td>
1134    <td rowspan="1" colspan="1">
1135  The VOTable must contain a RESOURCE element identified with the  The VOTable must contain a RESOURCE element identified with the
1136  attribute type='results', containing exactly one TABLE element with the  attribute type='results', containing exactly one TABLE element with the
1137  results of the query if the job execution was successful or no TABLE  results of the query if the job execution was successful or no TABLE
1138  element if the job execution failed to produce a result.</td></tr><tr><td rowspan="1" colspan="1">The RESOURCE element must contain, before the TABLE element, an INFO  element if the job execution failed to produce a result.</td>
1139  element with attribute name = "QUERY_STATUS".  The value attribute must contain one of the following values:</td><td rowspan="1" colspan="1">The RESOURCE element must contain an INFO  </tr>
1140    <tr>
1141    <td rowspan="1" colspan="1">The RESOURCE element must contain, before the TABLE element, an INFO
1142    element with attribute name = "QUERY_STATUS".  The value attribute must contain one of the following values:</td>
1143    <td rowspan="1" colspan="1">The RESOURCE element must contain an INFO
1144  element with attribute <code>name="QUERY_STATUS"</code> indicating the  element with attribute <code>name="QUERY_STATUS"</code> indicating the
1145  success of the operation.  For RESOURCE elements  success of the operation.  For RESOURCE elements
1146  that contain a TABLE element, this INFO element must appear lexically  that contain a TABLE element, this INFO element must appear lexically
1147  before the TABLE.  The following values are defined for this INFO  before the TABLE.  The following values are defined for this INFO
1148  element's value attribute:</td></tr></table>  element's value attribute:</td>
1149    </tr>
1150    </table>
1151    
1152    
1153    
# Line 921  Line 1217 
1217  writing the DALI PR has "DALI#examples" here, which we corrected here)  writing the DALI PR has "DALI#examples" here, which we corrected here)
1218  vocabulary:</p>  vocabulary:</p>
1219    
1220  <ul><li><code>query</code> --  <ul>
1221    <li><code>query</code> --
1222  each example MUST have a unique child  each example MUST have a unique child
1223  element with simple text content having a <code>property</code>  element with simple text content having a <code>property</code>
1224  attribute valued <code>query</code>.  It contains the query itself,  attribute valued <code>query</code>.  It contains the query itself,
1225  preferably with extra whitespace for easy human consumption and editing.  preferably with extra whitespace for easy human consumption and editing.
1226  This will usually be a HTML <code>pre</code> element.</li><li><code>table</code> -- examples MAY also have descendants with  This will usually be a HTML <code>pre</code> element.</li>
1227    
1228    <li><code>table</code> -- examples MAY also have descendants with
1229  <code>property</code> attributes having the value  <code>property</code> attributes having the value
1230  <code>table</code>.  These must have pure text content and  <code>table</code>.  These must have pure text content and
1231  contain fully qualified table names to which the query is somehow  contain fully qualified table names to which the query is somehow
1232  "pertaining".  Suitable HTML elements holding these include  "pertaining".  Suitable HTML elements holding these include
1233  <code>span</code>, or <code>a</code> (which would  <code>span</code>, or <code>a</code> (which would
1234  allow linking to further information on the table).</li></ul>  allow linking to further information on the table).</li>
1235    
1236    </ul>
1237  <p>An example for a document served from the examples endpoint is given  <p>An example for a document served from the examples endpoint is given
1238  in Appendix <span class="xref"><a href="#appA">A</a></span></p>  in Appendix <span class="xref"><a href="#appA">A</a></span></p>
1239  </div> <!-- subsubsubsection tf-ex-content -->  </div> <!-- subsubsubsection tf-ex-content -->
# Line 1137  Line 1438 
1438    
1439  <p>Against this proposal it has been levelled that</p>  <p>Against this proposal it has been levelled that</p>
1440    
1441  <ol><li>While it is nice to apply TAP to simple tasks, its primary focus is  <ol>
1442    <li>While it is nice to apply TAP to simple tasks, its primary focus is
1443  solving hard problems with potentially long runtimes. To make this possible  solving hard problems with potentially long runtimes. To make this possible
1444  (reliably), asynchronous operation is a must.</li><li>Optional features cannot be relied upon by clients.  They are thus  (reliably), asynchronous operation is a must.</li>
1445    <li>Optional features cannot be relied upon by clients.  They are thus
1446  undesirable in principle, but in particular whatever is necessary to  undesirable in principle, but in particular whatever is necessary to
1447  deal with the principal problems which the standard is intended to solve  deal with the principal problems which the standard is intended to solve
1448  must not be optional;</li><li>Thus, if anything, sync should be made optional, as it is easily  must not be optional;</li>
1449  simulated using async but not the other way round;</li><li>Given that, we should not downgrade the standard but upgrade the  <li>Thus, if anything, sync should be made optional, as it is easily
1450    simulated using async but not the other way round;</li>
1451    <li>Given that, we should not downgrade the standard but upgrade the
1452  implementations.  There are several good, interoperable, open TAP  implementations.  There are several good, interoperable, open TAP
1453  implementations available, so nobody should be forced to run homegrown,  implementations available, so nobody should be forced to run homegrown,
1454  non-compliant services.</li></ol>  non-compliant services.</li>
1455    </ol>
1456  </div> <!-- subsubseciton tf-noasync -->  </div> <!-- subsubseciton tf-noasync -->
1457    
1458  <div class="section"><h4><a id="tf-tapschema-opt" shape="rect"><span class="secnum">4.2.5. </span>Making TAP_SCHEMA optional</a></h4>  <div class="section"><h4><a id="tf-tapschema-opt" shape="rect"><span class="secnum">4.2.5. </span>Making TAP_SCHEMA optional</a></h4>
1459  <p>  <p>
1460  The TAP_SCHEMA specification makes a number of assumptions  The TAP_SCHEMA specification makes a number of assumptions
1461  <ul><li>The system is based on a standard RDBMS</li><li>The data model closely follows the layout of the physical schema  <ul>
1462      in the database</li><li>All of the tables are visible to everyone</li></ul>      <li>The system is based on a standard RDBMS</li>
1463        <li>The data model closely follows the layout of the physical schema
1464        in the database</li>
1465        <li>All of the tables are visible to everyone</li>
1466    </ul>
1467  If these assumptions hold true, then implementing TAP_SCHEMA is relatively  If these assumptions hold true, then implementing TAP_SCHEMA is relatively
1468  easy and provides a rich set of tools for clients to query the available  easy and provides a rich set of tools for clients to query the available
1469  information.  information.
# Line 1249  Line 1559 
1559  We would like to propose adding a <code>TimeToLive</code> attribute to elements  We would like to propose adding a <code>TimeToLive</code> attribute to elements
1560  in the metadata, which would function in a similar manner to the  in the metadata, which would function in a similar manner to the
1561  <code>TTL</code> attribute on <cite>[<a href="#std:DNS">std:DNS</a>]</cite> records.  <code>TTL</code> attribute on <cite>[<a href="#std:DNS">std:DNS</a>]</cite> records.
1562  <ul><li>  <ul>
1563        <li>
1564      Records that are expected to change regularly, e.g. recently      Records that are expected to change regularly, e.g. recently
1565      uploaded user data, would be assigned a relatively low      uploaded user data, would be assigned a relatively low
1566      lifetime, in the order of a few minutes.      lifetime, in the order of a few minutes.
1567      </li><li>      </li>
1568        <li>
1569      Records that are not expected to change regularly, e.g. a      Records that are not expected to change regularly, e.g. a
1570      published science archive, would be assigned a relatively      published science archive, would be assigned a relatively
1571      high lifetime, in the order of a few hours.      high lifetime, in the order of a few hours.
1572      </li></ul>      </li>
1573    </ul>
1574  </p>  </p>
1575  <p>  <p>
1576  These attributes would enable a client to prioritise  These attributes would enable a client to prioritise
# Line 1465  Line 1778 
1778  </div> <!-- references -->  </div> <!-- references -->
1779    
1780  </div> <!-- body -->  </div> <!-- body -->
1781  </body></html><!-- vim: tw=72  </body>
1782    </html><!-- vim: tw=72
1783  -->  -->

Legend:
Removed from v.2619  
changed lines
  Added in v.2620

msdemlei@ari.uni-heidelberg.de
ViewVC Help
Powered by ViewVC 1.1.26