firethorn

changeset 4309:cee138223527

Merging [2.1.35-stv-issue-1182] into [2.1.36]
author Stelios
date Wed Jul 29 12:16:11 2020 +0100 (7 months ago)
parents 7cf92f1ce4c5 7049be534b83
children 7345ff52db44
files docker/apache/Dockerfile docker/builder/Dockerfile docker/compose/client/Dockerfile docker/compose/tests/distictella/Dockerfile docker/compose/tests/distictella/firethorn-py/Dockerfile docker/java/Dockerfile docker/python/3.4.2/Dockerfile docker/pythonlibs/Dockerfile docker/sql-proxy/Dockerfile docker/sql-tunnel/Dockerfile docker/ssh-client/Dockerfile docker/tester/Dockerfile docker/tomcat/Dockerfile firethorn-admin/pom.xml firethorn-admin/src/main/docker/firethorn/Dockerfile firethorn-annotations/pom.xml firethorn-cds/adql/pom.xml firethorn-cds/pom.xml firethorn-core/pom.xml firethorn-jdbc/pom.xml firethorn-logging/pom.xml firethorn-ogsadai/activity/client/pom.xml firethorn-ogsadai/activity/common/pom.xml firethorn-ogsadai/activity/context/pom.xml firethorn-ogsadai/activity/pom.xml firethorn-ogsadai/activity/server/pom.xml firethorn-ogsadai/astro/client/pom.xml firethorn-ogsadai/astro/pom.xml firethorn-ogsadai/astro/server/pom.xml firethorn-ogsadai/depends/pom.xml firethorn-ogsadai/distributed/client/pom.xml firethorn-ogsadai/distributed/common/pom.xml firethorn-ogsadai/distributed/pom.xml firethorn-ogsadai/distributed/server/pom.xml firethorn-ogsadai/firethorn/client/pom.xml firethorn-ogsadai/firethorn/common/pom.xml firethorn-ogsadai/firethorn/pom.xml firethorn-ogsadai/firethorn/server/pom.xml firethorn-ogsadai/metadata/client/pom.xml firethorn-ogsadai/metadata/pom.xml firethorn-ogsadai/pom.xml firethorn-ogsadai/webapp/pom.xml firethorn-ogsadai/webapp/src/main/docker/ogsadai/Dockerfile firethorn-spring/pom.xml firethorn-stil/pom.xml firethorn-testing/pom.xml firethorn-webapp/pom.xml firethorn-webapp/src/main/docker/firethorn/Dockerfile integration/005/pom.xml integration/tester/Dockerfile pom.xml
line diff
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/doc/notes/stv/20190514-Firethorn-utils-Healthchecker-run.txt	Wed Jul 29 12:16:11 2020 +0100
     1.3 @@ -0,0 +1,65 @@
     1.4 +#
     1.5 +# <meta:header>
     1.6 +#   <meta:licence>
     1.7 +#     Copyright (c) 2018, ROE (http://www.roe.ac.uk/)
     1.8 +#
     1.9 +#     This information is free software: you can redistribute it and/or modify
    1.10 +#     it under the terms of the GNU General Public License as published by
    1.11 +#     the Free Software Foundation, either version 3 of the License, or
    1.12 +#     (at your option) any later version.
    1.13 +#
    1.14 +#     This information is distributed in the hope that it will be useful,
    1.15 +#     but WITHOUT ANY WARRANTY; without even the implied warranty of
    1.16 +#     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    1.17 +#     GNU General Public License for more details.
    1.18 +#  
    1.19 +#     You should have received a copy of the GNU General Public License
    1.20 +#     along with this program.  If not, see <http://www.gnu.org/licenses/>.
    1.21 +#   </meta:licence>
    1.22 +# </meta:header>
    1.23 +#
    1.24 +#
    1.25 +#
    1.26 +
    1.27 +# ---------------------------------------------
    1.28 +# Fetch and install Firethorn Python Libraries
    1.29 +# ---------------------------------------------
    1.30 +
    1.31 +git clone https://github.com/stvoutsin/firethorn.py
    1.32 +git clone https://github.com/stvoutsin/firethorn-utils
    1.33 +
    1.34 +
    1.35 +
    1.36 +
    1.37 +pushd firethorn-utils
    1.38 +
    1.39 +    sudo python3 setup.py install
    1.40 +
    1.41 +popd
    1.42 +
    1.43 +
    1.44 +
    1.45 +pushd firethorn.py
    1.46 +
    1.47 +    sudo python3 setup.py install
    1.48 +
    1.49 +popd
    1.50 +
    1.51 +
    1.52 +slackwebhook=
    1.53 +
    1.54 +
    1.55 +
    1.56 +# The command to run the System checker is:
    1.57 +
    1.58 +python3 -c "import firethorn_utils.system_checker as system_checker;system_checker.main()" -ft=http://tap.roe.ac.uk/firethorn -slack=${slackwebhook}
    1.59 +	
    1.60 +
    1.61 +# Let's add this as a cronjob
    1.62 +
    1.63 +crontab -e
    1.64 +
    1.65 +* * * * * /usr/bin/python3 -c "import firethorn_utils.system_checker as system_checker;system_checker.main()" -ft=http://tap.roe.ac.uk/firethorn -slack=${slackwebhook}
    1.66 +
    1.67 +# This will run the healthchecker every 1 minute
    1.68 +
     2.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     2.2 +++ b/doc/notes/stv/20200305-Testing-1182.txt	Wed Jul 29 12:16:11 2020 +0100
     2.3 @@ -0,0 +1,484 @@
     2.4 +#
     2.5 +# <meta:header>
     2.6 +#   <meta:licence>
     2.7 +#     Copyright (c) 2018, ROE (http://www.roe.ac.uk/)
     2.8 +#
     2.9 +#     This information is free software: you can redistribute it and/or modify
    2.10 +#     it under the terms of the GNU General Public License as published by
    2.11 +#     the Free Software Foundation, either version 3 of the License, or
    2.12 +#     (at your option) any later version.
    2.13 +#
    2.14 +#     This information is distributed in the hope that it will be useful,
    2.15 +#     but WITHOUT ANY WARRANTY; without even the implied warranty of
    2.16 +#     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    2.17 +#     GNU General Public License for more details.
    2.18 +#  
    2.19 +#     You should have received a copy of the GNU General Public License
    2.20 +#     along with this program.  If not, see <http://www.gnu.org/licenses/>.
    2.21 +#   </meta:licence>
    2.22 +# </meta:header>
    2.23 +#
    2.24 +#
    2.25 +
    2.26 +##########################################################
    2.27 +#####         Notes on Testing fix for 1182          #####
    2.28 +##########################################################
    2.29 +
    2.30 +
    2.31 +
    2.32 +import firethorn
    2.33 +
    2.34 +import firethorn_utils.configurator as configur
    2.35 +ft = firethorn.Firethorn(endpoint="http://gillian:8080/firethorn")
    2.36 +ft.login(firethorn.config.adminuser, firethorn.config.adminpass, firethorn.config.admingroup)
    2.37 +configurator =  configur.Configurator(ft)
    2.38 +
    2.39 +
    2.40 +
    2.41 +## -----------------------------
    2.42 +## Import Catalogs
    2.43 +
    2.44 +# Importing 2 catalogs that have columns that we want to check
    2.45 +  # ATLASDR1 / Filter / filterID  (Should see the equivalent of tiny int, instead of byte array)
    2.46 +  # BestDR9 / Frame / img  (Should see a byte array)
    2.47 +
    2.48 +
    2.49 +>>> configurator.load_resources("/home/firethorn.py/firethorn/data/osa-gui.json")
    2.50 +Importing JDBC Schema: ATLASDR1
    2.51 +Importing JDBC Schema: SDSSDR9
    2.52 +TAP Service available at: http://gillian:8080/firethorn/tap/110305/
    2.53 +
    2.54 +
    2.55 +
    2.56 +## -----------------------------
    2.57 +## Test with ftpy
    2.58 +
    2.59 +
    2.60 +resource=ft.firethorn_engine.select_adql_resource_by_ident("http://gillian:8080/firethorn/adql/resource/110305")
    2.61 +
    2.62 +
    2.63 +#
    2.64 +# Create and run a query on the resource.
    2.65 +query_str = "SELECT TOP 10 * FROM ATLASDR1.Filter"
    2.66 +
    2.67 +query_obj = resource.create_query(
    2.68 +    query_str,
    2.69 +    "COMPLETED",
    2.70 +    None,
    2.71 +    3000000
    2.72 +    )
    2.73 +
    2.74 +
    2.75 +print(
    2.76 +    query_obj.table()
    2.77 +     )
    2.78 +
    2.79 +{
    2.80 +  "columns": "http://gillian:8080/firethorn/adql/table/155703/columns/select",
    2.81 +  "self": "http://gillian:8080/firethorn/adql/table/155703",
    2.82 +  "root": "http://gillian:8080/firethorn/jdbc/table/155702",
    2.83 +  "url": "http://gillian:8080/firethorn/adql/table/155703",
    2.84 +  "created": "2020-03-05T22:16:03.103",
    2.85 +  "query": "http://gillian:8080/firethorn/blue/query/155602",
    2.86 +  "schema": "http://gillian:8080/firethorn/adql/schema/132238",
    2.87 +  "base": "http://gillian:8080/firethorn/jdbc/table/155702",
    2.88 +  "parent": "http://gillian:8080/firethorn/adql/schema/132238",
    2.89 +  "depth": "PARTIAL",
    2.90 +  "ident": "155703",
    2.91 +  "name": "XX_CDEILDVUQYJ4GAAAAFYKZRIZDQ",
    2.92 +  "fullname": "temp.XX_CDEILDVUQYJ4GAAAAFYKZRIZDQ",
    2.93 +  "owner": "http://gillian:8080/firethorn/community-member/162",
    2.94 +  "modified": "2020-03-05T22:16:03.103",
    2.95 +  "formats": {
    2.96 +    "datatable": "http://gillian:8080/firethorn/adql/table/155703/datatable",
    2.97 +    "votable": "http://gillian:8080/firethorn/adql/table/155703/votable"
    2.98 +  },
    2.99 +  "text": null,
   2.100 +  "type": "http://data.metagrid.co.uk/wfau/firethorn/types/entity/adql-table-1.0.json",
   2.101 +  "resource": "http://gillian:8080/firethorn/adql/resource/110307",
   2.102 +  "metadata": {
   2.103 +    "adql": {
   2.104 +      "status": "COMPLETED",
   2.105 +      "count": 10
   2.106 +    }
   2.107 +  }
   2.108 +}
   2.109 +
   2.110 +
   2.111 +py_table = query_obj.table().as_astropy()
   2.112 +
   2.113 +> Downloading http://gillian:8080/firethorn/adql/table/155703/votable
   2.114 +> |=======================================================================================================================================================================| 5.1k/5.1k (100.00%)         0s
   2.115 +
   2.116 +
   2.117 +
   2.118 +##-----------------------
   2.119 +## Test in Astropy
   2.120 +
   2.121 +py_table.pprint()
   2.122 +
   2.123 +filterID shortName      name                                                               description                                                           ...   vegaToAB    oneSecMLVg  isSectioned
   2.124 +-------- --------- -------------- ------------------------------------------------------------------------------------------------------------------------------ ... ------------ ------------ -----------
   2.125 +       0      NONE           NONE                                                                                                                           NONE ... -999999500.0 -999999500.0           0
   2.126 +       1         u         u_SDSS Sloan u filter: see  Tokunaga et al., 2002, PASP, 114, 180; http://www.astro-wise.org/~omegacam/documents/3110_user_manual.pdf ...         0.94 -999999500.0           0
   2.127 +       2         g         g_SDSS Sloan g filter: see  Tokunaga et al., 2002, PASP, 114, 180; http://www.astro-wise.org/~omegacam/documents/3110_user_manual.pdf ...        -0.08 -999999500.0           0
   2.128 +       3         r         r_SDSS Sloan r filter (see Tokunaga et al., 2002, PASP, 114, 180; http://www.astro-wise.org/~omegacam/documents/3110_user_manual.pdf) ...         0.17 -999999500.0           0
   2.129 +       4         i         i_SDSS Sloan i filter (see Tokunaga et al., 2002, PASP, 114, 180; http://www.astro-wise.org/~omegacam/documents/3110_user_manual.pdf) ...          0.4 -999999500.0           0
   2.130 +       5         z         z_SDSS Sloan z filter (see Tokunaga et al., 2002, PASP, 114, 180; http://www.astro-wise.org/~omegacam/documents/3110_user_manual.pdf) ...         0.57 -999999500.0           0
   2.131 +       6         B         B_JOHN                                                                                                               Johnson B filter ...       -0.044 -999999500.0           0
   2.132 +       7         V         V_JOHN                                                                                                               Johnson V filter ...       -0.163 -999999500.0           0
   2.133 +       8      BLNK OMEGACAM blank                                                                                         OMEGACAM blank filter (e.g. for darks) ... -999999500.0 -999999500.0           0
   2.134 +       9     vStrm         v_STRM                                                                                                                   Stroemgren v ... -999999500.0 -999999500.0           0
   2.135 +
   2.136 +
   2.137 +## VALID
   2.138 +## filterID values are printed correctly
   2.139 +
   2.140 +## Check VOTable file
   2.141 +
   2.142 +import requests
   2.143 +r = requests.get("http://gillian:8080/firethorn/adql/table/155703/votable")
   2.144 +r.text
   2.145 +
   2.146 +"<?xml version='1.0' encoding='UTF-8'?><VOTABLE xmlns='http://www.ivoa.net/xml/VOTable/v1.3' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://www.ivoa.net/xml/VOTable/v1.3 http://www.ivoa.net/xml/VOTable/v1.3' version='1.3'><RESOURCE type='results'><INFO name='QUERY_STATUS' value='OK'></INFO><INFO name='link' value='http://gillian:8080/firethorn/adql/table/155703'/><TABLE ID='table.155703' name='XX_CDEILDVUQYJ4GAAAAFYKZRIZDQ'><FIELD ID='column.155753' name='filterID' datatype='short' xtype='null'><LINK content-type='application/json' content-role='metadata' href='http://gillian:8080/firethorn/adql/column/155753'/></FIELD><FIELD ID='column.155755' name='shortName' datatype='char' arraysize='10' xtype='null'><LINK content-type='application/json' content-role='metadata' href='http://gillian:8080/firethorn/adql/column/155755'/></FIELD><FIELD ID='column.155757' name='name' datatype='char' arraysize='16' xtype='null'><LINK content-type='application/json' content-role='metadata' href='http://gillian:8080/firethorn/adql/column/155757'/></FIELD><FIELD ID='column.155759' name='description' datatype='char' arraysize='256' xtype='null'><LINK content-type='application/json' content-role='metadata' href='http://gillian:8080/firethorn/adql/column/155759'/></FIELD><FIELD ID='column.155761' name='cutOn' datatype='float' xtype='null'><LINK content-type='application/json' content-role='metadata' href='http://gillian:8080/firethorn/adql/column/155761'/></FIELD><FIELD ID='column.155763' name='cutOff' datatype='float' xtype='null'><LINK content-type='application/json' content-role='metadata' href='http://gillian:8080/firethorn/adql/column/155763'/></FIELD><FIELD ID='column.155765' name='aebv' datatype='float' xtype='null'><LINK content-type='application/json' content-role='metadata' href='http://gillian:8080/firethorn/adql/column/155765'/></FIELD><FIELD ID='column.155767' name='vegaToAB' datatype='float' xtype='null'><LINK content-type='application/json' content-role='metadata' href='http://gillian:8080/firethorn/adql/column/155767'/></FIELD><FIELD ID='column.155769' name='oneSecMLVg' datatype='float' xtype='null'><LINK content-type='application/json' content-role='metadata' href='http://gillian:8080/firethorn/adql/column/155769'/></FIELD><FIELD ID='column.155771' name='isSectioned' datatype='short' xtype='null'><LINK content-type='application/json' content-role='metadata' href='http://gillian:8080/firethorn/adql/column/155771'/></FIELD><DATA><TABLEDATA><TR><TD>0</TD><TD>NONE</TD><TD>NONE</TD><TD>NONE</TD><TD>-9.99999488E8</TD><TD>-9.99999488E8</TD><TD>-9.99999488E8</TD><TD>-9.99999488E8</TD><TD>-9.99999488E8</TD><TD>0</TD></TR><TR><TD>1</TD><TD>u</TD><TD>u_SDSS</TD><TD>Sloan u filter: see  Tokunaga et al., 2002, PASP, 114, 180; http://www.astro-wise.org/~omegacam/documents/3110_user_manual.pdf</TD><TD>0.32690000534057617</TD><TD>0.3828999996185303</TD><TD>5.15500020980835</TD><TD>0.9399999976158142</TD><TD>-9.99999488E8</TD><TD>0</TD></TR><TR><TD>2</TD><TD>g</TD><TD>g_SDSS</TD><TD>Sloan g filter: see  Tokunaga et al., 2002, PASP, 114, 180; http://www.astro-wise.org/~omegacam/documents/3110_user_manual.pdf</TD><TD>0.4092000126838684</TD><TD>0.5457000136375427</TD><TD>3.7929999828338623</TD><TD>-0.07999999821186066</TD><TD>-9.99999488E8</TD><TD>0</TD></TR><TR><TD>3</TD><TD>r</TD><TD>r_SDSS</TD><TD>Sloan r filter (see Tokunaga et al., 2002, PASP, 114, 180; http://www.astro-wise.org/~omegacam/documents/3110_user_manual.pdf)</TD><TD>0.5546000003814697</TD><TD>0.6916999816894531</TD><TD>2.750999927520752</TD><TD>0.17000000178813934</TD><TD>-9.99999488E8</TD><TD>0</TD></TR><TR><TD>4</TD><TD>i</TD><TD>i_SDSS</TD><TD>Sloan i filter (see Tokunaga et al., 2002, PASP, 114, 180; http://www.astro-wise.org/~omegacam/documents/3110_user_manual.pdf)</TD><TD>0.6949999928474426</TD><TD>0.8309999704360962</TD><TD>2.0859999656677246</TD><TD>0.4000000059604645</TD><TD>-9.99999488E8</TD><TD>0</TD></TR><TR><TD>5</TD><TD>z</TD><TD>z_SDSS</TD><TD>Sloan z filter (see Tokunaga et al., 2002, PASP, 114, 180; http://www.astro-wise.org/~omegacam/documents/3110_user_manual.pdf)</TD><TD>0.8654999732971191</TD><TD>0.9605000019073486</TD><TD>1.4789999723434448</TD><TD>0.5699999928474426</TD><TD>-9.99999488E8</TD><TD>0</TD></TR><TR><TD>6</TD><TD>B</TD><TD>B_JOHN</TD><TD>Johnson B filter</TD><TD>0.38999998569488525</TD><TD>0.49000000953674316</TD><TD>-9.99999488E8</TD><TD>-0.04399999976158142</TD><TD>-9.99999488E8</TD><TD>0</TD></TR><TR><TD>7</TD><TD>V</TD><TD>V_JOHN</TD><TD>Johnson V filter</TD><TD>0.5</TD><TD>0.6000000238418579</TD><TD>-9.99999488E8</TD><TD>-0.16300000250339508</TD><TD>-9.99999488E8</TD><TD>0</TD></TR><TR><TD>8</TD><TD>BLNK</TD><TD>OMEGACAM blank</TD><TD>OMEGACAM blank filter (e.g. for darks)</TD><TD>-9.99999488E8</TD><TD>-9.99999488E8</TD><TD>-9.99999488E8</TD><TD>-9.99999488E8</TD><TD>-9.99999488E8</TD><TD>0</TD></TR><TR><TD>9</TD><TD>vStrm</TD><TD>v_STRM</TD><TD>Stroemgren v</TD><TD>0.40049999952316284</TD><TD>0.42149999737739563</TD><TD>-9.99999488E8</TD><TD>-9.99999488E8</TD><TD>-9.99999488E8</TD><TD>0</TD></TR></TABLEDATA></DATA></TABLE></RESOURCE></VOTABLE>"
   2.147 +
   2.148 +## VALID
   2.149 +## filterID value is: datatype='short'
   2.150 +
   2.151 +
   2.152 +
   2.153 +
   2.154 +## -----------------------------
   2.155 +## Test with Taplint
   2.156 +
   2.157 +java -jar stilts.jar taplint tapurl=http://localhost:8080/firethorn/tap/155703  debug=true
   2.158 +This is STILTS taplint, 3.2/1c07f08 (2019-11-18)
   2.159 +Static report types: ERROR(139), WARNING(56), INFO(23), SUMMARY(9), FAILURE(22)
   2.160 +
   2.161 +Section TMV: Validate table metadata against XML schema
   2.162 +I-TMV-VURL-1 Validating http://localhost:8080/firethorn/tap/54/tables as tableset (http://www.ivoa.net/xml/VODataService/v1.1)
   2.163 +S-TMV-VALI-1 SAX report: warnings 0, errors 0, fatal 0
   2.164 +
   2.165 +Section TME: Check content of tables metadata from /tables
   2.166 +I-TME-CURL-1 Reading capability metadata from http://localhost:8080/firethorn/tap/54/capabilities
   2.167 +I-TME-TURL-1 Reading table metadata from http://localhost:8080/firethorn/tap/54/tables
   2.168 +S-TME-SUMM-1 Schemas: 3, Tables: 205, Columns: 10926, Foreign Keys: 0
   2.169 +S-TME-FLGS-1 Standard column flags: indexed: 0, primary: 0, nullable: 0
   2.170 +S-TME-FLGO-1 Other column flags: none
   2.171 +
   2.172 +Section TMS: Check content of tables metadata from TAP_SCHEMA
   2.173 +I-TMS-TAPV-1 Validating for TAP version V1.0
   2.174 +I-TMS-QSUB-1 Submitting query: SELECT COUNT(*) AS nr FROM TAP_SCHEMA.schemas
   2.175 +I-TMS-QGET-1 Query GET URL: http://localhost:8080/firethorn/tap/54/sync?REQUEST=doQuery&LANG=ADQL&QUERY=SELECT+COUNT%28*%29+AS+nr+FROM+TAP_SCHEMA.schemas
   2.176 +I-TMS-QSUB-2 Submitting query: SELECT COUNT(*) AS nr FROM TAP_SCHEMA.tables
   2.177 +I-TMS-QGET-2 Query GET URL: http://localhost:8080/firethorn/tap/54/sync?REQUEST=doQuery&LANG=ADQL&QUERY=SELECT+COUNT%28*%29+AS+nr+FROM+TAP_SCHEMA.tables
   2.178 +I-TMS-QSUB-3 Submitting query: SELECT COUNT(*) AS nr FROM TAP_SCHEMA.columns
   2.179 +I-TMS-QGET-3 Query GET URL: http://localhost:8080/firethorn/tap/54/sync?REQUEST=doQuery&LANG=ADQL&QUERY=SELECT+COUNT%28*%29+AS+nr+FROM+TAP_SCHEMA.columns
   2.180 +I-TMS-QSUB-4 Submitting query: SELECT COUNT(*) AS nr FROM TAP_SCHEMA.keys
   2.181 +I-TMS-QGET-4 Query GET URL: http://localhost:8080/firethorn/tap/54/sync?REQUEST=doQuery&LANG=ADQL&QUERY=SELECT+COUNT%28*%29+AS+nr+FROM+TAP_SCHEMA.keys
   2.182 +I-TMS-QSUB-5 Submitting query: SELECT COUNT(*) AS nr FROM TAP_SCHEMA.key_columns
   2.183 +I-TMS-QGET-5 Query GET URL: http://localhost:8080/firethorn/tap/54/sync?REQUEST=doQuery&LANG=ADQL&QUERY=SELECT+COUNT%28*%29+AS+nr+FROM+TAP_SCHEMA.key_columns
   2.184 +I-TMS-QSUB-6 Submitting query: SELECT principal, indexed, std, "size" FROM TAP_SCHEMA.columns
   2.185 +I-TMS-QGET-6 Query GET URL: http://localhost:8080/firethorn/tap/54/sync?REQUEST=doQuery&LANG=ADQL&QUERY=SELECT+principal%2C+indexed%2C+std%2C+%22size%22+FROM+TAP_SCHEMA.columns&MAXREC=10936
   2.186 +I-TMS-QSUB-7 Submitting query: SELECT TOP 1 * FROM TAP_SCHEMA.columns
   2.187 +I-TMS-QGET-7 Query GET URL: http://localhost:8080/firethorn/tap/54/sync?REQUEST=doQuery&LANG=ADQL&QUERY=SELECT+TOP+1+*+FROM+TAP_SCHEMA.columns&MAXREC=1
   2.188 +I-TMS-QSUB-8 Submitting query: SELECT ft_column_id, std, indexed, principal, arraysize, ts_column_id, datatype, utype, ucd, unit, description, column_name, table_name FROM TAP_SCHEMA.columns
   2.189 +I-TMS-QGET-8 Query GET URL: http://localhost:8080/firethorn/tap/54/sync?REQUEST=doQuery&LANG=ADQL&QUERY=SELECT+ft_column_id%2C+std%2C+indexed%2C+principal%2C+arraysize%2C+ts_column_id%2C+datatype%2C+utype%2C+ucd%2C+unit%2C+description%2C+column_name%2C+table_name+FROM+TAP_SCHEMA.columns&MAXREC=10936
   2.190 +I-TMS-QSUB-9 Submitting query: SELECT from_column, target_column, key_id FROM TAP_SCHEMA.key_columns
   2.191 +I-TMS-QGET-9 Query GET URL: http://localhost:8080/firethorn/tap/54/sync?REQUEST=doQuery&LANG=ADQL&QUERY=SELECT+from_column%2C+target_column%2C+key_id+FROM+TAP_SCHEMA.key_columns&MAXREC=10936
   2.192 +E-TMS-TSCT-1 Type mismatch for column TAP_SCHEMA.schemas.schema_name: datatype=char is not varchar-like (TAP 1.0)
   2.193 +E-TMS-TSCT-2 Type mismatch for column TAP_SCHEMA.schemas.utype: datatype=char is not varchar-like (TAP 1.0)
   2.194 +E-TMS-TSCT-3 Type mismatch for column TAP_SCHEMA.schemas.description: datatype=char is not varchar-like (TAP 1.0)
   2.195 +I-TMS-TSNS-1 2 non-standard columns in TAP_SCHEMA.schemas: [ts_schema_id, ft_schema_id]
   2.196 +E-TMS-TSCT-4 Type mismatch for column TAP_SCHEMA.tables.schema_name: datatype=char is not varchar-like (TAP 1.0)
   2.197 +E-TMS-TSCT-5 Type mismatch for column TAP_SCHEMA.tables.table_name: datatype=char is not varchar-like (TAP 1.0)
   2.198 +E-TMS-TSCT-6 Type mismatch for column TAP_SCHEMA.tables.table_type: datatype=char is not varchar-like (TAP 1.0)
   2.199 +E-TMS-TSCT-7 Type mismatch for column TAP_SCHEMA.tables.utype: datatype=char is not varchar-like (TAP 1.0)
   2.200 +E-TMS-TSCT-8 Type mismatch for column TAP_SCHEMA.tables.description: datatype=char is not varchar-like (TAP 1.0)
   2.201 +I-TMS-TSNS-2 2 non-standard columns in TAP_SCHEMA.tables: [ts_table_id, ft_table_id]
   2.202 +E-TMS-TSCT-9 Type mismatch for column TAP_SCHEMA.columns.table_name: datatype=char is not varchar-like (TAP 1.0)
   2.203 +I-TMS-TSNS-3 3 non-standard columns in TAP_SCHEMA.columns: [arraysize, ts_column_id, ft_column_id]
   2.204 +I-TMS-TSNS-4 1 non-standard columns in TAP_SCHEMA.keys: [ts_key_id]
   2.205 +I-TMS-TSNS-5 1 non-standard columns in TAP_SCHEMA.key_columns: [ts_key_column_id]
   2.206 +S-TMS-SUMM-1 Schemas: 3, Tables: 205, Columns: 10926, Foreign Keys: 0
   2.207 +S-TMS-FLGS-1 Standard column flags: indexed: 0, principal: 7, std: 33
   2.208 +S-TMS-QNUM-1 Successful/submitted TAP queries: 29/29
   2.209 +S-TMS-QTIM-1 Average successful query time: 1.4s
   2.210 +I-TMS-QSUB-x (20 more)
   2.211 +I-TMS-QGET-x (20 more)
   2.212 +E-TMS-TSCT-x (18 more)
   2.213 +
   2.214 +Section TMC: Compare table metadata from /tables and TAP_SCHEMA
   2.215 +
   2.216 +Section CPV: Validate capabilities against XML schema
   2.217 +I-CPV-VURL-1 Validating http://localhost:8080/firethorn/tap/54/capabilities as capabilities (http://www.ivoa.net/xml/VOSICapabilities/v1.0)
   2.218 +S-CPV-VALI-1 SAX report: warnings 0, errors 0, fatal 0
   2.219 +
   2.220 +Section CAP: Check TAP and TAPRegExt content of capabilities document
   2.221 +
   2.222 +Section AVV: Validate availability against XML schema
   2.223 +I-AVV-VURL-1 Validating http://localhost:8080/firethorn/tap/54/availability as availability (http://www.ivoa.net/xml/VOSIAvailability/v1.0)
   2.224 +S-AVV-VALI-1 SAX report: warnings 0, errors 0, fatal 0
   2.225 +
   2.226 +Section QGE: Make ADQL queries in sync GET mode
   2.227 +I-QGE-QSUB-1 Submitting query: SELECT TOP 10 bin FROM BestDR9.FieldProfile
   2.228 +I-QGE-QGET-1 Query GET URL: http://localhost:8080/firethorn/tap/54/sync?REQUEST=doQuery&LANG=ADQL&QUERY=SELECT+TOP+10+bin+FROM+BestDR9.FieldProfile
   2.229 +I-QGE-QSUB-2 Submitting query: SELECT bin FROM BestDR9.FieldProfile
   2.230 +I-QGE-QGET-2 Query GET URL: http://localhost:8080/firethorn/tap/54/sync?REQUEST=doQuery&LANG=ADQL&QUERY=SELECT+bin+FROM+BestDR9.FieldProfile&MAXREC=9
   2.231 +I-QGE-QSUB-3 Submitting query: SELECT TOP 10 bin FROM BestDR9.FieldProfile
   2.232 +I-QGE-QGET-3 Query GET URL: http://localhost:8080/firethorn/tap/54/sync?REQUEST=doQuery&LANG=ADQL&QUERY=SELECT+TOP+10+bin+FROM+BestDR9.FieldProfile&DUMMY=ignore-me
   2.233 +I-QGE-QSUB-4 Submitting query: SELECT TOP 1 bin FROM BestDR9.FieldProfile
   2.234 +I-QGE-QGET-4 Query GET URL: http://localhost:8080/firethorn/tap/54/sync?REQUEST=doQuery&LANG=ADQL-2.0&QUERY=SELECT+TOP+1+bin+FROM+BestDR9.FieldProfile
   2.235 +I-QGE-QSUB-5 Submitting query: SELECT TOP 1 bin FROM BestDR9.FieldProfile
   2.236 +I-QGE-QGET-5 Query GET URL: http://localhost:8080/firethorn/tap/54/sync?REQUEST=doQuery&LANG=ADQL&QUERY=SELECT+TOP+1+bin+FROM+BestDR9.FieldProfile
   2.237 +I-QGE-QSUB-6 Submitting query: SELECT TOP 8 c, z AS taplint_c_2, B.y, x AS taplint_c_4, convexid, B.regionid AS taplint_c_6 FROM BestDR9.HalfSpace AS B
   2.238 +I-QGE-QGET-6 Query GET URL: http://localhost:8080/firethorn/tap/54/sync?REQUEST=doQuery&LANG=ADQL&QUERY=SELECT+TOP+8+c%2C+z+AS+taplint_c_2%2C+B.y%2C+x+AS+taplint_c_4%2C+convexid%2C+B.regionid+AS+taplint_c_6++FROM+BestDR9.HalfSpace+AS+B
   2.239 +I-QGE-QSUB-7 Submitting query: SELECT stripe FROM BestDR9.StripeDefs
   2.240 +I-QGE-QGET-7 Query GET URL: http://localhost:8080/firethorn/tap/54/sync?REQUEST=doQuery&LANG=ADQL&QUERY=SELECT+stripe+FROM+BestDR9.StripeDefs&MAXREC=0
   2.241 +I-QGE-DUFF-1 Submitting query expected to fail (bad ADQL): DUFF QUERY
   2.242 +I-QGE-QGET-8 Query GET URL: http://localhost:8080/firethorn/tap/54/sync?REQUEST=doQuery&LANG=ADQL&QUERY=DUFF+QUERY
   2.243 +I-QGE-DUFF-2 Submitting query expected to fail (unknown query language): SELECT TOP 1 * FROM TAP_SCHEMA.tables
   2.244 +I-QGE-QGET-9 Query GET URL: http://localhost:8080/firethorn/tap/54/sync?REQUEST=doQuery&LANG=OOBLECK&QUERY=SELECT+TOP+1+*+FROM+TAP_SCHEMA.tables
   2.245 +S-QGE-QNUM-1 Successful/submitted TAP queries: 7/7
   2.246 +S-QGE-QTIM-1 Average successful query time: 2.0s
   2.247 +
   2.248 +Section QPO: Make ADQL queries in sync POST mode
   2.249 +I-QPO-QSUB-1 Submitting query: SELECT TOP 10 bin FROM BestDR9.FieldProfile
   2.250 +I-QPO-QSUB-2 Submitting query: SELECT bin FROM BestDR9.FieldProfile
   2.251 +I-QPO-QSUB-3 Submitting query: SELECT TOP 10 bin FROM BestDR9.FieldProfile
   2.252 +I-QPO-QSUB-4 Submitting query: SELECT TOP 8 c, z AS taplint_c_2, B.y, x AS taplint_c_4, convexid, B.regionid AS taplint_c_6 FROM BestDR9.HalfSpace AS B
   2.253 +I-QPO-QSUB-5 Submitting query: SELECT stripe FROM BestDR9.StripeDefs
   2.254 +I-QPO-DUFF-1 Submitting query expected to fail (bad ADQL): DUFF QUERY
   2.255 +I-QPO-DUFF-2 Submitting query expected to fail (unknown query language): SELECT TOP 1 * FROM TAP_SCHEMA.tables
   2.256 +S-QPO-QNUM-1 Successful/submitted TAP queries: 5/5
   2.257 +S-QPO-QTIM-1 Average successful query time: 1.1s
   2.258 +
   2.259 +Section QAS: Make ADQL queries in async mode
   2.260 +I-QAS-QSUB-1 Submitting query: SELECT TOP 10 bin FROM BestDR9.FieldProfile
   2.261 +I-QAS-QJOB-1 Submitted query at http://localhost:8080/firethorn/tap/54/async/23245
   2.262 +I-QAS-QSUB-2 Submitting query: SELECT bin FROM BestDR9.FieldProfile
   2.263 +I-QAS-QJOB-2 Submitted query at http://localhost:8080/firethorn/tap/54/async/23246
   2.264 +E-QAS-OVNO-1 Overflow not marked - no <INFO name='QUERY_STATUS' value='OVERFLOW'/> after TABLE
   2.265 +I-QAS-QSUB-3 Submitting query: SELECT TOP 10 bin FROM BestDR9.FieldProfile
   2.266 +I-QAS-QJOB-3 Submitted query at http://localhost:8080/firethorn/tap/54/async/23247
   2.267 +I-QAS-QSUB-4 Submitting query: SELECT TOP 8 c, z AS taplint_c_2, B.y, x AS taplint_c_4, convexid, B.regionid AS taplint_c_6 FROM BestDR9.HalfSpace AS B
   2.268 +I-QAS-QJOB-4 Submitted query at http://localhost:8080/firethorn/tap/54/async/23248
   2.269 +I-QAS-QSUB-5 Submitting query: SELECT stripe FROM BestDR9.StripeDefs
   2.270 +I-QAS-QJOB-5 Submitted query at http://localhost:8080/firethorn/tap/54/async/23249
   2.271 +I-QAS-DUFF-1 Submitting query expected to fail (bad ADQL): DUFF QUERY
   2.272 +I-QAS-QJOB-6 Submitted query at http://localhost:8080/firethorn/tap/54/async/23250
   2.273 +I-QAS-DUFF-2 Submitting query expected to fail (unknown query language): SELECT TOP 1 * FROM TAP_SCHEMA.tables
   2.274 +I-QAS-QJOB-7 Submitted query at http://localhost:8080/firethorn/tap/54/async/23251
   2.275 +E-QAS-DSUC-1 Apparent success from bad query (unknown query language)
   2.276 +S-QAS-QNUM-1 Successful/submitted TAP queries: 5/5
   2.277 +S-QAS-QTIM-1 Average successful query time: 1.5s
   2.278 +
   2.279 +Section UWS: Test asynchronous UWS/TAP behaviour
   2.280 +I-UWS-CJOB-1 Created new job http://localhost:8080/firethorn/tap/54/async/24602
   2.281 +I-UWS-POPA-1 POSTed runId=TAPLINT-002 to http://localhost:8080/firethorn/tap/54/async/24602/parameters
   2.282 +I-UWS-POPA-2 POSTed PHASE=ABORT to http://localhost:8080/firethorn/tap/54/async/24602/phase
   2.283 +I-UWS-POPA-3 POSTed ACTION=DELETE to http://localhost:8080/firethorn/tap/54/async/24602
   2.284 +I-UWS-CJOB-2 Created new job http://localhost:8080/firethorn/tap/54/async/24603
   2.285 +I-UWS-CJOB-3 Created new job http://localhost:8080/firethorn/tap/54/async/24604
   2.286 +I-UWS-VUWS-1 UWS job document implicitly V1.0
   2.287 +I-UWS-POPA-4 POSTed PHASE=RUN to http://localhost:8080/firethorn/tap/54/async/24604/phase
   2.288 +
   2.289 +Section MDQ: Check table query result columns against declared metadata
   2.290 +I-MDQ-QSUB-1 Submitting query: SELECT TOP 1 * FROM ATLASDR1.ArchiveCurationHistory
   2.291 +I-MDQ-QSUB-2 Submitting query: SELECT TOP 1 * FROM ATLASDR1.AstrCalVers
   2.292 +I-MDQ-QSUB-3 Submitting query: SELECT TOP 1 * FROM ATLASDR1.CurationTask
   2.293 +I-MDQ-QSUB-4 Submitting query: SELECT TOP 1 * FROM ATLASDR1.CurrentAstrometry
   2.294 +I-MDQ-QSUB-5 Submitting query: SELECT TOP 1 * FROM ATLASDR1.ExternalSurvey
   2.295 +I-MDQ-QSUB-6 Submitting query: SELECT TOP 1 * FROM ATLASDR1.ExternalSurveyTable
   2.296 +I-MDQ-QSUB-7 Submitting query: SELECT TOP 1 * FROM ATLASDR1.Filter
   2.297 +I-MDQ-QSUB-8 Submitting query: SELECT TOP 1 * FROM ATLASDR1.FilterSections
   2.298 +I-MDQ-QSUB-9 Submitting query: SELECT TOP 1 * FROM ATLASDR1.Multiframe
   2.299 +E-MDQ-QERX-1 Failed to parse result for TAP query SELECT TOP 1 * FROM BestDR1.DataConstants [The element type "TR" must be terminated by the matching end-tag "</TR>".]
   2.300 +org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 1388; The element type "TR" must be terminated by the matching end-tag "</TR>".
   2.301 +	at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1239)
   2.302 +	at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:643)
   2.303 +	at uk.ac.starlink.ttools.taplint.VotLintTapRunner.readResultDocument(VotLintTapRunner.java:277)
   2.304 +	at uk.ac.starlink.ttools.taplint.VotLintTapRunner.readResultDocument(VotLintTapRunner.java:205)
   2.305 +	at uk.ac.starlink.ttools.taplint.VotLintTapRunner.executeQuery(VotLintTapRunner.java:112)
   2.306 +	at uk.ac.starlink.ttools.taplint.TapRunner.attemptGetResultTable(TapRunner.java:79)
   2.307 +	at uk.ac.starlink.ttools.taplint.ColumnMetadataStage$Checker.checkTable(ColumnMetadataStage.java:164)
   2.308 +	at uk.ac.starlink.ttools.taplint.ColumnMetadataStage$Checker.run(ColumnMetadataStage.java:145)
   2.309 +	at uk.ac.starlink.ttools.taplint.ColumnMetadataStage.run(ColumnMetadataStage.java:91)
   2.310 +	at uk.ac.starlink.ttools.taplint.TapLinter$4.execute(TapLinter.java:234)
   2.311 +	at uk.ac.starlink.ttools.task.LineInvoker.invoke(LineInvoker.java:303)
   2.312 +	at uk.ac.starlink.ttools.Stilts.main(Stilts.java:42)
   2.313 +E-MDQ-QERX-2 Failed to parse result for TAP query SELECT TOP 1 * FROM BestDR1.Frame [The element type "TR" must be terminated by the matching end-tag "</TR>".]
   2.314 +org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 6808; The element type "TR" must be terminated by the matching end-tag "</TR>".
   2.315 +	at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1239)
   2.316 +	at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:643)
   2.317 +	at uk.ac.starlink.ttools.taplint.VotLintTapRunner.readResultDocument(VotLintTapRunner.java:277)
   2.318 +	at uk.ac.starlink.ttools.taplint.VotLintTapRunner.readResultDocument(VotLintTapRunner.java:205)
   2.319 +	at uk.ac.starlink.ttools.taplint.VotLintTapRunner.executeQuery(VotLintTapRunner.java:112)
   2.320 +	at uk.ac.starlink.ttools.taplint.TapRunner.attemptGetResultTable(TapRunner.java:79)
   2.321 +	at uk.ac.starlink.ttools.taplint.ColumnMetadataStage$Checker.checkTable(ColumnMetadataStage.java:164)
   2.322 +	at uk.ac.starlink.ttools.taplint.ColumnMetadataStage$Checker.run(ColumnMetadataStage.java:145)
   2.323 +	at uk.ac.starlink.ttools.taplint.ColumnMetadataStage.run(ColumnMetadataStage.java:91)
   2.324 +	at uk.ac.starlink.ttools.taplint.TapLinter$4.execute(TapLinter.java:234)
   2.325 +	at uk.ac.starlink.ttools.task.LineInvoker.invoke(LineInvoker.java:303)
   2.326 +	at uk.ac.starlink.ttools.Stilts.main(Stilts.java:42)
   2.327 +
   2.328 +
   2.329 +2020-03-07 21:55:57,019 DEBUG [main-interface-4] [AbstractTableController] VOTABLE SQL [SELECT [XX_3B3RDH35VZR4OAAAAFYLN726NU] AS plateID, [XX_YGY2ZQF7GD7NSAAAAFYLN726OA] AS spRerun, [XX_CWE2AJ55BXX6UAAAAFYLN726OI] AS mjd, [XX_GAWHULRWTQ4U6AAAAFYLN726OU] AS plate, [XX_MB4WT3552XKZGAAAAFYLN726O4] AS tile, [XX_VLTGCL4FRH6YQAAAAFYLN726PE] AS mapMjd, [XX_SF5PA7ISEU5Z4AAAAFYLN726PM] AS nExp, [XX_AVNEDEEUS3QHOAAAAFYLN726PU] AS tai, [XX_FID5H6HPICWLUAAAAFYLN726P4] AS raBoresight, [XX_O4UN76VWK3CCMAAAAFYLN726QE] AS decBoresight, [XX_WU7IHMXE4M66UAAAAFYLN726QI] AS taiHMS, [XX_LLZR47YPAHTDIAAAAFYLN726QQ] AS expTime, [XX_UVLX5G7WDYCQQAAAAFYLN726QY] AS expTimeB1, [XX_7QJMKEIGIU7FEAAAAFYLN726RA] AS expTimeB2, [XX_QVJCHSZZH7PT2AAAAFYLN726RI] AS expTimeR1, [XX_LJZ5UCEGKAWMKAAAAFYLN726RQ] AS expTimeR2, [XX_LA5RF6EZP6DYWAAAAFYLN726RY] AS helioRV, [XX_WIIIVI2UPF4OOAAAAFYLN726SA] AS ra, [XX_BGXB2BRSMH6UGAAAAFYLN726SI] AS dec, [XX_AHI2HACBCWP2MAAAAFYLN726SQ] AS cx, [XX_4V24I4QCC45I6AAAAFYLN726SY] AS cy, [XX_YPKZSI2FLBZAIAAAAFYLN726TA] AS cz, [XX_EZVE3ZK5I45OSAAAAFYLN726TE] AS htmID, [XX_Q5QCA5HHLQBZKAAAAFYLN726TM] AS sn1_0, [XX_Z3ZGBJVEBFI2EAAAAFYLN726TU] AS sn1_1, [XX_EL2FOQTFU3UQIAAAAFYLN726TY] AS sn1_2, [XX_E7DTOKBU77IFYAAAAFYLN726UA] AS sn2_0, [XX_YNNXZOR4ZPDI4AAAAFYLN726UI] AS sn2_1, [XX_OPPF66MA2H6ZAAAAAFYLN726UM] AS sn2_2, [XX_GKNDT4ES7QXIKAAAAFYLN726UU] AS dateObs, [XX_UKNQXUTNPZNQSAAAAFYLN726U4] AS timeSys, [XX_KALHUXPWVDH44AAAAFYLN726VA] AS quality, [XX_BOUPGCPOH46GOAAAAFYLN726VI] AS name, [XX_3FX5IX5GRD2GIAAAAFYLN726VM] AS program, [XX_RIRMCIOR7OWZ4AAAAFYLN726VU] AS version, [XX_KHGIDNCKUNH5GAAAAFYLN726V4] AS observer, [XX_T3TBPO2PP2UXIAAAAFYLN726WE] AS camVer, [XX_BOOOP747GIO32AAAAFYLN726WM] AS spec2DVer, [XX_TQ3R5GOD52QAMAAAAFYLN726WU] AS utilsVer, [XX_C4L3CTATPSIFSAAAAFYLN726W4] AS spec1DVer, [XX_H4K2IK3NH5GUGAAAAFYLN726XE] AS readVer, [XX_DXYHJA6H76HO6AAAAFYLN726XI] AS combVer, [XX_QTS4365HS7PXAAAAAFYLN726XY] AS extinction_u, [XX_AMFO35VIP7CF2AAAAFYLN726YA] AS extinction_g, [XX_7ZHFSPKZ45W2EAAAAFYLN726YI] AS extinction_r, [XX_OMWMPWUX336ZKAAAAFYLN726ZA] AS extinction_i, [XX_LJXGWRWLEG7EOAAAAFYLN726ZI] AS extinction_z, [XX_OHX7FROEZ3MBYAAAAFYLN726ZM] AS isPrimary, [XX_M7GPEEQO3ZOZ4AAAAFYLN726ZU] AS cartridgeID, [XX_KR3Y4NSHXLAI2AAAAFYLN726Z4] AS plateVersion, [XX_KKRZJPEVKQCDUAAAAFYLN7262A] AS haMin, [XX_RGUWCCY3QNARIAAAAFYLN7262I] AS haMax, [XX_PJTTICJP5JGYGAAAAFYLN7262Q] AS mjdDesign, [XX_AXW6ECC34SP7IAAAAFYLN7262U] AS theta, [XX_2KX7VXQI3O7DIAAAAFYLN72624] AS fscanVersion, [XX_E24NAVLVULHACAAAAFYLN7263E] AS fmapVersion, [XX_MXRP5RNBUINN4AAAAFYLN7263I] AS fscanMode, [XX_NBOFX7452SSSOAAAAFYLN7263Q] AS fscanSpeed, [XX_HI7XA3HJE4HGIAAAAFYLN7263U] AS programType, [XX_K3UN453W5B3OCAAAAFYLN7263Y] AS programName, [XX_RQYVYJW76MQH2AAAAFYLN7264A] AS loadVersion, [XX_XENSGD2DHPVMEAAAAFYLN7264E] AS expID FROM [LIVEFirethornUserdataULOV20190307].[dbo].[XX_W4RVLBJBH5D4CAAAAFYLN726GA]] 
   2.330 +2020-03-07 21:55:57,025 DEBUG [main-interface-4] [AdqlTableEntity] columns() for [366605][temp.XX_W4RVLBJBH5D4CAAAAFYLN726GA] 
   2.331 +2020-03-07 21:55:57,025 DEBUG [main-interface-4] [BaseComponentEntity] scan for [366605][XX_W4RVLBJBH5D4CAAAAFYLN726GA] 
   2.332 +2020-03-07 21:55:57,025 DEBUG [main-interface-4] [BaseComponentEntity] scantest for [366605][XX_W4RVLBJBH5D4CAAAAFYLN726GA] 
   2.333 +2020-03-07 21:55:57,025 DEBUG [main-interface-4] [BaseComponentEntity$EntityFactory] scanperiod() 
   2.334 +2020-03-07 21:55:57,026 DEBUG [main-interface-4] [BaseComponentEntity$EntityFactory]   value [PT25H] 
   2.335 +2020-03-07 21:55:57,026 DEBUG [main-interface-4] [BaseComponentEntity] Factory scanperiod  [PT25H] 
   2.336 +2020-03-07 21:55:57,026 DEBUG [main-interface-4] [BaseComponentEntity] prevscan   [2020-03-07T21:55:54.095Z] 
   2.337 +2020-03-07 21:55:57,026 DEBUG [main-interface-4] [BaseComponentEntity] scanperiod [PT25H] 
   2.338 +2020-03-07 21:55:57,026 DEBUG [main-interface-4] [BaseComponentEntity] prev scan is recent - skipping 
   2.339 +2020-03-07 21:55:57,074 DEBUG [main-interface-4] [AbstractTableController] Exception:  
   2.340 +java.sql.SQLException: Unable to convert between net.sourceforge.jtds.jdbc.BlobImpl and TINYINT.
   2.341 +	at net.sourceforge.jtds.jdbc.Support.convert(Support.java:747)
   2.342 +	at net.sourceforge.jtds.jdbc.JtdsResultSet.getByte(JtdsResultSet.java:667)
   2.343 +	at net.sourceforge.jtds.jdbc.JtdsResultSet.getByte(JtdsResultSet.java:965)
   2.344 +	at uk.ac.roe.wfau.firethorn.webapp.votable.BaseTableVOTableController$ByteFormatter.format(BaseTableVOTableController.java:168)
   2.345 +	at uk.ac.roe.wfau.firethorn.webapp.votable.BaseTableVOTableController.cell(BaseTableVOTableController.java:413)
   2.346 +	at uk.ac.roe.wfau.firethorn.webapp.votable.AbstractTableController.cells(AbstractTableController.java:289)
   2.347 +	at uk.ac.roe.wfau.firethorn.webapp.votable.BaseTableVOTableController.row(BaseTableVOTableController.java:401)
   2.348 +	at uk.ac.roe.wfau.firethorn.webapp.votable.AbstractTableController.rows(AbstractTableController.java:259)
   2.349 +	at uk.ac.roe.wfau.firethorn.webapp.votable.AbstractTableController.body(AbstractTableController.java:384)
   2.350 +	at uk.ac.roe.wfau.firethorn.webapp.votable.AbstractTableController.write(AbstractTableController.java:435)
   2.351 +	at uk.ac.roe.wfau.firethorn.webapp.votable.AdqlTableVOTableController.votable(AdqlTableVOTableController.java:91)
   2.352 +	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   2.353 +	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
   2.354 +	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
   2.355 +	at java.lang.reflect.Method.invoke(Method.java:498)
   2.356 +	at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:209)
   2.357 +	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:136)
   2.358 +	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:102)
   2.359 +	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:877)
   2.360 +	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:783)
   2.361 +	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
   2.362 +	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:991)
   2.363 +	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:925)
   2.364 +	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:974)
   2.365 +	at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:866)
   2.366 +	at javax.servlet.http.HttpServlet.service(HttpServlet.java:634)
   2.367 +	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:851)
   2.368 +	at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
   2.369 +	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
   2.370 +	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
   2.371 +	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
   2.372 +	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
   2.373 +	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
   2.374 +	at uk.ac.roe.wfau.firethorn.webapp.catalina.ConnectionConfigFilter.doFilter(ConnectionConfigFilter.java:50)
   2.375 +	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
   2.376 +	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
   2.377 +	at uk.ac.roe.wfau.firethorn.webapp.pratchett.GnuTerryPratchett.doFilter(GnuTerryPratchett.java:58)
   2.378 +	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
   2.379 +	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
   2.380 +	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199)
   2.381 +	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
   2.382 +	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:491)
   2.383 +	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)
   2.384 +	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
   2.385 +	at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:668)
   2.386 +	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
   2.387 +	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
   2.388 +	at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:408)
   2.389 +	at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
   2.390 +	at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:764)
   2.391 +	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1388)
   2.392 +	at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
   2.393 +	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
   2.394 +	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
   2.395 +	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
   2.396 +	at java.lang.Thread.run(Thread.java:748)
   2.397 +2020-03-07 21:55:57,075 ERROR [main-interface-4] [AbstractTableController] Exception reading SQL results [Unable to convert between net.sourceforge.jtds.jdbc.BlobImpl and TINYINT.] 
   2.398 +2020-03-07 21:55:57,077 DEBUG [main-interface-4] [HttpRequestDebug] Response headers 
   2.399 +
   2.400 +# Looks like this does not work
   2.401 +# firethorn-webapp/src/main/java/uk/ac/roe/wfau/firethorn/webapp/votable/BaseTableVOTableController.java  / Line:168
   2.402 +  ..
   2.403 +
   2.404 +  boolean isarray;
   2.405 +
   2.406 +	try {
   2.407 +		isarray = column.meta().adql().type().isarray();
   2.408 +			} catch (ProtectionException e) {
   2.409 +				isarray = false;
   2.410 +			}
   2.411 +
   2.412 +			if (!isarray) {
   2.413 +			    byte shortval = results.getByte(  ## Error in this line <-------------------
   2.414 +			            index()
   2.415 +			        );
   2.416 +			    builder.append(shortval);       
   2.417 +					
   2.418 +			} else {
   2.419 +			    
   2.420 +			    byte[] bytes = results.getBytes(
   2.421 +			        index()
   2.422 +			    );
   2.423 +			    
   2.424 +			    for (byte b : bytes) {
   2.425 +			        if(b<0) aux=256+b; else aux=b; 
   2.426 +			            builder.append(aux  + " ");
   2.427 +			    } 
   2.428 +				  
   2.429 +			}
   2.430 +		
   2.431 +}
   2.432 +
   2.433 +
   2.434 +
   2.435 +..
   2.436 +
   2.437 +
   2.438 +## This was fails
   2.439 +    
   2.440 +   http://gillian:8080/firethorn/tap/332798/sync?QUERY=SELECT+TOP+5+%2A+FROM+BestDR1.PlateX&REQUEST=doQuery&LANG=ADQL&FORMAT=VOTABLE
   2.441 +
   2.442 +
   2.443 +## Test passes after fixing the above to this:
   2.444 +
   2.445 +
   2.446 +               String byteArrayString = "";
   2.447 +                int aux;
   2.448 +	        final StringBuilder builder = new StringBuilder(); 
   2.449 +                int size=0;
   2.450 +                
   2.451 +                if (results.getObject(index())!=null){
   2.452 +                	
   2.453 +                    boolean isarray;
   2.454 +
   2.455 +                	try {
   2.456 +                		isarray = column.meta().adql().type().isarray();
   2.457 +                		size =  column.meta().adql().arraysize();
   2.458 +					} catch (ProtectionException e) {
   2.459 +						isarray = false;
   2.460 +					}
   2.461 +
   2.462 +					if (!isarray && size<=0) {
   2.463 +					    byte shortval = results.getByte(
   2.464 +					            index()
   2.465 +					        );
   2.466 +					    builder.append(shortval);       
   2.467 +							
   2.468 +					} else {
   2.469 +					    
   2.470 +					    byte[] bytes = results.getBytes(
   2.471 +					        index()
   2.472 +					    );
   2.473 +					    
   2.474 +					    for (byte b : bytes) {
   2.475 +					        if(b<0) aux=256+b; else aux=b; 
   2.476 +					            builder.append(aux  + " ");
   2.477 +					    } 
   2.478 +						  
   2.479 +					}
   2.480 +				
   2.481 +                }
   2.482 +
   2.483 +                byteArrayString = builder.toString();
   2.484 +                return byteArrayString.trim();
   2.485 +
   2.486 +
   2.487 +
     3.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     3.2 +++ b/doc/notes/stv/20200308-Testing-1182.txt	Wed Jul 29 12:16:11 2020 +0100
     3.3 @@ -0,0 +1,600 @@
     3.4 +#
     3.5 +# <meta:header>
     3.6 +#   <meta:licence>
     3.7 +#     Copyright (c) 2018, ROE (http://www.roe.ac.uk/)
     3.8 +#
     3.9 +#     This information is free software: you can redistribute it and/or modify
    3.10 +#     it under the terms of the GNU General Public License as published by
    3.11 +#     the Free Software Foundation, either version 3 of the License, or
    3.12 +#     (at your option) any later version.
    3.13 +#
    3.14 +#     This information is distributed in the hope that it will be useful,
    3.15 +#     but WITHOUT ANY WARRANTY; without even the implied warranty of
    3.16 +#     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    3.17 +#     GNU General Public License for more details.
    3.18 +#  
    3.19 +#     You should have received a copy of the GNU General Public License
    3.20 +#     along with this program.  If not, see <http://www.gnu.org/licenses/>.
    3.21 +#   </meta:licence>
    3.22 +# </meta:header>
    3.23 +#
    3.24 +#
    3.25 +
    3.26 +##########################################################
    3.27 +#####         Notes on Testing fix for 1182          #####
    3.28 +##########################################################
    3.29 +
    3.30 +
    3.31 +## Create OSA-TAP service in ftpy
    3.32 +
    3.33 +python3
    3.34 +
    3.35 +
    3.36 +import firethorn
    3.37 +import firethorn_utils.configurator as configur
    3.38 +ft = firethorn.Firethorn(endpoint="http://gillian:8080/firethorn")
    3.39 +ft.login(firethorn.config.adminuser, firethorn.config.adminpass, firethorn.config.admingroup)
    3.40 +configurator =  configur.Configurator(ft)
    3.41 +configurator.load_resources("/home/firethorn.py/firethorn/data/osa-tap.json")
    3.42 +
    3.43 +
    3.44 +Importing JDBC Schema: ATLASDR1
    3.45 +Importing JDBC Schema: ATLASDR2
    3.46 +Importing JDBC Schema: ATLASDR3
    3.47 +Importing JDBC Schema: ATLASDR4
    3.48 +Importing JDBC Schema: 2MASS
    3.49 +Importing JDBC Schema: 2XMM
    3.50 +Importing JDBC Schema: WISE
    3.51 +Importing JDBC Schema: VIKINGDR3
    3.52 +Importing JDBC Schema: VHSDR1
    3.53 +Importing JDBC Schema: MGC
    3.54 +Importing JDBC Schema: GLIMPSE
    3.55 +Importing JDBC Schema: FIRST
    3.56 +Importing JDBC Schema: DENIS
    3.57 +Importing JDBC Schema: VPHASDR3
    3.58 +Importing JDBC Schema: VVVDR4
    3.59 +ERROR:root:HTTP Error 404: 
    3.60 +Traceback (most recent call last):
    3.61 +  File "/usr/local/lib/python3.5/dist-packages/firethorn/models/base/base_object.py", line 90, in get_json
    3.62 +    with urllib.request.urlopen( req, data) as response:
    3.63 +  File "/usr/lib/python3.5/urllib/request.py", line 163, in urlopen
    3.64 +    return opener.open(url, data, timeout)
    3.65 +  File "/usr/lib/python3.5/urllib/request.py", line 472, in open
    3.66 +    response = meth(req, response)
    3.67 +  File "/usr/lib/python3.5/urllib/request.py", line 582, in http_response
    3.68 +    'http', request, response, code, msg, hdrs)
    3.69 +  File "/usr/lib/python3.5/urllib/request.py", line 510, in error
    3.70 +    return self._call_chain(*args)
    3.71 +  File "/usr/lib/python3.5/urllib/request.py", line 444, in _call_chain
    3.72 +    result = func(*args)
    3.73 +  File "/usr/lib/python3.5/urllib/request.py", line 590, in http_error_default
    3.74 +    raise HTTPError(req.full_url, code, msg, hdrs, fp)
    3.75 +urllib.error.HTTPError: HTTP Error 404: 
    3.76 +ERROR:root:Expecting value: line 1 column 1 (char 0)
    3.77 +Traceback (most recent call last):
    3.78 +  File "/usr/local/lib/python3.5/dist-packages/firethorn/models/adql/adql_resource.py", line 112, in import_jdbc_schema
    3.79 +    response_json_list = json.loads(response.text)
    3.80 +  File "/usr/lib/python3.5/json/__init__.py", line 319, in loads
    3.81 +    return _default_decoder.decode(s)
    3.82 +  File "/usr/lib/python3.5/json/decoder.py", line 339, in decode
    3.83 +    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
    3.84 +  File "/usr/lib/python3.5/json/decoder.py", line 357, in raw_decode
    3.85 +    raise JSONDecodeError("Expecting value", s, err.value) from None
    3.86 +json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
    3.87 +Importing JDBC Schema: SDSSDR7
    3.88 +Importing JDBC Schema: SDSSDR9
    3.89 +TAP Service available at: http://gillian:8080/firethorn/tap/376723/
    3.90 +	
    3.91 +
    3.92 +
    3.93 +
    3.94 +## -----------------------------
    3.95 +## Test with ftpy
    3.96 +
    3.97 +
    3.98 +resource=ft.firethorn_engine.select_adql_resource_by_ident("http://gillian:8080/firethorn/adql/resource/376723")
    3.99 +
   3.100 +
   3.101 +#
   3.102 +# Create and run a query on the resource.
   3.103 +
   3.104 +
   3.105 +
   3.106 +
   3.107 +## Test 1: Test a query with an TINYINT column (filterID from table Filter)
   3.108 +## ---------------------------------------------------------------------------------------
   3.109 +
   3.110 +
   3.111 +
   3.112 +query_str = "SELECT TOP 10 * FROM ATLASDR1.Filter"
   3.113 +
   3.114 +query_obj = resource.create_query(
   3.115 +    query_str,
   3.116 +    "COMPLETED",
   3.117 +    None,
   3.118 +    3000000
   3.119 +    )
   3.120 +
   3.121 +
   3.122 +print(
   3.123 +    query_obj.table()
   3.124 +     )
   3.125 +
   3.126 +{
   3.127 +  "depth": "PARTIAL",
   3.128 +  "resource": "http://gillian:8080/firethorn/adql/resource/568066",
   3.129 +  "query": "http://gillian:8080/firethorn/blue/query/567725",
   3.130 +  "name": "XX_MLASDAE2KDLKIAAAAFYLTZ2XTM",
   3.131 +  "parent": "http://gillian:8080/firethorn/adql/schema/568262",
   3.132 +  "text": null,
   3.133 +  "url": "http://gillian:8080/firethorn/adql/table/567939",
   3.134 +  "formats": {
   3.135 +    "datatable": "http://gillian:8080/firethorn/adql/table/567939/datatable",
   3.136 +    "votable": "http://gillian:8080/firethorn/adql/table/567939/votable"
   3.137 +  },
   3.138 +  "schema": "http://gillian:8080/firethorn/adql/schema/568262",
   3.139 +  "self": "http://gillian:8080/firethorn/adql/table/567939",
   3.140 +  "fullname": "temp.XX_MLASDAE2KDLKIAAAAFYLTZ2XTM",
   3.141 +  "type": "http://data.metagrid.co.uk/wfau/firethorn/types/entity/adql-table-1.0.json",
   3.142 +  "columns": "http://gillian:8080/firethorn/adql/table/567939/columns/select",
   3.143 +  "ident": "567939",
   3.144 +  "metadata": {
   3.145 +    "adql": {
   3.146 +      "status": "COMPLETED",
   3.147 +      "count": 10
   3.148 +    }
   3.149 +  },
   3.150 +  "modified": "2020-03-08T11:28:31.132",
   3.151 +  "created": "2020-03-08T11:28:31.132",
   3.152 +  "base": "http://gillian:8080/firethorn/jdbc/table/567938",
   3.153 +  "root": "http://gillian:8080/firethorn/jdbc/table/567938",
   3.154 +  "owner": "http://gillian:8080/firethorn/community-member/155"
   3.155 +}
   3.156 +
   3.157 +
   3.158 +
   3.159 +py_table = query_obj.table().as_astropy()
   3.160 +Downloading http://gillian:8080/firethorn/adql/table/569661/votable
   3.161 +|=======================================================================================================================================================================| 5.1k/5.1k (100.00%)         0s
   3.162 +
   3.163 +
   3.164 +py_table.pprint()
   3.165 +filterID shortName      name                                                               description                                                           ...   vegaToAB    oneSecMLVg  isSectioned
   3.166 +-------- --------- -------------- ------------------------------------------------------------------------------------------------------------------------------ ... ------------ ------------ -----------
   3.167 +       0      NONE           NONE                                                                                                                           NONE ... -999999500.0 -999999500.0           0
   3.168 +       1         u         u_SDSS Sloan u filter: see  Tokunaga et al., 2002, PASP, 114, 180; http://www.astro-wise.org/~omegacam/documents/3110_user_manual.pdf ...         0.94 -999999500.0           0
   3.169 +       2         g         g_SDSS Sloan g filter: see  Tokunaga et al., 2002, PASP, 114, 180; http://www.astro-wise.org/~omegacam/documents/3110_user_manual.pdf ...        -0.08 -999999500.0           0
   3.170 +       3         r         r_SDSS Sloan r filter (see Tokunaga et al., 2002, PASP, 114, 180; http://www.astro-wise.org/~omegacam/documents/3110_user_manual.pdf) ...         0.17 -999999500.0           0
   3.171 +       4         i         i_SDSS Sloan i filter (see Tokunaga et al., 2002, PASP, 114, 180; http://www.astro-wise.org/~omegacam/documents/3110_user_manual.pdf) ...          0.4 -999999500.0           0
   3.172 +       5         z         z_SDSS Sloan z filter (see Tokunaga et al., 2002, PASP, 114, 180; http://www.astro-wise.org/~omegacam/documents/3110_user_manual.pdf) ...         0.57 -999999500.0           0
   3.173 +       6         B         B_JOHN                                                                                                               Johnson B filter ...       -0.044 -999999500.0           0
   3.174 +       7         V         V_JOHN                                                                                                               Johnson V filter ...       -0.163 -999999500.0           0
   3.175 +       8      BLNK OMEGACAM blank                                                                                         OMEGACAM blank filter (e.g. for darks) ... -999999500.0 -999999500.0           0
   3.176 +       9     vStrm         v_STRM                                                                                                                   Stroemgren v ... -999999500.0 -999999500.0           0
   3.177 +
   3.178 +## VALID
   3.179 +## filterID values are printed correctly
   3.180 +
   3.181 +
   3.182 +
   3.183 +## Check VOTable file
   3.184 +
   3.185 +import requests
   3.186 +r = requests.get("http://gillian:8080/firethorn/adql/table/569661/votable")
   3.187 +r.text
   3.188 +
   3.189 +"<?xml version='1.0' encoding='UTF-8'?><VOTABLE xmlns='http://www.ivoa.net/xml/VOTable/v1.3' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://www.ivoa.net/xml/VOTable/v1.3 http://www.ivoa.net/xml/VOTable/v1.3' version='1.3'><RESOURCE type='results'><INFO name='QUERY_STATUS' value='OK'></INFO><INFO name='link' value='http://gillian:8080/firethorn/adql/table/569661'/><TABLE ID='table.569661' name='XX_UYLIZCPW3VTLWAAAAFYLTZ74YA'><FIELD ID='column.569755' name='filterID' datatype='short' xtype='null'><LINK content-type='application/json' content-role='metadata' href='http://gillian:8080/firethorn/adql/column/569755'/></FIELD><FIELD ID='column.569757' name='shortName' datatype='char' arraysize='10' xtype='null'><LINK content-type='application/json' content-role='metadata' href='http://gillian:8080/firethorn/adql/column/569757'/></FIELD><FIELD ID='column.569759' name='name' datatype='char' arraysize='16' xtype='null'><LINK content-type='application/json' content-role='metadata' href='http://gillian:8080/firethorn/adql/column/569759'/></FIELD><FIELD ID='column.569761' name='description' datatype='char' arraysize='256' xtype='null'><LINK content-type='application/json' content-role='metadata' href='http://gillian:8080/firethorn/adql/column/569761'/></FIELD><FIELD ID='column.569763' name='cutOn' datatype='float' xtype='null'><LINK content-type='application/json' content-role='metadata' href='http://gillian:8080/firethorn/adql/column/569763'/></FIELD><FIELD ID='column.569765' name='cutOff' datatype='float' xtype='null'><LINK content-type='application/json' content-role='metadata' href='http://gillian:8080/firethorn/adql/column/569765'/></FIELD><FIELD ID='column.569767' name='aebv' datatype='float' xtype='null'><LINK content-type='application/json' content-role='metadata' href='http://gillian:8080/firethorn/adql/column/569767'/></FIELD><FIELD ID='column.569769' name='vegaToAB' datatype='float' xtype='null'><LINK content-type='application/json' content-role='metadata' href='http://gillian:8080/firethorn/adql/column/569769'/></FIELD><FIELD ID='column.569771' name='oneSecMLVg' datatype='float' xtype='null'><LINK content-type='application/json' content-role='metadata' href='http://gillian:8080/firethorn/adql/column/569771'/></FIELD><FIELD ID='column.569773' name='isSectioned' datatype='short' xtype='null'><LINK content-type='application/json' content-role='metadata' href='http://gillian:8080/firethorn/adql/column/569773'/></FIELD><DATA><TABLEDATA><TR><TD>0</TD><TD>NONE</TD><TD>NONE</TD><TD>NONE</TD><TD>-9.99999488E8</TD><TD>-9.99999488E8</TD><TD>-9.99999488E8</TD><TD>-9.99999488E8</TD><TD>-9.99999488E8</TD><TD>0</TD></TR><TR><TD>1</TD><TD>u</TD><TD>u_SDSS</TD><TD>Sloan u filter: see  Tokunaga et al., 2002, PASP, 114, 180; http://www.astro-wise.org/~omegacam/documents/3110_user_manual.pdf</TD><TD>0.32690000534057617</TD><TD>0.3828999996185303</TD><TD>5.15500020980835</TD><TD>0.9399999976158142</TD><TD>-9.99999488E8</TD><TD>0</TD></TR><TR><TD>2</TD><TD>g</TD><TD>g_SDSS</TD><TD>Sloan g filter: see  Tokunaga et al., 2002, PASP, 114, 180; http://www.astro-wise.org/~omegacam/documents/3110_user_manual.pdf</TD><TD>0.4092000126838684</TD><TD>0.5457000136375427</TD><TD>3.7929999828338623</TD><TD>-0.07999999821186066</TD><TD>-9.99999488E8</TD><TD>0</TD></TR><TR><TD>3</TD><TD>r</TD><TD>r_SDSS</TD><TD>Sloan r filter (see Tokunaga et al., 2002, PASP, 114, 180; http://www.astro-wise.org/~omegacam/documents/3110_user_manual.pdf)</TD><TD>0.5546000003814697</TD><TD>0.6916999816894531</TD><TD>2.750999927520752</TD><TD>0.17000000178813934</TD><TD>-9.99999488E8</TD><TD>0</TD></TR><TR><TD>4</TD><TD>i</TD><TD>i_SDSS</TD><TD>Sloan i filter (see Tokunaga et al., 2002, PASP, 114, 180; http://www.astro-wise.org/~omegacam/documents/3110_user_manual.pdf)</TD><TD>0.6949999928474426</TD><TD>0.8309999704360962</TD><TD>2.0859999656677246</TD><TD>0.4000000059604645</TD><TD>-9.99999488E8</TD><TD>0</TD></TR><TR><TD>5</TD><TD>z</TD><TD>z_SDSS</TD><TD>Sloan z filter (see Tokunaga et al., 2002, PASP, 114, 180; http://www.astro-wise.org/~omegacam/documents/3110_user_manual.pdf)</TD><TD>0.8654999732971191</TD><TD>0.9605000019073486</TD><TD>1.4789999723434448</TD><TD>0.5699999928474426</TD><TD>-9.99999488E8</TD><TD>0</TD></TR><TR><TD>6</TD><TD>B</TD><TD>B_JOHN</TD><TD>Johnson B filter</TD><TD>0.38999998569488525</TD><TD>0.49000000953674316</TD><TD>-9.99999488E8</TD><TD>-0.04399999976158142</TD><TD>-9.99999488E8</TD><TD>0</TD></TR><TR><TD>7</TD><TD>V</TD><TD>V_JOHN</TD><TD>Johnson V filter</TD><TD>0.5</TD><TD>0.6000000238418579</TD><TD>-9.99999488E8</TD><TD>-0.16300000250339508</TD><TD>-9.99999488E8</TD><TD>0</TD></TR><TR><TD>8</TD><TD>BLNK</TD><TD>OMEGACAM blank</TD><TD>OMEGACAM blank filter (e.g. for darks)</TD><TD>-9.99999488E8</TD><TD>-9.99999488E8</TD><TD>-9.99999488E8</TD><TD>-9.99999488E8</TD><TD>-9.99999488E8</TD><TD>0</TD></TR><TR><TD>9</TD><TD>vStrm</TD><TD>v_STRM</TD><TD>Stroemgren v</TD><TD>0.40049999952316284</TD><TD>0.42149999737739563</TD><TD>-9.99999488E8</TD><TD>-9.99999488E8</TD><TD>-9.99999488E8</TD><TD>0</TD></TR></TABLEDATA></DATA></TABLE></RESOURCE></VOTABLE>"
   3.190 +
   3.191 +
   3.192 +
   3.193 +## name='filterID' datatype='short'
   3.194 +## This looks ok to me
   3.195 +
   3.196 +
   3.197 +
   3.198 +
   3.199 +
   3.200 +## Test 2: Test column of type BYTE (array)
   3.201 +## ---------------------------------------------------------------------------------------
   3.202 +
   3.203 +
   3.204 +## Test with a TAP sync query:
   3.205 +
   3.206 +curl -L "http://localhost:8080/firethorn/tap/376723/sync?QUERY=SELECT+TOP+5+img+FROM+BestDR7.SpecObjAll&REQUEST=doQuery&LANG=ADQL&FORMAT=VOTABLE"
   3.207 +
   3.208 +
   3.209 +<VOTABLE xmlns="http://www.ivoa.net/xml/VOTable/v1.3" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.ivoa.net/xml/VOTable/v1.3 http://www.ivoa.net/xml/VOTable/v1.3" version="1.3">
   3.210 +<RESOURCE type="results">
   3.211 +<INFO name="QUERY_STATUS" value="OK"/>
   3.212 +<INFO name="link" value="http://localhost:8080/firethorn/adql/table/645873"/>
   3.213 +<TABLE ID="table.645873" name="XX_LNF44QUELOQQWAAAAFYLT6RCFM">
   3.214 +<FIELD ID="column.648345" name="img" datatype="unsignedByte" arraysize="8000" xtype="null">
   3.215 +<LINK content-type="application/json" content-role="metadata" href="http://localhost:8080/firethorn/adql/column/648345"/>
   3.216 +</FIELD>
   3.217 +<DATA>
   3.218 +<TABLEDATA>
   3.219 +<TR>
   3.220 +<TD>
   3.221 +71 73 70 56 55 97 82 3 168 2 162 0 0 255 255 255 0 0 0 255 0 0 0 255 0 0 0 255 0 255 255 255 0 255 255 255 0 44 0 0 0 0 82 3 168 2 0 3 254 8 186 220 254 48 202 73 171 189 56 235 205 187 255 96 40 142 100 105 158 104 170 174 108 235 190 112 44 207 116 109 223 120 174 239 124 239 255 192 160 112 72 44 26 143 200 164 114 201 108 58 159 208 168 116 74 173 90 175 216 172 118 203 237 122 191 224 176 120 76 46 155 207 232 180 122 205 110 187 223 240 184 124 78 175 219 239 248 188 126 207 239 251 255 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 46 1 205 155 1 210 210 16 207 30 214 17 216 13 212 217 211 222 14 218 15 225 0 223 226 28 222 227 232 211 12 235 44 227 226 239 236 213 224 234 244 27 241 239 216 232 231 245 224 221 213 248 184 101 216 183 173 66 60 19 237 224 1 188 167 238 153 192 131 58 32 66 131 162 77 224 2 137 20 32 90 84 192 254 13 163 188 130 255 62 114 52 119 79 228 200 108 23 87 108 36 185 146 35 190 9 225 58 122 52 73 243 36 185 154 6 51 230 179 22 147 231 54 125 26 42 86 204 233 238 98 79 155 41 201 205 76 74 242 102 144 150 19 165 164 147 183 244 231 65 135 32 153 194 180 138 114 104 86 165 85 105 122 109 234 242 4 53 137 49 253 245 132 170 117 234 133 149 45 129 178 11 171 17 235 87 167 120 145 166 197 224 54 47 74 149 254 144 230 29 107 193 99 216 23 103 163 98 233 123 243 48 78 167 123 131 146 253 72 88 176 223 183 129 47 107 181 76 2 237 93 159 147 63 103 54 152 46 223 102 205 18 12 143 22 189 153 110 102 213 128 179 106 188 70 244 169 226 43 145 71 58 62 125 114 108 213 151 44 83 135 46 252 122 94 140 217 172 129 195 171 140 122 222 209 226 171 97 18 140 14 186 166 114 204 178 231 38 6 43 52 97 103 202 129 217 10 55 206 189 180 69 135 226 69 236 190 45 164 161 200 238 238 163 227 29 122 118 230 117 166 200 239 98 127 95 142 179 254 246 248 37 253 101 146 92 242 101 167 159 112 244 53 101 90 121 253 248 181 160 118 74 89 71 222 126 122 181 69 96 133 46 53 148 222 104 235 156 7 89 80 253 217 36 84 91 70 89 5 96 7 235 177 7 196 133 34 162 200 225 92 7 198 120 25 115 188 53 183 149 129 5 242 165 97 92 227 189 247 24 108 140 101 212 226 131 15 158 67 29 142 188 57 214 96 139 62 138 85 66 110 243 209 216 35 116 248 241 135 152 138 84 176 120 34 95 38 18 20 228 112 130 237 152 227 110 125 221 215 66 126 73 137 41 35 120 107 134 215 27 134 154 165 56 227 106 44 206 25 160 113 101 254 23 34 8 95 86 87 227 132 72 66 214 160 156 3 97 57 5 97 145 237 88 228 100 80 230 104 99 156 83 114 25 168 132 25 110 41 169 128 254 153 25 92 155 217 129 230 219 107 138 70 106 103 149 148 222 185 105 147 254 49 56 221 141 250 105 121 41 149 111 2 170 170 119 70 26 26 69 162 156 202 202 218 159 169 62 250 101 174 140 62 54 170 89 172 102 10 104 158 192 14 254 25 43 147 194 134 182 168 131 173 37 11 38 179 212 66 27 194 125 136 22 74 30 174 164 58 99 235 173 32 61 91 155 172 23 110 228 89 164 24 149 38 100 180 2 110 248 193 115 221 22 200 88 110 35 78 41 151 76 22 74 86 35 145 129 94 149 174 189 25 58 217 235 171 176 46 91 150 168 248 241 180 151 148 40 16 250 45 14 83 137 187 46 166 70 53 122 46 166 26 202 151 238 158 179 66 88 84 171 226 105 202 49 119 63 21 91 238 90 238 2 196 86 64 59 161 28 226 191 20 119 84 114 197 234 109 73 107 137 51 83 236 35 84 230 194 224 240 195 177 252 172 135 208 91 16 141 27 208 72 47 145 114 33 70 103 177 244 24 77 39 45 245 212 84 87 109 245 213 88 103 173 245 214 92 119 237 245 215 96 135 45 246 216 100 151 109 246 217 104 167 173 246 218 108 183 237 246 219 112 199 45 247 220 116 215 109 247 221 120 231 173 247 222 124 247 237 247 223 128 7 46 248 224 132 23 110 248 225 136 39 174 248 226 140 55 238 248 227 144 71 46 249 228 148 254 87 110 249 229 152 103 174 249 230 156 119 238 249 231 160 135 46 250 232 164 151 110 250 233 168 167 174 250 234 172 183 238 250 235 176 199 46 251 236 180 215 46 138 162 184 231 174 251 238 188 247 238 251 239 192 7 47 252 240 196 23 111 252 241 200 39 175 252 242 204 55 239 252 243 208 71 47 253 244 191 67 242 52 194 250 19
   3.222 +
   3.223 +
   3.224 +....
   3.225 +
   3.226 +
   3.227 +212 218 181 209 172 223 64 204 223 124 252 56 85 106 179 253 45 178 234 93 168 211 124 224 6 250 83 243 77 91 81 221 224 77 157 211 55 154 213 204 61 225 210 61 224 80 202 208 167 42 210 69 29 186 40 139 205 31 94 159 62 29 198 94 109 127 248 70 180 110 221 223 195 181 92 98 173 226 209 125 177 109 122 227 200 157 227 241 187 49 227 162 221 227 253 251 227 154 141 214 84 75 164 169 61 228 73 174 228 75 206 228 77 238 228 79 14 229 81 46 229 83 78 229 85 110 229 87 142 229 89 174 229 91 206 229 135 147 0 0 59
   3.228 +</TD>
   3.229 +</TR>
   3.230 +</TABLEDATA>
   3.231 +</DATA>
   3.232 +</TABLE>
   3.233 +</RESOURCE>
   3.234 +</VOTABLE>
   3.235 +
   3.236 +
   3.237 +
   3.238 +## VALID
   3.239 +## Column printed as Space-delimited byte array
   3.240 +## Column Type in VOTable: name="img" datatype="unsignedByte"
   3.241 +
   3.242 +
   3.243 +
   3.244 +
   3.245 +
   3.246 +
   3.247 +
   3.248 +## Test3: Validate with Taplint
   3.249 +## ---------------------------------------------------------------------------------------
   3.250 +
   3.251 +java -jar stilts.jar taplint tapurl=http://localhost:8080/firethorn/tap/376723/  debug=true
   3.252 +This is STILTS taplint, 3.2/1c07f08 (2019-11-18)
   3.253 +Static report types: ERROR(139), WARNING(56), INFO(23), SUMMARY(9), FAILURE(22)
   3.254 +
   3.255 +Section TMV: Validate table metadata against XML schema
   3.256 +I-TMV-VURL-1 Validating http://localhost:8080/firethorn/tap/376723/tables as tableset (http://www.ivoa.net/xml/VODataService/v1.1)
   3.257 +S-TMV-VALI-1 SAX report: warnings 0, errors 0, fatal 0
   3.258 +
   3.259 +Section TME: Check content of tables metadata from /tables
   3.260 +I-TME-CURL-1 Reading capability metadata from http://localhost:8080/firethorn/tap/376723/capabilities
   3.261 +I-TME-TURL-1 Reading table metadata from http://localhost:8080/firethorn/tap/376723/tables
   3.262 +S-TME-SUMM-1 Schemas: 17, Tables: 739, Columns: 31211, Foreign Keys: 0
   3.263 +S-TME-FLGS-1 Standard column flags: indexed: 0, primary: 0, nullable: 0
   3.264 +S-TME-FLGO-1 Other column flags: none
   3.265 +
   3.266 +Section TMS: Check content of tables metadata from TAP_SCHEMA
   3.267 +I-TMS-TAPV-1 Validating for TAP version V1.0
   3.268 +I-TMS-QSUB-1 Submitting query: SELECT COUNT(*) AS nr FROM TAP_SCHEMA.schemas
   3.269 +I-TMS-QGET-1 Query GET URL: http://localhost:8080/firethorn/tap/376723/sync?REQUEST=doQuery&LANG=ADQL&QUERY=SELECT+COUNT%28*%29+AS+nr+FROM+TAP_SCHEMA.schemas
   3.270 +I-TMS-QSUB-2 Submitting query: SELECT COUNT(*) AS nr FROM TAP_SCHEMA.tables
   3.271 +I-TMS-QGET-2 Query GET URL: http://localhost:8080/firethorn/tap/376723/sync?REQUEST=doQuery&LANG=ADQL&QUERY=SELECT+COUNT%28*%29+AS+nr+FROM+TAP_SCHEMA.tables
   3.272 +I-TMS-QSUB-3 Submitting query: SELECT COUNT(*) AS nr FROM TAP_SCHEMA.columns
   3.273 +I-TMS-QGET-3 Query GET URL: http://localhost:8080/firethorn/tap/376723/sync?REQUEST=doQuery&LANG=ADQL&QUERY=SELECT+COUNT%28*%29+AS+nr+FROM+TAP_SCHEMA.columns
   3.274 +I-TMS-QSUB-4 Submitting query: SELECT COUNT(*) AS nr FROM TAP_SCHEMA.keys
   3.275 +I-TMS-QGET-4 Query GET URL: http://localhost:8080/firethorn/tap/376723/sync?REQUEST=doQuery&LANG=ADQL&QUERY=SELECT+COUNT%28*%29+AS+nr+FROM+TAP_SCHEMA.keys
   3.276 +I-TMS-QSUB-5 Submitting query: SELECT COUNT(*) AS nr FROM TAP_SCHEMA.key_columns
   3.277 +I-TMS-QGET-5 Query GET URL: http://localhost:8080/firethorn/tap/376723/sync?REQUEST=doQuery&LANG=ADQL&QUERY=SELECT+COUNT%28*%29+AS+nr+FROM+TAP_SCHEMA.key_columns
   3.278 +I-TMS-QSUB-6 Submitting query: SELECT principal, indexed, std, "size" FROM TAP_SCHEMA.columns
   3.279 +I-TMS-QGET-6 Query GET URL: http://localhost:8080/firethorn/tap/376723/sync?REQUEST=doQuery&LANG=ADQL&QUERY=SELECT+principal%2C+indexed%2C+std%2C+%22size%22+FROM+TAP_SCHEMA.columns&MAXREC=31221
   3.280 +I-TMS-QSUB-7 Submitting query: SELECT TOP 1 * FROM TAP_SCHEMA.columns
   3.281 +I-TMS-QGET-7 Query GET URL: http://localhost:8080/firethorn/tap/376723/sync?REQUEST=doQuery&LANG=ADQL&QUERY=SELECT+TOP+1+*+FROM+TAP_SCHEMA.columns&MAXREC=1
   3.282 +I-TMS-QSUB-8 Submitting query: SELECT ft_column_id, std, indexed, principal, arraysize, ts_column_id, datatype, utype, ucd, unit, description, column_name, table_name FROM TAP_SCHEMA.columns
   3.283 +I-TMS-QGET-8 Query GET URL: http://localhost:8080/firethorn/tap/376723/sync?REQUEST=doQuery&LANG=ADQL&QUERY=SELECT+ft_column_id%2C+std%2C+indexed%2C+principal%2C+arraysize%2C+ts_column_id%2C+datatype%2C+utype%2C+ucd%2C+unit%2C+description%2C+column_name%2C+table_name+FROM+TAP_SCHEMA.columns&MAXREC=31221
   3.284 +I-TMS-QSUB-9 Submitting query: SELECT from_column, target_column, key_id FROM TAP_SCHEMA.key_columns
   3.285 +I-TMS-QGET-9 Query GET URL: http://localhost:8080/firethorn/tap/376723/sync?REQUEST=doQuery&LANG=ADQL&QUERY=SELECT+from_column%2C+target_column%2C+key_id+FROM+TAP_SCHEMA.key_columns&MAXREC=31221
   3.286 +E-TMS-TSCT-1 Type mismatch for column TAP_SCHEMA.schemas.schema_name: datatype=char is not varchar-like (TAP 1.0)
   3.287 +E-TMS-TSCT-2 Type mismatch for column TAP_SCHEMA.schemas.utype: datatype=char is not varchar-like (TAP 1.0)
   3.288 +E-TMS-TSCT-3 Type mismatch for column TAP_SCHEMA.schemas.description: datatype=char is not varchar-like (TAP 1.0)
   3.289 +I-TMS-TSNS-1 2 non-standard columns in TAP_SCHEMA.schemas: [ts_schema_id, ft_schema_id]
   3.290 +E-TMS-TSCT-4 Type mismatch for column TAP_SCHEMA.tables.schema_name: datatype=char is not varchar-like (TAP 1.0)
   3.291 +E-TMS-TSCT-5 Type mismatch for column TAP_SCHEMA.tables.table_name: datatype=char is not varchar-like (TAP 1.0)
   3.292 +E-TMS-TSCT-6 Type mismatch for column TAP_SCHEMA.tables.table_type: datatype=char is not varchar-like (TAP 1.0)
   3.293 +E-TMS-TSCT-7 Type mismatch for column TAP_SCHEMA.tables.utype: datatype=char is not varchar-like (TAP 1.0)
   3.294 +E-TMS-TSCT-8 Type mismatch for column TAP_SCHEMA.tables.description: datatype=char is not varchar-like (TAP 1.0)
   3.295 +I-TMS-TSNS-2 2 non-standard columns in TAP_SCHEMA.tables: [ts_table_id, ft_table_id]
   3.296 +E-TMS-TSCT-9 Type mismatch for column TAP_SCHEMA.columns.table_name: datatype=char is not varchar-like (TAP 1.0)
   3.297 +I-TMS-TSNS-3 3 non-standard columns in TAP_SCHEMA.columns: [arraysize, ts_column_id, ft_column_id]
   3.298 +I-TMS-TSNS-4 1 non-standard columns in TAP_SCHEMA.keys: [ts_key_id]
   3.299 +I-TMS-TSNS-5 1 non-standard columns in TAP_SCHEMA.key_columns: [ts_key_column_id]
   3.300 +S-TMS-SUMM-1 Schemas: 17, Tables: 739, Columns: 31211, Foreign Keys: 0
   3.301 +S-TMS-FLGS-1 Standard column flags: indexed: 0, principal: 7, std: 33
   3.302 +S-TMS-QNUM-1 Successful/submitted TAP queries: 29/29
   3.303 +S-TMS-QTIM-1 Average successful query time: 1.5s
   3.304 +I-TMS-QSUB-x (20 more)
   3.305 +I-TMS-QGET-x (20 more)
   3.306 +E-TMS-TSCT-x (18 more)
   3.307 +
   3.308 +Section TMC: Compare table metadata from /tables and TAP_SCHEMA
   3.309 +
   3.310 +Section CPV: Validate capabilities against XML schema
   3.311 +I-CPV-VURL-1 Validating http://localhost:8080/firethorn/tap/376723/capabilities as capabilities (http://www.ivoa.net/xml/VOSICapabilities/v1.0)
   3.312 +S-CPV-VALI-1 SAX report: warnings 0, errors 0, fatal 0
   3.313 +
   3.314 +Section CAP: Check TAP and TAPRegExt content of capabilities document
   3.315 +
   3.316 +Section AVV: Validate availability against XML schema
   3.317 +I-AVV-VURL-1 Validating http://localhost:8080/firethorn/tap/376723/availability as availability (http://www.ivoa.net/xml/VOSIAvailability/v1.0)
   3.318 +S-AVV-VALI-1 SAX report: warnings 0, errors 0, fatal 0
   3.319 +
   3.320 +Section QGE: Make ADQL queries in sync GET mode
   3.321 +I-QGE-QSUB-1 Submitting query: SELECT TOP 10 programmeID FROM VPHASDR3.RequiredFilters
   3.322 +I-QGE-QGET-1 Query GET URL: http://localhost:8080/firethorn/tap/376723/sync?REQUEST=doQuery&LANG=ADQL&QUERY=SELECT+TOP+10+programmeID+FROM+VPHASDR3.RequiredFilters
   3.323 +I-QGE-QSUB-2 Submitting query: SELECT programmeID FROM VPHASDR3.RequiredFilters
   3.324 +I-QGE-QGET-2 Query GET URL: http://localhost:8080/firethorn/tap/376723/sync?REQUEST=doQuery&LANG=ADQL&QUERY=SELECT+programmeID+FROM+VPHASDR3.RequiredFilters&MAXREC=9
   3.325 +I-QGE-QSUB-3 Submitting query: SELECT TOP 10 programmeID FROM VPHASDR3.RequiredFilters
   3.326 +I-QGE-QGET-3 Query GET URL: http://localhost:8080/firethorn/tap/376723/sync?REQUEST=doQuery&LANG=ADQL&QUERY=SELECT+TOP+10+programmeID+FROM+VPHASDR3.RequiredFilters&DUMMY=ignore-me
   3.327 +I-QGE-QSUB-4 Submitting query: SELECT TOP 1 programmeID FROM VPHASDR3.RequiredFilters
   3.328 +I-QGE-QGET-4 Query GET URL: http://localhost:8080/firethorn/tap/376723/sync?REQUEST=doQuery&LANG=ADQL-2.0&QUERY=SELECT+TOP+1+programmeID+FROM+VPHASDR3.RequiredFilters
   3.329 +I-QGE-QSUB-5 Submitting query: SELECT TOP 1 programmeID FROM VPHASDR3.RequiredFilters
   3.330 +I-QGE-QGET-5 Query GET URL: http://localhost:8080/firethorn/tap/376723/sync?REQUEST=doQuery&LANG=ADQL&QUERY=SELECT+TOP+1+programmeID+FROM+VPHASDR3.RequiredFilters
   3.331 +I-QGE-QSUB-6 Submitting query: SELECT TOP 8 aperture, transFile AS taplint_c_2, V.surveyID, tableID AS taplint_c_4, programmeID FROM VPHASDR3.RequiredListDrivenProduct AS V
   3.332 +I-QGE-QGET-6 Query GET URL: http://localhost:8080/firethorn/tap/376723/sync?REQUEST=doQuery&LANG=ADQL&QUERY=SELECT+TOP+8+aperture%2C+transFile+AS+taplint_c_2%2C+V.surveyID%2C+tableID+AS+taplint_c_4%2C+programmeID++FROM+VPHASDR3.RequiredListDrivenProduct+AS+V
   3.333 +I-QGE-QSUB-7 Submitting query: SELECT fieldID FROM VPHASDR3.StdFieldInfo
   3.334 +I-QGE-QGET-7 Query GET URL: http://localhost:8080/firethorn/tap/376723/sync?REQUEST=doQuery&LANG=ADQL&QUERY=SELECT+fieldID+FROM+VPHASDR3.StdFieldInfo&MAXREC=0
   3.335 +I-QGE-DUFF-1 Submitting query expected to fail (bad ADQL): DUFF QUERY
   3.336 +I-QGE-QGET-8 Query GET URL: http://localhost:8080/firethorn/tap/376723/sync?REQUEST=doQuery&LANG=ADQL&QUERY=DUFF+QUERY
   3.337 +I-QGE-DUFF-2 Submitting query expected to fail (unknown query language): SELECT TOP 1 * FROM TAP_SCHEMA.tables
   3.338 +I-QGE-QGET-9 Query GET URL: http://localhost:8080/firethorn/tap/376723/sync?REQUEST=doQuery&LANG=OOBLECK&QUERY=SELECT+TOP+1+*+FROM+TAP_SCHEMA.tables
   3.339 +S-QGE-QNUM-1 Successful/submitted TAP queries: 7/7
   3.340 +S-QGE-QTIM-1 Average successful query time: 1.1s
   3.341 +
   3.342 +Section QPO: Make ADQL queries in sync POST mode
   3.343 +I-QPO-QSUB-1 Submitting query: SELECT TOP 10 programmeID FROM VPHASDR3.RequiredFilters
   3.344 +I-QPO-QSUB-2 Submitting query: SELECT programmeID FROM VPHASDR3.RequiredFilters
   3.345 +I-QPO-QSUB-3 Submitting query: SELECT TOP 10 programmeID FROM VPHASDR3.RequiredFilters
   3.346 +I-QPO-QSUB-4 Submitting query: SELECT TOP 8 aperture, transFile AS taplint_c_2, V.surveyID, tableID AS taplint_c_4, programmeID FROM VPHASDR3.RequiredListDrivenProduct AS V
   3.347 +I-QPO-QSUB-5 Submitting query: SELECT fieldID FROM VPHASDR3.StdFieldInfo
   3.348 +I-QPO-DUFF-1 Submitting query expected to fail (bad ADQL): DUFF QUERY
   3.349 +I-QPO-DUFF-2 Submitting query expected to fail (unknown query language): SELECT TOP 1 * FROM TAP_SCHEMA.tables
   3.350 +S-QPO-QNUM-1 Successful/submitted TAP queries: 5/5
   3.351 +S-QPO-QTIM-1 Average successful query time: 1.1s
   3.352 +
   3.353 +Section QAS: Make ADQL queries in async mode
   3.354 +I-QAS-QSUB-1 Submitting query: SELECT TOP 10 programmeID FROM VPHASDR3.RequiredFilters
   3.355 +I-QAS-QJOB-1 Submitted query at http://localhost:8080/firethorn/tap/376723/async/517406
   3.356 +I-QAS-QSUB-2 Submitting query: SELECT programmeID FROM VPHASDR3.RequiredFilters
   3.357 +I-QAS-QJOB-2 Submitted query at http://localhost:8080/firethorn/tap/376723/async/517407
   3.358 +E-QAS-OVNO-1 Overflow not marked - no <INFO name='QUERY_STATUS' value='OVERFLOW'/> after TABLE
   3.359 +I-QAS-QSUB-3 Submitting query: SELECT TOP 10 programmeID FROM VPHASDR3.RequiredFilters
   3.360 +I-QAS-QJOB-3 Submitted query at http://localhost:8080/firethorn/tap/376723/async/517408
   3.361 +I-QAS-QSUB-4 Submitting query: SELECT TOP 8 aperture, transFile AS taplint_c_2, V.surveyID, tableID AS taplint_c_4, programmeID FROM VPHASDR3.RequiredListDrivenProduct AS V
   3.362 +I-QAS-QJOB-4 Submitted query at http://localhost:8080/firethorn/tap/376723/async/517409
   3.363 +I-QAS-QSUB-5 Submitting query: SELECT fieldID FROM VPHASDR3.StdFieldInfo
   3.364 +I-QAS-QJOB-5 Submitted query at http://localhost:8080/firethorn/tap/376723/async/517410
   3.365 +I-QAS-DUFF-1 Submitting query expected to fail (bad ADQL): DUFF QUERY
   3.366 +I-QAS-QJOB-6 Submitted query at http://localhost:8080/firethorn/tap/376723/async/517411
   3.367 +I-QAS-DUFF-2 Submitting query expected to fail (unknown query language): SELECT TOP 1 * FROM TAP_SCHEMA.tables
   3.368 +I-QAS-QJOB-7 Submitted query at http://localhost:8080/firethorn/tap/376723/async/517412
   3.369 +E-QAS-DSUC-1 Apparent success from bad query (unknown query language)
   3.370 +S-QAS-QNUM-1 Successful/submitted TAP queries: 5/5
   3.371 +S-QAS-QTIM-1 Average successful query time: 1.4s
   3.372 +
   3.373 +Section UWS: Test asynchronous UWS/TAP behaviour
   3.374 +I-UWS-CJOB-1 Created new job http://localhost:8080/firethorn/tap/376723/async/517413
   3.375 +I-UWS-POPA-1 POSTed runId=TAPLINT-002 to http://localhost:8080/firethorn/tap/376723/async/517413/parameters
   3.376 +I-UWS-POPA-2 POSTed PHASE=ABORT to http://localhost:8080/firethorn/tap/376723/async/517413/phase
   3.377 +I-UWS-POPA-3 POSTed ACTION=DELETE to http://localhost:8080/firethorn/tap/376723/async/517413
   3.378 +I-UWS-CJOB-2 Created new job http://localhost:8080/firethorn/tap/376723/async/517414
   3.379 +I-UWS-CJOB-3 Created new job http://localhost:8080/firethorn/tap/376723/async/517415
   3.380 +I-UWS-VUWS-1 UWS job document implicitly V1.0
   3.381 +I-UWS-POPA-4 POSTed PHASE=RUN to http://localhost:8080/firethorn/tap/376723/async/517415/phase
   3.382 +
   3.383 +Section MDQ: Check table query result columns against declared metadata
   3.384 +I-MDQ-QSUB-1 Submitting query: SELECT TOP 1 * FROM "FIRST".first08Jul16Source
   3.385 +I-MDQ-QSUB-2 Submitting query: SELECT TOP 1 * FROM "FIRST".firstSource
   3.386 +I-MDQ-QSUB-3 Submitting query: SELECT TOP 1 * FROM "FIRST".firstSource12Feb16
   3.387 +I-MDQ-QSUB-4 Submitting query: SELECT TOP 1 * FROM ATLASDR1.ArchiveCurationHistory
   3.388 +I-MDQ-QSUB-5 Submitting query: SELECT TOP 1 * FROM ATLASDR1.AstrCalVers
   3.389 +I-MDQ-QSUB-6 Submitting query: SELECT TOP 1 * FROM ATLASDR1.CurationTask
   3.390 +I-MDQ-QSUB-7 Submitting query: SELECT TOP 1 * FROM ATLASDR1.CurrentAstrometry
   3.391 +I-MDQ-QSUB-8 Submitting query: SELECT TOP 1 * FROM ATLASDR1.ExternalSurvey
   3.392 +I-MDQ-QSUB-9 Submitting query: SELECT TOP 1 * FROM ATLASDR1.ExternalSurveyTable
   3.393 +c^C^C^C^C^C[Stevedore@Cadelicia ~]$ ^C
   3.394 +[Stevedore@Cadelicia ~]$ ^C
   3.395 +[Stevedore@Cadelicia ~]$ ^C
   3.396 +[Stevedore@Cadelicia ~]$ ^C
   3.397 +[Stevedore@Cadelicia ~]$ ^C
   3.398 +[Stevedore@Cadelicia ~]$ java -jar stilts.jar taplint tapurl=http://localhost:8080/firethorn/tap/376723/  debug=true
   3.399 +This is STILTS taplint, 3.2/1c07f08 (2019-11-18)
   3.400 +Static report types: ERROR(139), WARNING(56), INFO(23), SUMMARY(9), FAILURE(22)
   3.401 +
   3.402 +Section TMV: Validate table metadata against XML schema
   3.403 +I-TMV-VURL-1 Validating http://localhost:8080/firethorn/tap/376723/tables as tableset (http://www.ivoa.net/xml/VODataService/v1.1)
   3.404 +S-TMV-VALI-1 SAX report: warnings 0, errors 0, fatal 0
   3.405 +
   3.406 +Section TME: Check content of tables metadata from /tables
   3.407 +I-TME-CURL-1 Reading capability metadata from http://localhost:8080/firethorn/tap/376723/capabilities
   3.408 +I-TME-TURL-1 Reading table metadata from http://localhost:8080/firethorn/tap/376723/tables
   3.409 +S-TME-SUMM-1 Schemas: 17, Tables: 739, Columns: 31211, Foreign Keys: 0
   3.410 +S-TME-FLGS-1 Standard column flags: indexed: 0, primary: 0, nullable: 0
   3.411 +S-TME-FLGO-1 Other column flags: none
   3.412 +
   3.413 +Section TMS: Check content of tables metadata from TAP_SCHEMA
   3.414 +I-TMS-TAPV-1 Validating for TAP version V1.0
   3.415 +I-TMS-QSUB-1 Submitting query: SELECT COUNT(*) AS nr FROM TAP_SCHEMA.schemas
   3.416 +I-TMS-QGET-1 Query GET URL: http://localhost:8080/firethorn/tap/376723/sync?REQUEST=doQuery&LANG=ADQL&QUERY=SELECT+COUNT%28*%29+AS+nr+FROM+TAP_SCHEMA.schemas
   3.417 +I-TMS-QSUB-2 Submitting query: SELECT COUNT(*) AS nr FROM TAP_SCHEMA.tables
   3.418 +I-TMS-QGET-2 Query GET URL: http://localhost:8080/firethorn/tap/376723/sync?REQUEST=doQuery&LANG=ADQL&QUERY=SELECT+COUNT%28*%29+AS+nr+FROM+TAP_SCHEMA.tables
   3.419 +I-TMS-QSUB-3 Submitting query: SELECT COUNT(*) AS nr FROM TAP_SCHEMA.columns
   3.420 +I-TMS-QGET-3 Query GET URL: http://localhost:8080/firethorn/tap/376723/sync?REQUEST=doQuery&LANG=ADQL&QUERY=SELECT+COUNT%28*%29+AS+nr+FROM+TAP_SCHEMA.columns
   3.421 +I-TMS-QSUB-4 Submitting query: SELECT COUNT(*) AS nr FROM TAP_SCHEMA.keys
   3.422 +I-TMS-QGET-4 Query GET URL: http://localhost:8080/firethorn/tap/376723/sync?REQUEST=doQuery&LANG=ADQL&QUERY=SELECT+COUNT%28*%29+AS+nr+FROM+TAP_SCHEMA.keys
   3.423 +I-TMS-QSUB-5 Submitting query: SELECT COUNT(*) AS nr FROM TAP_SCHEMA.key_columns
   3.424 +I-TMS-QGET-5 Query GET URL: http://localhost:8080/firethorn/tap/376723/sync?REQUEST=doQuery&LANG=ADQL&QUERY=SELECT+COUNT%28*%29+AS+nr+FROM+TAP_SCHEMA.key_columns
   3.425 +I-TMS-QSUB-6 Submitting query: SELECT principal, indexed, std, "size" FROM TAP_SCHEMA.columns
   3.426 +I-TMS-QGET-6 Query GET URL: http://localhost:8080/firethorn/tap/376723/sync?REQUEST=doQuery&LANG=ADQL&QUERY=SELECT+principal%2C+indexed%2C+std%2C+%22size%22+FROM+TAP_SCHEMA.columns&MAXREC=31221
   3.427 +I-TMS-QSUB-7 Submitting query: SELECT TOP 1 * FROM TAP_SCHEMA.columns
   3.428 +I-TMS-QGET-7 Query GET URL: http://localhost:8080/firethorn/tap/376723/sync?REQUEST=doQuery&LANG=ADQL&QUERY=SELECT+TOP+1+*+FROM+TAP_SCHEMA.columns&MAXREC=1
   3.429 +I-TMS-QSUB-8 Submitting query: SELECT ft_column_id, std, indexed, principal, arraysize, ts_column_id, datatype, utype, ucd, unit, description, column_name, table_name FROM TAP_SCHEMA.columns
   3.430 +I-TMS-QGET-8 Query GET URL: http://localhost:8080/firethorn/tap/376723/sync?REQUEST=doQuery&LANG=ADQL&QUERY=SELECT+ft_column_id%2C+std%2C+indexed%2C+principal%2C+arraysize%2C+ts_column_id%2C+datatype%2C+utype%2C+ucd%2C+unit%2C+description%2C+column_name%2C+table_name+FROM+TAP_SCHEMA.columns&MAXREC=31221
   3.431 +I-TMS-QSUB-9 Submitting query: SELECT from_column, target_column, key_id FROM TAP_SCHEMA.key_columns
   3.432 +I-TMS-QGET-9 Query GET URL: http://localhost:8080/firethorn/tap/376723/sync?REQUEST=doQuery&LANG=ADQL&QUERY=SELECT+from_column%2C+target_column%2C+key_id+FROM+TAP_SCHEMA.key_columns&MAXREC=31221
   3.433 +E-TMS-TSCT-1 Type mismatch for column TAP_SCHEMA.schemas.schema_name: datatype=char is not varchar-like (TAP 1.0)
   3.434 +E-TMS-TSCT-2 Type mismatch for column TAP_SCHEMA.schemas.utype: datatype=char is not varchar-like (TAP 1.0)
   3.435 +E-TMS-TSCT-3 Type mismatch for column TAP_SCHEMA.schemas.description: datatype=char is not varchar-like (TAP 1.0)
   3.436 +I-TMS-TSNS-1 2 non-standard columns in TAP_SCHEMA.schemas: [ts_schema_id, ft_schema_id]
   3.437 +E-TMS-TSCT-4 Type mismatch for column TAP_SCHEMA.tables.schema_name: datatype=char is not varchar-like (TAP 1.0)
   3.438 +E-TMS-TSCT-5 Type mismatch for column TAP_SCHEMA.tables.table_name: datatype=char is not varchar-like (TAP 1.0)
   3.439 +E-TMS-TSCT-6 Type mismatch for column TAP_SCHEMA.tables.table_type: datatype=char is not varchar-like (TAP 1.0)
   3.440 +E-TMS-TSCT-7 Type mismatch for column TAP_SCHEMA.tables.utype: datatype=char is not varchar-like (TAP 1.0)
   3.441 +E-TMS-TSCT-8 Type mismatch for column TAP_SCHEMA.tables.description: datatype=char is not varchar-like (TAP 1.0)
   3.442 +I-TMS-TSNS-2 2 non-standard columns in TAP_SCHEMA.tables: [ts_table_id, ft_table_id]
   3.443 +E-TMS-TSCT-9 Type mismatch for column TAP_SCHEMA.columns.table_name: datatype=char is not varchar-like (TAP 1.0)
   3.444 +I-TMS-TSNS-3 3 non-standard columns in TAP_SCHEMA.columns: [arraysize, ts_column_id, ft_column_id]
   3.445 +I-TMS-TSNS-4 1 non-standard columns in TAP_SCHEMA.keys: [ts_key_id]
   3.446 +I-TMS-TSNS-5 1 non-standard columns in TAP_SCHEMA.key_columns: [ts_key_column_id]
   3.447 +S-TMS-SUMM-1 Schemas: 17, Tables: 739, Columns: 31211, Foreign Keys: 0
   3.448 +S-TMS-FLGS-1 Standard column flags: indexed: 0, principal: 7, std: 33
   3.449 +S-TMS-QNUM-1 Successful/submitted TAP queries: 29/29
   3.450 +S-TMS-QTIM-1 Average successful query time: 1.4s
   3.451 +I-TMS-QSUB-x (20 more)
   3.452 +I-TMS-QGET-x (20 more)
   3.453 +E-TMS-TSCT-x (18 more)
   3.454 +
   3.455 +Section TMC: Compare table metadata from /tables and TAP_SCHEMA
   3.456 +
   3.457 +Section CPV: Validate capabilities against XML schema
   3.458 +I-CPV-VURL-1 Validating http://localhost:8080/firethorn/tap/376723/capabilities as capabilities (http://www.ivoa.net/xml/VOSICapabilities/v1.0)
   3.459 +S-CPV-VALI-1 SAX report: warnings 0, errors 0, fatal 0
   3.460 +
   3.461 +Section CAP: Check TAP and TAPRegExt content of capabilities document
   3.462 +
   3.463 +Section AVV: Validate availability against XML schema
   3.464 +I-AVV-VURL-1 Validating http://localhost:8080/firethorn/tap/376723/availability as availability (http://www.ivoa.net/xml/VOSIAvailability/v1.0)
   3.465 +S-AVV-VALI-1 SAX report: warnings 0, errors 0, fatal 0
   3.466 +
   3.467 +Section QGE: Make ADQL queries in sync GET mode
   3.468 +I-QGE-QSUB-1 Submitting query: SELECT TOP 10 programmeID FROM VPHASDR3.RequiredFilters
   3.469 +I-QGE-QGET-1 Query GET URL: http://localhost:8080/firethorn/tap/376723/sync?REQUEST=doQuery&LANG=ADQL&QUERY=SELECT+TOP+10+programmeID+FROM+VPHASDR3.RequiredFilters
   3.470 +I-QGE-QSUB-2 Submitting query: SELECT programmeID FROM VPHASDR3.RequiredFilters
   3.471 +I-QGE-QGET-2 Query GET URL: http://localhost:8080/firethorn/tap/376723/sync?REQUEST=doQuery&LANG=ADQL&QUERY=SELECT+programmeID+FROM+VPHASDR3.RequiredFilters&MAXREC=9
   3.472 +I-QGE-QSUB-3 Submitting query: SELECT TOP 10 programmeID FROM VPHASDR3.RequiredFilters
   3.473 +I-QGE-QGET-3 Query GET URL: http://localhost:8080/firethorn/tap/376723/sync?REQUEST=doQuery&LANG=ADQL&QUERY=SELECT+TOP+10+programmeID+FROM+VPHASDR3.RequiredFilters&DUMMY=ignore-me
   3.474 +I-QGE-QSUB-4 Submitting query: SELECT TOP 1 programmeID FROM VPHASDR3.RequiredFilters
   3.475 +I-QGE-QGET-4 Query GET URL: http://localhost:8080/firethorn/tap/376723/sync?REQUEST=doQuery&LANG=ADQL-2.0&QUERY=SELECT+TOP+1+programmeID+FROM+VPHASDR3.RequiredFilters
   3.476 +I-QGE-QSUB-5 Submitting query: SELECT TOP 1 programmeID FROM VPHASDR3.RequiredFilters
   3.477 +I-QGE-QGET-5 Query GET URL: http://localhost:8080/firethorn/tap/376723/sync?REQUEST=doQuery&LANG=ADQL&QUERY=SELECT+TOP+1+programmeID+FROM+VPHASDR3.RequiredFilters
   3.478 +I-QGE-QSUB-6 Submitting query: SELECT TOP 8 aperture, transFile AS taplint_c_2, V.surveyID, tableID AS taplint_c_4, programmeID FROM VPHASDR3.RequiredListDrivenProduct AS V
   3.479 +I-QGE-QGET-6 Query GET URL: http://localhost:8080/firethorn/tap/376723/sync?REQUEST=doQuery&LANG=ADQL&QUERY=SELECT+TOP+8+aperture%2C+transFile+AS+taplint_c_2%2C+V.surveyID%2C+tableID+AS+taplint_c_4%2C+programmeID++FROM+VPHASDR3.RequiredListDrivenProduct+AS+V
   3.480 +I-QGE-QSUB-7 Submitting query: SELECT fieldID FROM VPHASDR3.StdFieldInfo
   3.481 +I-QGE-QGET-7 Query GET URL: http://localhost:8080/firethorn/tap/376723/sync?REQUEST=doQuery&LANG=ADQL&QUERY=SELECT+fieldID+FROM+VPHASDR3.StdFieldInfo&MAXREC=0
   3.482 +I-QGE-DUFF-1 Submitting query expected to fail (bad ADQL): DUFF QUERY
   3.483 +I-QGE-QGET-8 Query GET URL: http://localhost:8080/firethorn/tap/376723/sync?REQUEST=doQuery&LANG=ADQL&QUERY=DUFF+QUERY
   3.484 +I-QGE-DUFF-2 Submitting query expected to fail (unknown query language): SELECT TOP 1 * FROM TAP_SCHEMA.tables
   3.485 +I-QGE-QGET-9 Query GET URL: http://localhost:8080/firethorn/tap/376723/sync?REQUEST=doQuery&LANG=OOBLECK&QUERY=SELECT+TOP+1+*+FROM+TAP_SCHEMA.tables
   3.486 +S-QGE-QNUM-1 Successful/submitted TAP queries: 7/7
   3.487 +S-QGE-QTIM-1 Average successful query time: 1.0s
   3.488 +
   3.489 +Section QPO: Make ADQL queries in sync POST mode
   3.490 +I-QPO-QSUB-1 Submitting query: SELECT TOP 10 programmeID FROM VPHASDR3.RequiredFilters
   3.491 +I-QPO-QSUB-2 Submitting query: SELECT programmeID FROM VPHASDR3.RequiredFilters
   3.492 +I-QPO-QSUB-3 Submitting query: SELECT TOP 10 programmeID FROM VPHASDR3.RequiredFilters
   3.493 +I-QPO-QSUB-4 Submitting query: SELECT TOP 8 aperture, transFile AS taplint_c_2, V.surveyID, tableID AS taplint_c_4, programmeID FROM VPHASDR3.RequiredListDrivenProduct AS V
   3.494 +I-QPO-QSUB-5 Submitting query: SELECT fieldID FROM VPHASDR3.StdFieldInfo
   3.495 +I-QPO-DUFF-1 Submitting query expected to fail (bad ADQL): DUFF QUERY
   3.496 +I-QPO-DUFF-2 Submitting query expected to fail (unknown query language): SELECT TOP 1 * FROM TAP_SCHEMA.tables
   3.497 +S-QPO-QNUM-1 Successful/submitted TAP queries: 5/5
   3.498 +S-QPO-QTIM-1 Average successful query time: 1.1s
   3.499 +
   3.500 +Section QAS: Make ADQL queries in async mode
   3.501 +I-QAS-QSUB-1 Submitting query: SELECT TOP 10 programmeID FROM VPHASDR3.RequiredFilters
   3.502 +I-QAS-QJOB-1 Submitted query at http://localhost:8080/firethorn/tap/376723/async/567745
   3.503 +I-QAS-QSUB-2 Submitting query: SELECT programmeID FROM VPHASDR3.RequiredFilters
   3.504 +I-QAS-QJOB-2 Submitted query at http://localhost:8080/firethorn/tap/376723/async/567746
   3.505 +E-QAS-OVNO-1 Overflow not marked - no <INFO name='QUERY_STATUS' value='OVERFLOW'/> after TABLE
   3.506 +I-QAS-QSUB-3 Submitting query: SELECT TOP 10 programmeID FROM VPHASDR3.RequiredFilters
   3.507 +I-QAS-QJOB-3 Submitted query at http://localhost:8080/firethorn/tap/376723/async/567747
   3.508 +I-QAS-QSUB-4 Submitting query: SELECT TOP 8 aperture, transFile AS taplint_c_2, V.surveyID, tableID AS taplint_c_4, programmeID FROM VPHASDR3.RequiredListDrivenProduct AS V
   3.509 +I-QAS-QJOB-4 Submitted query at http://localhost:8080/firethorn/tap/376723/async/567748
   3.510 +I-QAS-QSUB-5 Submitting query: SELECT fieldID FROM VPHASDR3.StdFieldInfo
   3.511 +I-QAS-QJOB-5 Submitted query at http://localhost:8080/firethorn/tap/376723/async/567749
   3.512 +I-QAS-DUFF-1 Submitting query expected to fail (bad ADQL): DUFF QUERY
   3.513 +I-QAS-QJOB-6 Submitted query at http://localhost:8080/firethorn/tap/376723/async/567750
   3.514 +I-QAS-DUFF-2 Submitting query expected to fail (unknown query language): SELECT TOP 1 * FROM TAP_SCHEMA.tables
   3.515 +I-QAS-QJOB-7 Submitted query at http://localhost:8080/firethorn/tap/376723/async/567751
   3.516 +E-QAS-DSUC-1 Apparent success from bad query (unknown query language)
   3.517 +S-QAS-QNUM-1 Successful/submitted TAP queries: 5/5
   3.518 +S-QAS-QTIM-1 Average successful query time: 1.4s
   3.519 +
   3.520 +Section UWS: Test asynchronous UWS/TAP behaviour
   3.521 +I-UWS-CJOB-1 Created new job http://localhost:8080/firethorn/tap/376723/async/569102
   3.522 +I-UWS-POPA-1 POSTed runId=TAPLINT-002 to http://localhost:8080/firethorn/tap/376723/async/569102/parameters
   3.523 +I-UWS-POPA-2 POSTed PHASE=ABORT to http://localhost:8080/firethorn/tap/376723/async/569102/phase
   3.524 +I-UWS-POPA-3 POSTed ACTION=DELETE to http://localhost:8080/firethorn/tap/376723/async/569102
   3.525 +I-UWS-CJOB-2 Created new job http://localhost:8080/firethorn/tap/376723/async/569103
   3.526 +I-UWS-CJOB-3 Created new job http://localhost:8080/firethorn/tap/376723/async/569104
   3.527 +I-UWS-VUWS-1 UWS job document implicitly V1.0
   3.528 +I-UWS-POPA-4 POSTed PHASE=RUN to http://localhost:8080/firethorn/tap/376723/async/569104/phase
   3.529 +
   3.530 +Section MDQ: Check table query result columns against declared metadata
   3.531 +I-MDQ-QSUB-1 Submitting query: SELECT TOP 1 * FROM "FIRST".first08Jul16Source
   3.532 +I-MDQ-QSUB-2 Submitting query: SELECT TOP 1 * FROM "FIRST".firstSource
   3.533 +I-MDQ-QSUB-3 Submitting query: SELECT TOP 1 * FROM "FIRST".firstSource12Feb16
   3.534 +I-MDQ-QSUB-4 Submitting query: SELECT TOP 1 * FROM ATLASDR1.ArchiveCurationHistory
   3.535 +I-MDQ-QSUB-5 Submitting query: SELECT TOP 1 * FROM ATLASDR1.AstrCalVers
   3.536 +I-MDQ-QSUB-6 Submitting query: SELECT TOP 1 * FROM ATLASDR1.CurationTask
   3.537 +I-MDQ-QSUB-7 Submitting query: SELECT TOP 1 * FROM ATLASDR1.CurrentAstrometry
   3.538 +I-MDQ-QSUB-8 Submitting query: SELECT TOP 1 * FROM ATLASDR1.ExternalSurvey
   3.539 +I-MDQ-QSUB-9 Submitting query: SELECT TOP 1 * FROM ATLASDR1.ExternalSurveyTable
   3.540 +S-MDQ-QNUM-1 Successful/submitted TAP queries: 739/739
   3.541 +S-MDQ-QTIM-1 Average successful query time: 1.4s
   3.542 +I-MDQ-QSUB-x (730 more)
   3.543 +
   3.544 +Section OBS: Test implementation of ObsCore Data Model
   3.545 +I-OBS-NODM-1 Table capabilities lists no ObsCore DataModel - no ObsCore tests
   3.546 +
   3.547 +Section UPL: Make queries with table uploads
   3.548 +F-UPL-NOUP-1 Table capabilities lists no upload methods - will not attempt upload tests
   3.549 +
   3.550 +Section EXA: Check content of examples document
   3.551 +I-EXA-EURL-1 Reading examples document from http://localhost:8080/firethorn/tap/376723/examples
   3.552 +F-EXA-EXNO-1 No examples document at http://localhost:8080/firethorn/tap/376723/examples
   3.553 +
   3.554 +Totals: Errors: 29; Warnings: 0; Infos: 857; Summaries: 18; Failures: 2
   3.555 +
   3.556 +
   3.557 +## Some (unrelated errors), issue for them created in Redmine (http://redmine.roe.ac.uk/issues/1183)
   3.558 +
   3.559 +
   3.560 +
   3.561 +
   3.562 +## Test4: Run our own validator
   3.563 +## ---------------------------------------------------------------------------------------
   3.564 +
   3.565 +
   3.566 +## From ftpy container run:
   3.567 +
   3.568 +python3 -c "import firethorn_utils.tap_validator as validator;validator.main()" -ft=http://gillian:8080/firethorn -r=376723 -u=Po7gi9wahLi5sheokoit -p=iengii1Eigiekootahzu -g=fu6us6baiNgie7rah5se -m=sync
   3.569 +--- Starting validation on Resource: http://gillian:8080/firethorn/adql/resource/376723---
   3.570 +...
   3.571 +
   3.572 +Exceptions: 
   3.573 +{'BestDR7.Unknown': '<urlopen error timed out>', 'BestDR9.Sky': '<urlopen error timed out>', 'BestDR9.PhotoPrimary': '<urlopen error timed out>', 'BestDR9.neighbors': '<urlopen error timed out>'}
   3.574 +
   3.575 +
   3.576 +## Test completed, but a few exceptions, with time out error messages
   3.577 +## Run queries on those tables to check
   3.578 +
   3.579 +
   3.580 +curl -L "http://localhost:8080/firethorn/tap/376723/sync?QUERY=SELECT+TOP+5+%2A+FROM+BestDR7.Unknown&REQUEST=doQuery&LANG=ADQL&FORMAT=VOTABLE"
   3.581 +..
   3.582 +<TD><TD>-9999.0</TD><TD>-9999.0</TD><TD>-9999.0</TD><TD>-9999.0</TD></TR></TABLEDATA></DATA></TABLE></RESOURCE></VOTABLE>
   3.583 +## Query seems to have worked fine
   3.584 +
   3.585 +
   3.586 +
   3.587 +curl -L "http://localhost:8080/firethorn/tap/376723/sync?QUERY=SELECT+TOP+5+%2A+FROM+BestDR9.Sky&REQUEST=doQuery&LANG=ADQL&FORMAT=VOTABLE"
   3.588 +..
   3.589 +</FIELD><DATA><TABLEDATA></TABLEDATA></DATA></TABLE></RESOURCE></VOTABLE>
   3.590 +## Query completed, but empty table
   3.591 +
   3.592 +
   3.593 +
   3.594 +curl -L "http://localhost:8080/firethorn/tap/376723/sync?QUERY=SELECT+TOP+5+%2A+FROM+BestDR9.PhotoPrimary&REQUEST=doQuery&LANG=ADQL&FORMAT=VOTABLE"
   3.595 +..
   3.596 +<TD>4.413178758876864E9</TD><TD>4.413178830610624E9</TD><TD>4.413178974039232E9</TD></TR></TABLEDATA></DATA></TABLE></RESOURCE></VOTABLE>
   3.597 +## Query seems to have worked fine
   3.598 +
   3.599 +
   3.600 +curl -L "http://localhost:8080/firethorn/tap/376723/sync?QUERY=SELECT+TOP+5+%2A+FROM+BestDR9.neighbors&REQUEST=doQuery&LANG=ADQL&FORMAT=VOTABLE"
   3.601 +..
   3.602 +<TD>0.14231449259650197</TD><TD>6</TD><TD>3</TD><TD>2</TD><TD>2</TD></TR></TABLEDATA></DATA></TABLE></RESOURCE></VOTABLE>
   3.603 +## Query seems to have worked fine
     4.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     4.2 +++ b/doc/notes/stv/20200312-Testing-1182.txt	Wed Jul 29 12:16:11 2020 +0100
     4.3 @@ -0,0 +1,597 @@
     4.4 +#
     4.5 +# <meta:header>
     4.6 +#   <meta:licence>
     4.7 +#     Copyright (c) 2018, ROE (http://www.roe.ac.uk/)
     4.8 +#
     4.9 +#     This information is free software: you can redistribute it and/or modify
    4.10 +#     it under the terms of the GNU General Public License as published by
    4.11 +#     the Free Software Foundation, either version 3 of the License, or
    4.12 +#     (at your option) any later version.
    4.13 +#
    4.14 +#     This information is distributed in the hope that it will be useful,
    4.15 +#     but WITHOUT ANY WARRANTY; without even the implied warranty of
    4.16 +#     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    4.17 +#     GNU General Public License for more details.
    4.18 +#  
    4.19 +#     You should have received a copy of the GNU General Public License
    4.20 +#     along with this program.  If not, see <http://www.gnu.org/licenses/>.
    4.21 +#   </meta:licence>
    4.22 +# </meta:header>
    4.23 +#
    4.24 +#
    4.25 +
    4.26 +##########################################################
    4.27 +#####         Notes on Testing fix for 1182          #####
    4.28 +##########################################################
    4.29 +
    4.30 +
    4.31 +## Create OSA-TAP service in ftpy
    4.32 +
    4.33 +## From ftpy Docker container (docker-compose --file "docker-compose.yml" run firethorn-py)
    4.34 +
    4.35 +
    4.36 +python3
    4.37 +
    4.38 +import firethorn
    4.39 +import firethorn_utils.configurator as configur
    4.40 +ft = firethorn.Firethorn(endpoint="http://gillian:8080/firethorn")
    4.41 +ft.login(firethorn.config.adminuser, firethorn.config.adminpass, firethorn.config.admingroup)
    4.42 +configurator =  configur.Configurator(ft)
    4.43 +configurator.load_resources("/home/firethorn.py/firethorn/data/osa-tap.json")
    4.44 +Importing JDBC Schema: ATLASDR1
    4.45 +Importing JDBC Schema: ATLASDR2
    4.46 +Importing JDBC Schema: ATLASDR3
    4.47 +Importing JDBC Schema: 2MASS
    4.48 +Importing JDBC Schema: 2XMM
    4.49 +Importing JDBC Schema: WISE
    4.50 +Importing JDBC Schema: VIKINGDR3
    4.51 +Importing JDBC Schema: VHSDR1
    4.52 +Importing JDBC Schema: MGC
    4.53 +Importing JDBC Schema: GLIMPSE
    4.54 +Importing JDBC Schema: FIRST
    4.55 +Importing JDBC Schema: DENIS
    4.56 +Importing JDBC Schema: SDSSDR9
    4.57 +TAP Service available at: http://gillian:8080/firethorn/tap/39559/
    4.58 +
    4.59 +## Added SDSSDR9 to the list to test a specific table with BYTE columns
    4.60 +
    4.61 +
    4.62 +## -----------------------------
    4.63 +## Test with ftpy
    4.64 +
    4.65 +
    4.66 +resource=ft.firethorn_engine.select_adql_resource_by_ident("http://gillian:8080/firethorn/adql/resource/39559")
    4.67 +
    4.68 +
    4.69 +#
    4.70 +# Create and run a query on the resource.
    4.71 +
    4.72 +
    4.73 +
    4.74 +
    4.75 +## Test 1: Test a query with an TINYINT column (filterID from table Filter)
    4.76 +## ---------------------------------------------------------------------------------------
    4.77 +
    4.78 +
    4.79 +
    4.80 +query_str = "SELECT TOP 10 * FROM ATLASDR1.Filter"
    4.81 +
    4.82 +query_obj = resource.create_query(
    4.83 +    query_str,
    4.84 +    "COMPLETED",
    4.85 +    None,
    4.86 +    3000000
    4.87 +    )
    4.88 +
    4.89 +
    4.90 +print(
    4.91 +    query_obj.table()
    4.92 +     )
    4.93 +{
    4.94 +  "resource": "http://gillian:8080/firethorn/adql/resource/16805",
    4.95 +  "self": "http://gillian:8080/firethorn/adql/table/116821",
    4.96 +  "formats": {
    4.97 +    "datatable": "http://gillian:8080/firethorn/adql/table/116821/datatable",
    4.98 +    "votable": "http://gillian:8080/firethorn/adql/table/116821/votable"
    4.99 +  },
   4.100 +  "url": "http://gillian:8080/firethorn/adql/table/116821",
   4.101 +  "name": "XX_7IKMCQXBBFRYCAAAAFYNAO2FGQ",
   4.102 +  "text": null,
   4.103 +  "query": "http://gillian:8080/firethorn/blue/query/39456",
   4.104 +  "depth": "PARTIAL",
   4.105 +  "metadata": {
   4.106 +    "adql": {
   4.107 +      "status": "COMPLETED",
   4.108 +      "count": 10
   4.109 +    }
   4.110 +  },
   4.111 +  "fullname": "temp.XX_7IKMCQXBBFRYCAAAAFYNAO2FGQ",
   4.112 +  "columns": "http://gillian:8080/firethorn/adql/table/116821/columns/select",
   4.113 +  "schema": "http://gillian:8080/firethorn/adql/schema/35957",
   4.114 +  "type": "http://data.metagrid.co.uk/wfau/firethorn/types/entity/adql-table-1.0.json",
   4.115 +  "owner": "http://gillian:8080/firethorn/community-member/153",
   4.116 +  "root": "http://gillian:8080/firethorn/jdbc/table/116820",
   4.117 +  "ident": "116821",
   4.118 +  "created": "2020-03-12T19:31:50.196",
   4.119 +  "modified": "2020-03-12T19:31:50.197",
   4.120 +  "base": "http://gillian:8080/firethorn/jdbc/table/116820",
   4.121 +  "parent": "http://gillian:8080/firethorn/adql/schema/35957"
   4.122 +}
   4.123 +
   4.124 +
   4.125 +py_table = query_obj.table().as_astropy()
   4.126 +Downloading http://gillian:8080/firethorn/adql/table/116821/votable
   4.127 +|=======================================================================================================================================================================| 5.0k/5.0k (100.00%)         0s
   4.128 +>>> 
   4.129 +KeyboardInterrupt
   4.130 +>>> py_table.pprint()
   4.131 +filterID shortName      name                                                               description                                                           ...   vegaToAB    oneSecMLVg  isSectioned
   4.132 +-------- --------- -------------- ------------------------------------------------------------------------------------------------------------------------------ ... ------------ ------------ -----------
   4.133 +       0      NONE           NONE                                                                                                                           NONE ... -999999500.0 -999999500.0           0
   4.134 +       1         u         u_SDSS Sloan u filter: see  Tokunaga et al., 2002, PASP, 114, 180; http://www.astro-wise.org/~omegacam/documents/3110_user_manual.pdf ...         0.94 -999999500.0           0
   4.135 +       2         g         g_SDSS Sloan g filter: see  Tokunaga et al., 2002, PASP, 114, 180; http://www.astro-wise.org/~omegacam/documents/3110_user_manual.pdf ...        -0.08 -999999500.0           0
   4.136 +       3         r         r_SDSS Sloan r filter (see Tokunaga et al., 2002, PASP, 114, 180; http://www.astro-wise.org/~omegacam/documents/3110_user_manual.pdf) ...         0.17 -999999500.0           0
   4.137 +       4         i         i_SDSS Sloan i filter (see Tokunaga et al., 2002, PASP, 114, 180; http://www.astro-wise.org/~omegacam/documents/3110_user_manual.pdf) ...          0.4 -999999500.0           0
   4.138 +       5         z         z_SDSS Sloan z filter (see Tokunaga et al., 2002, PASP, 114, 180; http://www.astro-wise.org/~omegacam/documents/3110_user_manual.pdf) ...         0.57 -999999500.0           0
   4.139 +       6         B         B_JOHN                                                                                                               Johnson B filter ...       -0.044 -999999500.0           0
   4.140 +       7         V         V_JOHN                                                                                                               Johnson V filter ...       -0.163 -999999500.0           0
   4.141 +       8      BLNK OMEGACAM blank                                                                                         OMEGACAM blank filter (e.g. for darks) ... -999999500.0 -999999500.0           0
   4.142 +       9     vStrm         v_STRM    
   4.143 +
   4.144 +
   4.145 +## Check VOTable file
   4.146 +
   4.147 +import requests
   4.148 +r = requests.get("http://gillian:8080/firethorn/adql/table/116821/votable")
   4.149 +r.text
   4.150 +
   4.151 +## Pretty print
   4.152 +"
   4.153 +<?xml version="1.0" encoding="UTF-8"?>
   4.154 +<VOTABLE xmlns="http://www.ivoa.net/xml/VOTable/v1.3" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.ivoa.net/xml/VOTable/v1.3 http://www.ivoa.net/xml/VOTable/v1.3" version="1.3">
   4.155 +  <RESOURCE type="results">
   4.156 +    <INFO name="QUERY_STATUS" value="OK"/>
   4.157 +    <INFO name="link" value="http://gillian:8080/firethorn/adql/table/116821"/>
   4.158 +    <TABLE ID="table.116821" name="XX_7IKMCQXBBFRYCAAAAFYNAO2FGQ">
   4.159 +      <FIELD ID="column.120368" name="filterID" datatype="unsignedByte">
   4.160 +        <LINK content-type="application/json" content-role="metadata" href="http://gillian:8080/firethorn/adql/column/120368"/>
   4.161 +      </FIELD>
   4.162 +      <FIELD ID="column.120370" name="shortName" datatype="char" arraysize="10">
   4.163 +        <LINK content-type="application/json" content-role="metadata" href="http://gillian:8080/firethorn/adql/column/120370"/>
   4.164 +      </FIELD>
   4.165 +      <FIELD ID="column.120372" name="name" datatype="char" arraysize="16">
   4.166 +        <LINK content-type="application/json" content-role="metadata" href="http://gillian:8080/firethorn/adql/column/120372"/>
   4.167 +      </FIELD>
   4.168 +      <FIELD ID="column.120374" name="description" datatype="char" arraysize="256">
   4.169 +        <LINK content-type="application/json" content-role="metadata" href="http://gillian:8080/firethorn/adql/column/120374"/>
   4.170 +      </FIELD>
   4.171 +      <FIELD ID="column.120376" name="cutOn" datatype="float">
   4.172 +        <LINK content-type="application/json" content-role="metadata" href="http://gillian:8080/firethorn/adql/column/120376"/>
   4.173 +      </FIELD>
   4.174 +      <FIELD ID="column.120378" name="cutOff" datatype="float">
   4.175 +        <LINK content-type="application/json" content-role="metadata" href="http://gillian:8080/firethorn/adql/column/120378"/>
   4.176 +      </FIELD>
   4.177 +      <FIELD ID="column.120380" name="aebv" datatype="float">
   4.178 +        <LINK content-type="application/json" content-role="metadata" href="http://gillian:8080/firethorn/adql/column/120380"/>
   4.179 +      </FIELD>
   4.180 +      <FIELD ID="column.120382" name="vegaToAB" datatype="float">
   4.181 +        <LINK content-type="application/json" content-role="metadata" href="http://gillian:8080/firethorn/adql/column/120382"/>
   4.182 +      </FIELD>
   4.183 +      <FIELD ID="column.120384" name="oneSecMLVg" datatype="float">
   4.184 +        <LINK content-type="application/json" content-role="metadata" href="http://gillian:8080/firethorn/adql/column/120384"/>
   4.185 +      </FIELD>
   4.186 +      <FIELD ID="column.120386" name="isSectioned" datatype="unsignedByte">
   4.187 +        <LINK content-type="application/json" content-role="metadata" href="http://gillian:8080/firethorn/adql/column/120386"/>
   4.188 +      </FIELD>
   4.189 +      <DATA>
   4.190 +        <TABLEDATA>
   4.191 +          <TR>
   4.192 +            <TD>0</TD>
   4.193 +            <TD>NONE</TD>
   4.194 +            <TD>NONE</TD>
   4.195 +            <TD>NONE</TD>
   4.196 +            <TD>-9.99999488E8</TD>
   4.197 +            <TD>-9.99999488E8</TD>
   4.198 +            <TD>-9.99999488E8</TD>
   4.199 +            <TD>-9.99999488E8</TD>
   4.200 +            <TD>-9.99999488E8</TD>
   4.201 +            <TD>0</TD>
   4.202 +          </TR>
   4.203 +          <TR>
   4.204 +            <TD>1</TD>
   4.205 +            <TD>u</TD>
   4.206 +            <TD>u_SDSS</TD>
   4.207 +            <TD>Sloan u filter: see  Tokunaga et al., 2002, PASP, 114, 180; http://www.astro-wise.org/~omegacam/documents/3110_user_manual.pdf</TD>
   4.208 +            <TD>0.32690000534057617</TD>
   4.209 +            <TD>0.3828999996185303</TD>
   4.210 +            <TD>5.15500020980835</TD>
   4.211 +            <TD>0.9399999976158142</TD>
   4.212 +            <TD>-9.99999488E8</TD>
   4.213 +            <TD>0</TD>
   4.214 +          </TR>
   4.215 +          <TR>
   4.216 +            <TD>2</TD>
   4.217 +            <TD>g</TD>
   4.218 +            <TD>g_SDSS</TD>
   4.219 +            <TD>Sloan g filter: see  Tokunaga et al., 2002, PASP, 114, 180; http://www.astro-wise.org/~omegacam/documents/3110_user_manual.pdf</TD>
   4.220 +            <TD>0.4092000126838684</TD>
   4.221 +            <TD>0.5457000136375427</TD>
   4.222 +            <TD>3.7929999828338623</TD>
   4.223 +            <TD>-0.07999999821186066</TD>
   4.224 +            <TD>-9.99999488E8</TD>
   4.225 +            <TD>0</TD>
   4.226 +          </TR>
   4.227 +          <TR>
   4.228 +            <TD>3</TD>
   4.229 +            <TD>r</TD>
   4.230 +            <TD>r_SDSS</TD>
   4.231 +            <TD>Sloan r filter (see Tokunaga et al., 2002, PASP, 114, 180; http://www.astro-wise.org/~omegacam/documents/3110_user_manual.pdf)</TD>
   4.232 +            <TD>0.5546000003814697</TD>
   4.233 +            <TD>0.6916999816894531</TD>
   4.234 +            <TD>2.750999927520752</TD>
   4.235 +            <TD>0.17000000178813934</TD>
   4.236 +            <TD>-9.99999488E8</TD>
   4.237 +            <TD>0</TD>
   4.238 +          </TR>
   4.239 +          <TR>
   4.240 +            <TD>4</TD>
   4.241 +            <TD>i</TD>
   4.242 +            <TD>i_SDSS</TD>
   4.243 +            <TD>Sloan i filter (see Tokunaga et al., 2002, PASP, 114, 180; http://www.astro-wise.org/~omegacam/documents/3110_user_manual.pdf)</TD>
   4.244 +            <TD>0.6949999928474426</TD>
   4.245 +            <TD>0.8309999704360962</TD>
   4.246 +            <TD>2.0859999656677246</TD>
   4.247 +            <TD>0.4000000059604645</TD>
   4.248 +            <TD>-9.99999488E8</TD>
   4.249 +            <TD>0</TD>
   4.250 +          </TR>
   4.251 +          <TR>
   4.252 +            <TD>5</TD>
   4.253 +            <TD>z</TD>
   4.254 +            <TD>z_SDSS</TD>
   4.255 +            <TD>Sloan z filter (see Tokunaga et al., 2002, PASP, 114, 180; http://www.astro-wise.org/~omegacam/documents/3110_user_manual.pdf)</TD>
   4.256 +            <TD>0.8654999732971191</TD>
   4.257 +            <TD>0.9605000019073486</TD>
   4.258 +            <TD>1.4789999723434448</TD>
   4.259 +            <TD>0.5699999928474426</TD>
   4.260 +            <TD>-9.99999488E8</TD>
   4.261 +            <TD>0</TD>
   4.262 +          </TR>
   4.263 +          <TR>
   4.264 +            <TD>6</TD>
   4.265 +            <TD>B</TD>
   4.266 +            <TD>B_JOHN</TD>
   4.267 +            <TD>Johnson B filter</TD>
   4.268 +            <TD>0.38999998569488525</TD>
   4.269 +            <TD>0.49000000953674316</TD>
   4.270 +            <TD>-9.99999488E8</TD>
   4.271 +            <TD>-0.04399999976158142</TD>
   4.272 +            <TD>-9.99999488E8</TD>
   4.273 +            <TD>0</TD>
   4.274 +          </TR>
   4.275 +          <TR>
   4.276 +            <TD>7</TD>
   4.277 +            <TD>V</TD>
   4.278 +            <TD>V_JOHN</TD>
   4.279 +            <TD>Johnson V filter</TD>
   4.280 +            <TD>0.5</TD>
   4.281 +            <TD>0.6000000238418579</TD>
   4.282 +            <TD>-9.99999488E8</TD>
   4.283 +            <TD>-0.16300000250339508</TD>
   4.284 +            <TD>-9.99999488E8</TD>
   4.285 +            <TD>0</TD>
   4.286 +          </TR>
   4.287 +          <TR>
   4.288 +            <TD>8</TD>
   4.289 +            <TD>BLNK</TD>
   4.290 +            <TD>OMEGACAM blank</TD>
   4.291 +            <TD>OMEGACAM blank filter (e.g. for darks)</TD>
   4.292 +            <TD>-9.99999488E8</TD>
   4.293 +            <TD>-9.99999488E8</TD>
   4.294 +            <TD>-9.99999488E8</TD>
   4.295 +            <TD>-9.99999488E8</TD>
   4.296 +            <TD>-9.99999488E8</TD>
   4.297 +            <TD>0</TD>
   4.298 +          </TR>
   4.299 +          <TR>
   4.300 +            <TD>9</TD>
   4.301 +            <TD>vStrm</TD>
   4.302 +            <TD>v_STRM</TD>
   4.303 +            <TD>Stroemgren v</TD>
   4.304 +            <TD>0.40049999952316284</TD>
   4.305 +            <TD>0.42149999737739563</TD>
   4.306 +            <TD>-9.99999488E8</TD>
   4.307 +            <TD>-9.99999488E8</TD>
   4.308 +            <TD>-9.99999488E8</TD>
   4.309 +            <TD>0</TD>
   4.310 +          </TR>
   4.311 +        </TABLEDATA>
   4.312 +      </DATA>
   4.313 +    </TABLE>
   4.314 +  </RESOURCE>
   4.315 +</VOTABLE>"
   4.316 +
   4.317 +
   4.318 +# filterID -> unsignedByte
   4.319 +## <FIELD ID='column.39725' name='filterID' datatype='unsignedByte'>
   4.320 +## filterID values look correct (TINYINT to unsignedByte without an arraysize) 
   4.321 +
   4.322 +
   4.323 +
   4.324 +
   4.325 +## Test 2: Test column of type BYTE (array)
   4.326 +## ---------------------------------------------------------------------------------------
   4.327 +
   4.328 +
   4.329 +## Test with a TAP sync query:
   4.330 +
   4.331 +curl -L "http://localhost:8080/firethorn/tap/39559/sync?QUERY=SELECT+TOP+5+*+FROM+BestDR9.Sky&REQUEST=doQuery&LANG=ADQL&FORMAT=VOTABLE"
   4.332 +<?xml version="1.0" encoding="UTF-8"?>
   4.333 +<VOTABLE xmlns="http://www.ivoa.net/xml/VOTable/v1.3" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.ivoa.net/xml/VOTable/v1.3 http://www.ivoa.net/xml/VOTable/v1.3" version="1.3">
   4.334 +  <RESOURCE type="results">
   4.335 +    <INFO name="QUERY_STATUS" value="OK"/>
   4.336 +    <INFO name="link" value="http://localhost:8080/firethorn/adql/table/116823"/>
   4.337 +    <TABLE ID="table.116823" name="XX_UQYJEFY2CKCZIAAAAFYNAQE7VU">
   4.338 +      <FIELD ID="column.120388" name="img" datatype="unsignedByte" arraysize="8000">
   4.339 +        <LINK content-type="application/json" content-role="metadata" href="http://localhost:8080/firethorn/adql/column/120388"/>
   4.340 +      </FIELD>
   4.341 +      <DATA>
   4.342 +        <TABLEDATA>
   4.343 +          <TR>
   4.344 +            <TD>137 80 78 71 13 10 26 10 0 0 0 13 73 72 68 82 0 0 4 110 0 0 3 42 8 3 0 0 0 228 125 247 172 0 0 1 128 80 76 84 69 0 0 0 11 11 11 18 18 18 27 27 27 33 33 33 41 41 41 52 52 52 54 54 56 58 58 58 67 67 67 73 73 73 82 82 82 92 92 92 100 100 100 106 106 106 118 118 118 121 121 121 1 0 138 0 0 186 40 40 226 54 54 240 59 59 245 62 62 248 67 67 253 101 101 235 109 109 243 113 113 247 118 117 253 118 120 255 120 119 255 121 120 255 253 68 67 254 118 118 255 120 120 132 132 132 136 136 136 147 147 147 154 154 154 164 164 164 171 171 171 177 177 177 187 187 187 147 147 212 159 159 209 157 156 222 13
   4.345 +
   4.346 +               .....
   4.347 +
   4.348 +            </TD>
   4.349 +          </TR>
   4.350 +        </TABLEDATA>
   4.351 +      </DATA>
   4.352 +    </TABLE>
   4.353 +  </RESOURCE>
   4.354 +</VOTABLE>
   4.355 +
   4.356 +
   4.357 +## VALID
   4.358 +## Column printed as Space-delimited byte array
   4.359 +## img -> unsignedByte
   4.360 +## Column Type in VOTable: name='img' datatype='unsignedByte' arraysize='8000'
   4.361 +
   4.362 +
   4.363 +
   4.364 +
   4.365 +
   4.366 +
   4.367 +
   4.368 +## Test3: Validate with Taplint
   4.369 +## ---------------------------------------------------------------------------------------
   4.370 +
   4.371 +java -jar stilts.jar taplint tapurl=http://localhost:8080/firethorn/tap/39559/  debug=true
   4.372 +
   4.373 +java -jar stilts.jar taplint tapurl=http://localhost:8080/firethorn/tap/39559/  debug=true
   4.374 +This is STILTS taplint, 3.2/1c07f08 (2019-11-18)
   4.375 +Static report types: ERROR(139), WARNING(56), INFO(23), SUMMARY(9), FAILURE(22)
   4.376 +
   4.377 +Section TMV: Validate table metadata against XML schema
   4.378 +I-TMV-VURL-1 Validating http://localhost:8080/firethorn/tap/39559/tables as tableset (http://www.ivoa.net/xml/VODataService/v1.1)
   4.379 +S-TMV-VALI-1 SAX report: warnings 0, errors 0, fatal 0
   4.380 +
   4.381 +Section TME: Check content of tables metadata from /tables
   4.382 +I-TME-CURL-1 Reading capability metadata from http://localhost:8080/firethorn/tap/39559/capabilities
   4.383 +I-TME-TURL-1 Reading table metadata from http://localhost:8080/firethorn/tap/39559/tables
   4.384 +S-TME-SUMM-1 Schemas: 14, Tables: 471, Columns: 18854, Foreign Keys: 0
   4.385 +S-TME-FLGS-1 Standard column flags: indexed: 0, primary: 0, nullable: 0
   4.386 +S-TME-FLGO-1 Other column flags: none
   4.387 +
   4.388 +Section TMS: Check content of tables metadata from TAP_SCHEMA
   4.389 +I-TMS-TAPV-1 Validating for TAP version V1.0
   4.390 +I-TMS-QSUB-1 Submitting query: SELECT COUNT(*) AS nr FROM TAP_SCHEMA.schemas
   4.391 +I-TMS-QGET-1 Query GET URL: http://localhost:8080/firethorn/tap/39559/sync?REQUEST=doQuery&LANG=ADQL&QUERY=SELECT+COUNT%28*%29+AS+nr+FROM+TAP_SCHEMA.schemas
   4.392 +I-TMS-QSUB-2 Submitting query: SELECT COUNT(*) AS nr FROM TAP_SCHEMA.tables
   4.393 +I-TMS-QGET-2 Query GET URL: http://localhost:8080/firethorn/tap/39559/sync?REQUEST=doQuery&LANG=ADQL&QUERY=SELECT+COUNT%28*%29+AS+nr+FROM+TAP_SCHEMA.tables
   4.394 +I-TMS-QSUB-3 Submitting query: SELECT COUNT(*) AS nr FROM TAP_SCHEMA.columns
   4.395 +I-TMS-QGET-3 Query GET URL: http://localhost:8080/firethorn/tap/39559/sync?REQUEST=doQuery&LANG=ADQL&QUERY=SELECT+COUNT%28*%29+AS+nr+FROM+TAP_SCHEMA.columns
   4.396 +I-TMS-QSUB-4 Submitting query: SELECT COUNT(*) AS nr FROM TAP_SCHEMA.keys
   4.397 +I-TMS-QGET-4 Query GET URL: http://localhost:8080/firethorn/tap/39559/sync?REQUEST=doQuery&LANG=ADQL&QUERY=SELECT+COUNT%28*%29+AS+nr+FROM+TAP_SCHEMA.keys
   4.398 +I-TMS-QSUB-5 Submitting query: SELECT COUNT(*) AS nr FROM TAP_SCHEMA.key_columns
   4.399 +I-TMS-QGET-5 Query GET URL: http://localhost:8080/firethorn/tap/39559/sync?REQUEST=doQuery&LANG=ADQL&QUERY=SELECT+COUNT%28*%29+AS+nr+FROM+TAP_SCHEMA.key_columns
   4.400 +I-TMS-QSUB-6 Submitting query: SELECT principal, indexed, std, "size" FROM TAP_SCHEMA.columns
   4.401 +I-TMS-QGET-6 Query GET URL: http://localhost:8080/firethorn/tap/39559/sync?REQUEST=doQuery&LANG=ADQL&QUERY=SELECT+principal%2C+indexed%2C+std%2C+%22size%22+FROM+TAP_SCHEMA.columns&MAXREC=18864
   4.402 +I-TMS-QSUB-7 Submitting query: SELECT TOP 1 * FROM TAP_SCHEMA.columns
   4.403 +I-TMS-QGET-7 Query GET URL: http://localhost:8080/firethorn/tap/39559/sync?REQUEST=doQuery&LANG=ADQL&QUERY=SELECT+TOP+1+*+FROM+TAP_SCHEMA.columns&MAXREC=1
   4.404 +I-TMS-QSUB-8 Submitting query: SELECT ts_column_id, table_name, column_name, description, unit, ucd, utype, datatype, arraysize, principal, indexed, std, ft_column_id FROM TAP_SCHEMA.columns
   4.405 +I-TMS-QGET-8 Query GET URL: http://localhost:8080/firethorn/tap/39559/sync?REQUEST=doQuery&LANG=ADQL&QUERY=SELECT+ts_column_id%2C+table_name%2C+column_name%2C+description%2C+unit%2C+ucd%2C+utype%2C+datatype%2C+arraysize%2C+principal%2C+indexed%2C+std%2C+ft_column_id+FROM+TAP_SCHEMA.columns&MAXREC=18864
   4.406 +I-TMS-QSUB-9 Submitting query: SELECT from_column, target_column, key_id FROM TAP_SCHEMA.key_columns
   4.407 +I-TMS-QGET-9 Query GET URL: http://localhost:8080/firethorn/tap/39559/sync?REQUEST=doQuery&LANG=ADQL&QUERY=SELECT+from_column%2C+target_column%2C+key_id+FROM+TAP_SCHEMA.key_columns&MAXREC=18864
   4.408 +E-TMS-TSCT-1 Type mismatch for column TAP_SCHEMA.schemas.schema_name: datatype=char is not varchar-like (TAP 1.0)
   4.409 +E-TMS-TSCT-2 Type mismatch for column TAP_SCHEMA.schemas.utype: datatype=char is not varchar-like (TAP 1.0)
   4.410 +E-TMS-TSCT-3 Type mismatch for column TAP_SCHEMA.schemas.description: datatype=char is not varchar-like (TAP 1.0)
   4.411 +I-TMS-TSNS-1 2 non-standard columns in TAP_SCHEMA.schemas: [ts_schema_id, ft_schema_id]
   4.412 +E-TMS-TSCT-4 Type mismatch for column TAP_SCHEMA.tables.schema_name: datatype=char is not varchar-like (TAP 1.0)
   4.413 +E-TMS-TSCT-5 Type mismatch for column TAP_SCHEMA.tables.table_name: datatype=char is not varchar-like (TAP 1.0)
   4.414 +E-TMS-TSCT-6 Type mismatch for column TAP_SCHEMA.tables.table_type: datatype=char is not varchar-like (TAP 1.0)
   4.415 +E-TMS-TSCT-7 Type mismatch for column TAP_SCHEMA.tables.utype: datatype=char is not varchar-like (TAP 1.0)
   4.416 +E-TMS-TSCT-8 Type mismatch for column TAP_SCHEMA.tables.description: datatype=char is not varchar-like (TAP 1.0)
   4.417 +I-TMS-TSNS-2 2 non-standard columns in TAP_SCHEMA.tables: [ts_table_id, ft_table_id]
   4.418 +E-TMS-TSCT-9 Type mismatch for column TAP_SCHEMA.columns.table_name: datatype=char is not varchar-like (TAP 1.0)
   4.419 +I-TMS-TSNS-3 3 non-standard columns in TAP_SCHEMA.columns: [arraysize, ts_column_id, ft_column_id]
   4.420 +I-TMS-TSNS-4 1 non-standard columns in TAP_SCHEMA.keys: [ts_key_id]
   4.421 +I-TMS-TSNS-5 1 non-standard columns in TAP_SCHEMA.key_columns: [ts_key_column_id]
   4.422 +S-TMS-SUMM-1 Schemas: 14, Tables: 471, Columns: 18854, Foreign Keys: 0
   4.423 +S-TMS-FLGS-1 Standard column flags: indexed: 0, principal: 7, std: 33
   4.424 +S-TMS-QNUM-1 Successful/submitted TAP queries: 29/29
   4.425 +S-TMS-QTIM-1 Average successful query time: 1.5s
   4.426 +I-TMS-QSUB-x (20 more)
   4.427 +I-TMS-QGET-x (20 more)
   4.428 +E-TMS-TSCT-x (18 more)
   4.429 +
   4.430 +Section TMC: Compare table metadata from /tables and TAP_SCHEMA
   4.431 +
   4.432 +Section CPV: Validate capabilities against XML schema
   4.433 +I-CPV-VURL-1 Validating http://localhost:8080/firethorn/tap/39559/capabilities as capabilities (http://www.ivoa.net/xml/VOSICapabilities/v1.0)
   4.434 +S-CPV-VALI-1 SAX report: warnings 0, errors 0, fatal 0
   4.435 +
   4.436 +Section CAP: Check TAP and TAPRegExt content of capabilities document
   4.437 +
   4.438 +Section AVV: Validate availability against XML schema
   4.439 +I-AVV-VURL-1 Validating http://localhost:8080/firethorn/tap/39559/availability as availability (http://www.ivoa.net/xml/VOSIAvailability/v1.0)
   4.440 +S-AVV-VALI-1 SAX report: warnings 0, errors 0, fatal 0
   4.441 +
   4.442 +Section QGE: Make ADQL queries in sync GET mode
   4.443 +I-QGE-QSUB-1 Submitting query: SELECT TOP 10 surveyID FROM VHSDR1.Survey
   4.444 +I-QGE-QGET-1 Query GET URL: http://localhost:8080/firethorn/tap/39559/sync?REQUEST=doQuery&LANG=ADQL&QUERY=SELECT+TOP+10+surveyID+FROM+VHSDR1.Survey
   4.445 +I-QGE-QSUB-2 Submitting query: SELECT surveyID FROM VHSDR1.Survey
   4.446 +I-QGE-QGET-2 Query GET URL: http://localhost:8080/firethorn/tap/39559/sync?REQUEST=doQuery&LANG=ADQL&QUERY=SELECT+surveyID+FROM+VHSDR1.Survey&MAXREC=0
   4.447 +I-QGE-QSUB-3 Submitting query: SELECT TOP 10 surveyID FROM VHSDR1.Survey
   4.448 +I-QGE-QGET-3 Query GET URL: http://localhost:8080/firethorn/tap/39559/sync?REQUEST=doQuery&LANG=ADQL&QUERY=SELECT+TOP+10+surveyID+FROM+VHSDR1.Survey&DUMMY=ignore-me
   4.449 +I-QGE-QSUB-4 Submitting query: SELECT TOP 1 surveyID FROM VHSDR1.Survey
   4.450 +I-QGE-QGET-4 Query GET URL: http://localhost:8080/firethorn/tap/39559/sync?REQUEST=doQuery&LANG=ADQL-2.0&QUERY=SELECT+TOP+1+surveyID+FROM+VHSDR1.Survey
   4.451 +I-QGE-QSUB-5 Submitting query: SELECT TOP 1 surveyID FROM VHSDR1.Survey
   4.452 +I-QGE-QGET-5 Query GET URL: http://localhost:8080/firethorn/tap/39559/sync?REQUEST=doQuery&LANG=ADQL&QUERY=SELECT+TOP+1+surveyID+FROM+VHSDR1.Survey
   4.453 +I-QGE-QSUB-6 Submitting query: SELECT TOP 8 sdssPrimary, sdssType AS taplint_c_2, V.distanceMins, slaveObjID AS taplint_c_4, masterObjID FROM VHSDR1.vhsSourceXDR7PhotoObj AS V
   4.454 +I-QGE-QGET-6 Query GET URL: http://localhost:8080/firethorn/tap/39559/sync?REQUEST=doQuery&LANG=ADQL&QUERY=SELECT+TOP+8+sdssPrimary%2C+sdssType+AS+taplint_c_2%2C+V.distanceMins%2C+slaveObjID+AS+taplint_c_4%2C+masterObjID++FROM+VHSDR1.vhsSourceXDR7PhotoObj+AS+V
   4.455 +I-QGE-QSUB-7 Submitting query: SELECT masterObjID FROM VHSDR1.vhsSourceXDR7PhotoObjAll
   4.456 +I-QGE-QGET-7 Query GET URL: http://localhost:8080/firethorn/tap/39559/sync?REQUEST=doQuery&LANG=ADQL&QUERY=SELECT+masterObjID+FROM+VHSDR1.vhsSourceXDR7PhotoObjAll&MAXREC=0
   4.457 +I-QGE-DUFF-1 Submitting query expected to fail (bad ADQL): DUFF QUERY
   4.458 +I-QGE-QGET-8 Query GET URL: http://localhost:8080/firethorn/tap/39559/sync?REQUEST=doQuery&LANG=ADQL&QUERY=DUFF+QUERY
   4.459 +I-QGE-DUFF-2 Submitting query expected to fail (unknown query language): SELECT TOP 1 * FROM TAP_SCHEMA.tables
   4.460 +I-QGE-QGET-9 Query GET URL: http://localhost:8080/firethorn/tap/39559/sync?REQUEST=doQuery&LANG=OOBLECK&QUERY=SELECT+TOP+1+*+FROM+TAP_SCHEMA.tables
   4.461 +S-QGE-QNUM-1 Successful/submitted TAP queries: 7/7
   4.462 +S-QGE-QTIM-1 Average successful query time: 1.1s
   4.463 +
   4.464 +Section QPO: Make ADQL queries in sync POST mode
   4.465 +I-QPO-QSUB-1 Submitting query: SELECT TOP 10 surveyID FROM VHSDR1.Survey
   4.466 +I-QPO-QSUB-2 Submitting query: SELECT surveyID FROM VHSDR1.Survey
   4.467 +I-QPO-QSUB-3 Submitting query: SELECT TOP 10 surveyID FROM VHSDR1.Survey
   4.468 +I-QPO-QSUB-4 Submitting query: SELECT TOP 8 sdssPrimary, sdssType AS taplint_c_2, V.distanceMins, slaveObjID AS taplint_c_4, masterObjID FROM VHSDR1.vhsSourceXDR7PhotoObj AS V
   4.469 +I-QPO-QSUB-5 Submitting query: SELECT masterObjID FROM VHSDR1.vhsSourceXDR7PhotoObjAll
   4.470 +I-QPO-DUFF-1 Submitting query expected to fail (bad ADQL): DUFF QUERY
   4.471 +I-QPO-DUFF-2 Submitting query expected to fail (unknown query language): SELECT TOP 1 * FROM TAP_SCHEMA.tables
   4.472 +S-QPO-QNUM-1 Successful/submitted TAP queries: 5/5
   4.473 +S-QPO-QTIM-1 Average successful query time: 1.1s
   4.474 +
   4.475 +Section QAS: Make ADQL queries in async mode
   4.476 +I-QAS-QSUB-1 Submitting query: SELECT TOP 10 surveyID FROM VHSDR1.Survey
   4.477 +I-QAS-QJOB-1 Submitted query at http://localhost:8080/firethorn/tap/39559/async/121242
   4.478 +I-QAS-QSUB-2 Submitting query: SELECT surveyID FROM VHSDR1.Survey
   4.479 +I-QAS-QJOB-2 Submitted query at http://localhost:8080/firethorn/tap/39559/async/121243
   4.480 +I-QAS-QSUB-3 Submitting query: SELECT TOP 10 surveyID FROM VHSDR1.Survey
   4.481 +I-QAS-QJOB-3 Submitted query at http://localhost:8080/firethorn/tap/39559/async/121244
   4.482 +I-QAS-QSUB-4 Submitting query: SELECT TOP 8 sdssPrimary, sdssType AS taplint_c_2, V.distanceMins, slaveObjID AS taplint_c_4, masterObjID FROM VHSDR1.vhsSourceXDR7PhotoObj AS V
   4.483 +I-QAS-QJOB-4 Submitted query at http://localhost:8080/firethorn/tap/39559/async/121245
   4.484 +I-QAS-QSUB-5 Submitting query: SELECT masterObjID FROM VHSDR1.vhsSourceXDR7PhotoObjAll
   4.485 +I-QAS-QJOB-5 Submitted query at http://localhost:8080/firethorn/tap/39559/async/121246
   4.486 +I-QAS-DUFF-1 Submitting query expected to fail (bad ADQL): DUFF QUERY
   4.487 +I-QAS-QJOB-6 Submitted query at http://localhost:8080/firethorn/tap/39559/async/121247
   4.488 +I-QAS-DUFF-2 Submitting query expected to fail (unknown query language): SELECT TOP 1 * FROM TAP_SCHEMA.tables
   4.489 +I-QAS-QJOB-7 Submitted query at http://localhost:8080/firethorn/tap/39559/async/121248
   4.490 +E-QAS-DSUC-1 Apparent success from bad query (unknown query language)
   4.491 +S-QAS-QNUM-1 Successful/submitted TAP queries: 5/5
   4.492 +S-QAS-QTIM-1 Average successful query time: 1.6s
   4.493 +
   4.494 +Section UWS: Test asynchronous UWS/TAP behaviour
   4.495 +I-UWS-CJOB-1 Created new job http://localhost:8080/firethorn/tap/39559/async/121249
   4.496 +I-UWS-POPA-1 POSTed runId=TAPLINT-002 to http://localhost:8080/firethorn/tap/39559/async/121249/parameters
   4.497 +I-UWS-POPA-2 POSTed PHASE=ABORT to http://localhost:8080/firethorn/tap/39559/async/121249/phase
   4.498 +I-UWS-POPA-3 POSTed ACTION=DELETE to http://localhost:8080/firethorn/tap/39559/async/121249
   4.499 +I-UWS-CJOB-2 Created new job http://localhost:8080/firethorn/tap/39559/async/121250
   4.500 +I-UWS-CJOB-3 Created new job http://localhost:8080/firethorn/tap/39559/async/121251
   4.501 +I-UWS-VUWS-1 UWS job document implicitly V1.0
   4.502 +I-UWS-POPA-4 POSTed PHASE=RUN to http://localhost:8080/firethorn/tap/39559/async/121251/phase
   4.503 +
   4.504 +Section MDQ: Check table query result columns against declared metadata
   4.505 +I-MDQ-QSUB-1 Submitting query: SELECT TOP 1 * FROM "FIRST".first08Jul16Source
   4.506 +I-MDQ-QSUB-2 Submitting query: SELECT TOP 1 * FROM "FIRST".firstSource
   4.507 +I-MDQ-QSUB-3 Submitting query: SELECT TOP 1 * FROM "FIRST".firstSource12Feb16
   4.508 +I-MDQ-QSUB-4 Submitting query: SELECT TOP 1 * FROM ATLASDR1.ArchiveCurationHistory
   4.509 +I-MDQ-QSUB-5 Submitting query: SELECT TOP 1 * FROM ATLASDR1.AstrCalVers
   4.510 +I-MDQ-QSUB-6 Submitting query: SELECT TOP 1 * FROM ATLASDR1.CurationTask
   4.511 +I-MDQ-QSUB-7 Submitting query: SELECT TOP 1 * FROM ATLASDR1.CurrentAstrometry
   4.512 +I-MDQ-QSUB-8 Submitting query: SELECT TOP 1 * FROM ATLASDR1.ExternalSurvey
   4.513 +I-MDQ-QSUB-9 Submitting query: SELECT TOP 1 * FROM ATLASDR1.ExternalSurveyTable
   4.514 +S-MDQ-QNUM-1 Successful/submitted TAP queries: 471/471
   4.515 +S-MDQ-QTIM-1 Average successful query time: 1.8s
   4.516 +I-MDQ-QSUB-x (462 more)
   4.517 +
   4.518 +Section OBS: Test implementation of ObsCore Data Model
   4.519 +I-OBS-NODM-1 Table capabilities lists no ObsCore DataModel - no ObsCore tests
   4.520 +
   4.521 +Section UPL: Make queries with table uploads
   4.522 +F-UPL-NOUP-1 Table capabilities lists no upload methods - will not attempt upload tests
   4.523 +
   4.524 +Section EXA: Check content of examples document
   4.525 +I-EXA-EURL-1 Reading examples document from http://localhost:8080/firethorn/tap/39559/examples
   4.526 +F-EXA-EXNO-1 No examples document at http://localhost:8080/firethorn/tap/39559/examples
   4.527 +
   4.528 +Totals: Errors: 28; Warnings: 0; Infos: 589; Summaries: 18; Failures: 2
   4.529 +
   4.530 +## Some (unrelated errors), issue for them created in Redmine (http://redmine.roe.ac.uk/issues/1183)
   4.531 +
   4.532 +
   4.533 +
   4.534 +
   4.535 +## Test4: Run our own validator
   4.536 +## ---------------------------------------------------------------------------------------
   4.537 +
   4.538 +
   4.539 +## From ftpy container run:
   4.540 +
   4.541 +python3 -c "import firethorn_utils.tap_validator as validator;validator.main()" -ft=http://gillian:8080/firethorn -r=39559 -u= -p= -g= -m=sync
   4.542 +--- Starting validation on Resource: http://gillian:8080/firethorn/adql/resource/---
   4.543 +...
   4.544 +
   4.545 +## Test completed, but a one exceptions, with time out error messages
   4.546 +
   4.547 +Exceptions: 
   4.548 +{'BestDR9.Sky': '<urlopen error timed out>'}
   4.549 +
   4.550 +## Run queries on those tables to check
   4.551 +curl -L "http://localhost:8080/firethorn/tap/39559/sync?QUERY=SELECT+TOP+5+*+FROM+BestDR9.Sky&REQUEST=doQuery&LANG=ADQL&FORMAT=VOTABLE"
   4.552 +
   4.553 +..
   4.554 + <TABLEDATA></TABLEDATA></DATA></TABLE></RESOURCE></VOTABLE>
   4.555 +..
   4.556 +
   4.557 +
   4.558 +## Query completed, but empty table
   4.559 +
   4.560 +
   4.561 +
   4.562 +## Test5: Check a query on a field of type: datetime
   4.563 +## ---------------------------------------------------------------------------------------
   4.564 +
   4.565 +## Testing Column: ATLASDR1.Multiframe.creationDate
   4.566 +## Column type: "DATETIME"
   4.567 +
   4.568 +curl -L "http://localhost:8080/firethorn/tap/39559/sync?QUERY=SELECT+TOP+5+creationDate+FROM+ATLASDR1.Multiframe&REQUEST=doQuery&LANG=ADQL&FORMAT=VOTABLE"
   4.569 +
   4.570 +<?xml version="1.0" encoding="UTF-8"?>
   4.571 +<VOTABLE xmlns="http://www.ivoa.net/xml/VOTable/v1.3" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.ivoa.net/xml/VOTable/v1.3 http://www.ivoa.net/xml/VOTable/v1.3" version="1.3">
   4.572 +  <RESOURCE type="results">
   4.573 +    <INFO name="QUERY_STATUS" value="OK"/>
   4.574 +    <INFO name="link" value="http://localhost:8080/firethorn/adql/table/215777"/>
   4.575 +    <TABLE ID="table.215777" name="XX_W2RFSDGF2HWB2AAAAFYNA7WZU4">
   4.576 +      <FIELD ID="column.219142" name="creationDate" datatype="char">
   4.577 +        <LINK content-type="application/json" content-role="metadata" href="http://localhost:8080/firethorn/adql/column/219142"/>
   4.578 +      </FIELD>
   4.579 +      <DATA>
   4.580 +        <TABLEDATA>
   4.581 +          <TR>
   4.582 +            <TD>2011-08-17T00:00:00.000Z</TD>
   4.583 +          </TR>
   4.584 +          <TR>
   4.585 +            <TD>2011-08-17T00:00:00.000Z</TD>
   4.586 +          </TR>
   4.587 +          <TR>
   4.588 +            <TD>2011-08-17T00:00:00.000Z</TD>
   4.589 +          </TR>
   4.590 +          <TR>
   4.591 +            <TD>2011-08-17T00:00:00.000Z</TD>
   4.592 +          </TR>
   4.593 +          <TR>
   4.594 +            <TD>2011-08-17T00:00:00.000Z</TD>
   4.595 +          </TR>
   4.596 +        </TABLEDATA>
   4.597 +      </DATA>
   4.598 +    </TABLE>
   4.599 +  </RESOURCE>
   4.600 +</VOTABLE>
     5.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     5.2 +++ b/doc/notes/stv/20200331-TAP-Swarm-deploy-2.1.36.txt	Wed Jul 29 12:16:11 2020 +0100
     5.3 @@ -0,0 +1,395 @@
     5.4 +#
     5.5 +# <meta:header>
     5.6 +#   <meta:licence>
     5.7 +#     Copyright (c) 2015, ROE (http://www.roe.ac.uk/)
     5.8 +#
     5.9 +#     This information is free software: you can redistribute it and/or modify
    5.10 +#     it under the terms of the GNU General Public License as published by
    5.11 +#     the Free Software Foundation, either version 3 of the License, or
    5.12 +#     (at your option) any later version.
    5.13 +#
    5.14 +#     This information is distributed in the hope that it will be useful,
    5.15 +#     but WITHOUT ANY WARRANTY; without even the implied warranty of
    5.16 +#     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    5.17 +#     GNU General Public License for more details.
    5.18 +#  
    5.19 +#     You should have received a copy of the GNU General Public License
    5.20 +#     along with this program.  If not, see <http://www.gnu.org/licenses/>.
    5.21 +#   </meta:licence>
    5.22 +# </meta:header>
    5.23 +#
    5.24 +#
    5.25 +
    5.26 +
    5.27 +## ------------------------------------------------------------------------------------------
    5.28 +## CreateVM
    5.29 +## ------------------------------------------------------------------------------------------
    5.30 +
    5.31 +stv@trop02:~$ createvm
    5.32 +..
    5.33 +INFO : Node name [Lothigometh]
    5.34 +INFO : Base name [fedora-28-32G-docker-base-20181016.qcow]
    5.35 +INFO : Base path [/var/lib/libvirt/images/base/fedora-28-32G-docker-base-20181016.qcow]
    5.36 +INFO : Disc name [Lothigometh.qcow]
    5.37 +INFO : Disc size [32GiB]
    5.38 +
    5.39 +
    5.40 +
    5.41 +## ------------------------------------------------------------------------------------------
    5.42 +## Initialize Swarm with VM's address
    5.43 +## ------------------------------------------------------------------------------------------
    5.44 +
    5.45 +ssh Stevedore@Lothigometh
    5.46 +
    5.47 +ip=$(ip -f inet -o addr show ens3|cut -d\  -f 7 | cut -d/ -f 1)
    5.48 +docker swarm init --advertise-addr ${ip}
    5.49 +
    5.50 +
    5.51 +	Swarm initialized: current node (fhowzurjvitnuy0ja8esc2c7p) is now a manager.
    5.52 +
    5.53 +	To add a worker to this swarm, run the following command:
    5.54 +
    5.55 +	    docker swarm join --token SWM.....cskl 192.168.202.9:2377
    5.56 +
    5.57 +	To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.
    5.58 +
    5.59 +
    5.60 +## Firewall Ports for Swarm
    5.61 +
    5.62 +sudo su
    5.63 +    firewall-cmd --add-port=2377/tcp --permanent
    5.64 +    firewall-cmd --add-port=2377/tcp --permanent
    5.65 +    firewall-cmd --add-port=7946/tcp --permanent
    5.66 +    firewall-cmd --add-port=4789/tcp --permanent
    5.67 +    firewall-cmd --add-port=4789/udp --permanent
    5.68 +    iptables -A INPUT -p 50 -j ACCEPT    
    5.69 +    firewall-cmd --reload
    5.70 +exit
    5.71 +
    5.72 +
    5.73 +
    5.74 +
    5.75 +## -------------------------------------------------------------------------------------------
    5.76 +## Add secret function.
    5.77 +## -------------------------------------------------------------------------------------------
    5.78 +
    5.79 +    secrethost='stv@shepseskaf.roe.ac.uk'
    5.80 +    secretfile='${HOME:?}/secret.store.20190828'
    5.81 +
    5.82 +    secret()
    5.83 +    {
    5.84 +        local key=${1:?}
    5.85 +        ssh -o 'VisualHostKey=no' "${secrethost:?}" "sed -n 's/${key}=\\(.*\\)/\\1/p' \"${secretfile:?}\"" 
    5.86 +    }
    5.87 +
    5.88 +    secret 'firethorn.ssh.keys' >> "${HOME}/.ssh/authorized_keys"
    5.89 +
    5.90 +
    5.91 +
    5.92 +## -------------------------------------------------------------------------------------------
    5.93 +## Set the target branch and builtag
    5.94 +## -------------------------------------------------------------------------------------------
    5.95 +
    5.96 +
    5.97 +    export buildtag=2.1.36
    5.98 +    export branch=default
    5.99 +
   5.100 +
   5.101 +
   5.102 +## -------------------------------------------------------------------------------------------
   5.103 +## Create our chain.properties file
   5.104 +## -------------------------------------------------------------------------------------------
   5.105 +
   5.106 +cat > "${HOME:?}/chain.properties" << EOF
   5.107 +
   5.108 +metadata=postgres
   5.109 +metauser=$(pwgen 20 1)
   5.110 +metapass=$(pwgen 20 1) 
   5.111 +
   5.112 +userhost=$(secret 'firethorn.user.host')
   5.113 +userdata=$(secret 'firethorn.user.data')
   5.114 +useruser=$(secret 'firethorn.user.user')
   5.115 +userpass=$(secret 'firethorn.user.pass')
   5.116 +usertype=mssql
   5.117 +
   5.118 +datahost=$(secret 'firethorn.data.host')
   5.119 +datadata=$(secret 'firethorn.data.data')
   5.120 +datacatalog=$(secret 'firethorn.data.catalog')
   5.121 +datatype=$(secret 'firethorn.data.type')
   5.122 +datauser=$(secret 'firethorn.data.user')
   5.123 +datapass=$(secret 'firethorn.data.pass')
   5.124 +
   5.125 +tapschemadata=$(secret 'firethorn.tapschema.database.name')
   5.126 +tapschemauser=$(secret 'firethorn.tapschema.database.user')
   5.127 +tapschemapass=$(secret 'firethorn.tapschema.database.pass')
   5.128 +tapschemahost=$(secret 'firethorn.tapschema.database.host')
   5.129 +tapschemaport=$(secret 'firethorn.tapschema.database.port')
   5.130 +tapschematype=$(secret 'firethorn.tapschema.database.type')
   5.131 +tapschemajdbc=$(secret 'firethorn.tapschema.jdbc.name')
   5.132 +
   5.133 +tunneluser=$(secret 'ssh.tunnel.user')
   5.134 +tunnelhost=$(secret 'ssh.tunnel.host')
   5.135 +
   5.136 +admingroup=$(pwgen 20 1)	
   5.137 +adminuser=$(pwgen 20 1)
   5.138 +adminpass=$(pwgen 20 1)
   5.139 +
   5.140 +adql_query_delay_first=$(secret 'adql.query.delay.first')
   5.141 + 
   5.142 +firethorn_limits_rows_absolute=$(secret 'firethorn.limits.rows.absolute')
   5.143 +firethorn_limits_rows_default=$(secret 'firethorn.limits.rows.default')
   5.144 +
   5.145 +guestgroup=friends
   5.146 +endpoint=$(secret 'endpoint')
   5.147 +
   5.148 +firethornhost=gillian
   5.149 +
   5.150 +EOF
   5.151 +
   5.152 +
   5.153 +
   5.154 +## -----------------------------------------------------
   5.155 +## Create our Firethorn properties.
   5.156 +## -----------------------------------------------------
   5.157 +
   5.158 +source "${HOME:?}/chain.properties"
   5.159 +cat > "${HOME:?}/firethorn.properties" << EOF
   5.160 +
   5.161 +firethorn.meta.type=pgsql
   5.162 +firethorn.meta.driver=org.postgresql.Driver
   5.163 +firethorn.meta.host=bethany
   5.164 +firethorn.meta.url=jdbc:postgresql://bethany/${metadata}
   5.165 +firethorn.meta.data=postgres
   5.166 +firethorn.meta.user=${metauser:?}
   5.167 +firethorn.meta.pass=${metapass:?}
   5.168 +
   5.169 +firethorn.user.type=mssql
   5.170 +firethorn.user.url=jdbc:jtds:sqlserver://${userhost:?}/${userdata:?}
   5.171 +firethorn.user.driver=net.sourceforge.jtds.jdbc.Driver
   5.172 +firethorn.user.host=${userhost:?}
   5.173 +firethorn.user.data=${userdata:?}
   5.174 +firethorn.user.user=${useruser:?}
   5.175 +firethorn.user.pass=${userpass:?}
   5.176 +
   5.177 +firethorn.tapschema.resource.name=${tapschemajdbc}
   5.178 +firethorn.tapschema.database.name=${tapschemadata}
   5.179 +firethorn.tapschema.database.host=${tapschemahost}
   5.180 +firethorn.tapschema.database.port=${tapschemaport}
   5.181 +firethorn.tapschema.database.user=${tapschemauser}
   5.182 +firethorn.tapschema.database.pass=${tapschemapass}
   5.183 +
   5.184 +firethorn.admin.community=${admingroup:?}
   5.185 +firethorn.admin.user.name=${adminuser:?}
   5.186 +firethorn.admin.user.pass=${adminpass:?}
   5.187 +
   5.188 +firethorn.guest.community=${guestgroup:?}
   5.189 +
   5.190 +adql.query.delay.first=${adql_query_delay_first:?}
   5.191 +
   5.192 +firethorn.limits.rows.absolute=${firethorn_limits_rows_absolute:?}
   5.193 +firethorn.limits.rows.default=${firethorn_limits_rows_default:?}
   5.194 +
   5.195 +firethornhost=gillian
   5.196 +
   5.197 +
   5.198 +EOF
   5.199 +
   5.200 +
   5.201 +
   5.202 +## -------------------------------------------------------------------------------------------
   5.203 +## Create our compose env files.
   5.204 +## -------------------------------------------------------------------------------------------
   5.205 +
   5.206 +source "${HOME:?}/chain.properties"
   5.207 +cat > "${HOME:?}/.env" << EOF
   5.208 +
   5.209 +buildtag=${branch:?}
   5.210 +endpoint=${endpoint:?}
   5.211 +
   5.212 +
   5.213 +metadata=postgres
   5.214 +metauser=${metauser:?}
   5.215 +metapass=${metapass:?}
   5.216 +firethorn.meta.type=pgsql
   5.217 +firethorn.meta.driver=org.postgresql.Driver
   5.218 +firethorn.meta.host=bethany
   5.219 +firethorn.meta.url=jdbc:postgresql://bethany/postgres
   5.220 +firethorn.meta.data=postgres
   5.221 +firethorn.meta.user=${metauser:?}
   5.222 +firethorn.meta.pass=${metapass:?}
   5.223 +
   5.224 +
   5.225 +datadata=${datadata:?}
   5.226 +datauser=${datauser:?}
   5.227 +datapass=${datapass:?}
   5.228 +datahost=${datahost:?}
   5.229 +datacatalog=${datacatalog:?}
   5.230 +datatype=mssql
   5.231 +
   5.232 +
   5.233 +tapschemadata=${tapschemadata:?}
   5.234 +tapschemauser=${tapschemauser:?}
   5.235 +tapschemapass=${tapschemapass:?}
   5.236 +tapschemahost=${tapschemahost}
   5.237 +tapschemaport=${tapschemaport:?}
   5.238 +tapschemajdbc=${tapschemajdbc:?}
   5.239 +tapschematype=${tapschematype:?}
   5.240 +firethorn.tapschema.resource.name=${tapschemajdbc:?}
   5.241 +firethorn.tapschema.database.name=${tapschemadata:?}
   5.242 +firethorn.tapschema.database.host=${tapschemahost:?}
   5.243 +firethorn.tapschema.database.port=5432
   5.244 +firethorn.tapschema.database.user=${tapschemauser:?}
   5.245 +firethorn.tapschema.database.pass=${tapschemapass:?}
   5.246 +firethorn.tapschema.database.type=pgsql
   5.247 +
   5.248 +userhost=${userhost:?}
   5.249 +userdata=${userdata:?}
   5.250 +useruser=${useruser:?}
   5.251 +userpass=${userpass:?}
   5.252 +usertype=mssql
   5.253 +firethorn.user.type=mssql
   5.254 +firethorn.user.url=jdbc:jtds:sqlserver://${userhost:?}/${userdata:?}
   5.255 +firethorn.user.driver=net.sourceforge.jtds.jdbc.Driver
   5.256 +firethorn.user.host=${userhost:?}
   5.257 +firethorn.user.data=${userdata:?}
   5.258 +firethorn.user.user=${useruser:?}
   5.259 +firethorn.user.pass=${userpass:?}
   5.260 +
   5.261 +
   5.262 +admingroup=${admingroup:?}
   5.263 +adminuser=${adminuser:?}
   5.264 +adminpass=${adminpass:?}
   5.265 +guestgroup=${guestgroup:?}
   5.266 +firethorn.admin.community=${admingroup:?}
   5.267 +firethorn.admin.user.name=${adminuser:?}
   5.268 +firethorn.admin.user.pass=${adminpass:?}
   5.269 +firethorn.guest.community=${guestgroup:?}
   5.270 +
   5.271 +
   5.272 +adql_query_delay_first=${adql_query_delay_first:?}
   5.273 +adql.query.delay.first=${adql_query_delay_first:?}
   5.274 +firethorn_limits_rows_absolute=${firethorn_limits_rows_absolute:?}
   5.275 +firethorn_limits_rows_default=${firethorn_limits_rows_default:?}
   5.276 +firethorn.limits.rows.absolute=${firethorn_limits_rows_absolute:?}
   5.277 +firethorn.limits.rows.default=${firethorn_limits_rows_default:?}
   5.278 +
   5.279 +firethorn.ogsadai.endpoint=http://jarmila:8080/ogsadai/services
   5.280 +firethornhost=gillian
   5.281 +
   5.282 +
   5.283 +EOF
   5.284 +
   5.285 +
   5.286 +source "${HOME:?}/chain.properties"
   5.287 +cat > "${HOME:?}/.tapschema_env" << EOF
   5.288 +
   5.289 +POSTGRES_DB=${tapschemadata}
   5.290 +POSTGRES_USER=${tapschemauser}
   5.291 +POSTGRES_PASSWORD=${tapschemapass}
   5.292 +
   5.293 +EOF
   5.294 +
   5.295 +
   5.296 +source "${HOME:?}/chain.properties"
   5.297 +cat > "${HOME:?}/.metadata_env" << EOF
   5.298 +
   5.299 +POSTGRES_DB=${metadata}
   5.300 +POSTGRES_USER=${metauser}
   5.301 +POSTGRES_PASSWORD=${metapass}
   5.302 +         
   5.303 +EOF
   5.304 +
   5.305 +
   5.306 +
   5.307 +
   5.308 +## -------------------------------------------------------------------------------------------
   5.309 +## Fetch the TAP Deployer
   5.310 +## -------------------------------------------------------------------------------------------
   5.311 +
   5.312 +wget https://raw.githubusercontent.com/stvoutsin/firethorn.py/master/docker/firethorn-compose-v3.yml -O  docker-compose.yml
   5.313 +
   5.314 +
   5.315 +
   5.316 +
   5.317 +## ------------------------------------------------------------------------
   5.318 +## Deploy Swarm stack
   5.319 +## ------------------------------------------------------------------------
   5.320 +
   5.321 +docker stack deploy -c docker-compose.yml ft
   5.322 +
   5.323 +
   5.324 +
   5.325 +## ------------------------------------------------------------------------
   5.326 +## To remove all docker services 
   5.327 +## ------------------------------------------------------------------------
   5.328 +
   5.329 +## docker service rm $(docker service ls -q)
   5.330 +
   5.331 +
   5.332 +
   5.333 +
   5.334 +## ------------------------------------------------------------------------
   5.335 +## To remove all docker services 
   5.336 +## ------------------------------------------------------------------------
   5.337 +
   5.338 +## docker service rm $(docker service ls -q)
   5.339 +
   5.340 +
   5.341 +
   5.342 +## ------------------------------------------------------------------------
   5.343 +## To remove stack of services
   5.344 +## ------------------------------------------------------------------------
   5.345 +
   5.346 +## docker stack rm ft
   5.347 +
   5.348 +
   5.349 +## ------------------------------------------------------------------------
   5.350 +## Check that the services started
   5.351 +## ------------------------------------------------------------------------
   5.352 +
   5.353 +docker ps
   5.354 +CONTAINER ID        IMAGE                           COMMAND                  CREATED             STATUS                  PORTS               NAMES
   5.355 +b154bf2ede7a        firethorn/firethorn:latest      "/bin/sh -c '/var/lo…"   43 hours ago        Up 43 hours (healthy)   8080/tcp            ft_gillian.1.ude71jy4xuptv0jxw62zkz7v7
   5.356 +ac589bee6502        firethorn/ogsadai:latest        "/bin/sh -c '/var/lo…"   43 hours ago        Up 43 hours (healthy)   8080/tcp            ft_jarmila.1.4txmkjsy3z7ppzc4r9fzkmi1s
   5.357 +a938fdfa97e8        firethorn/postgres:latest       "docker-entrypoint.s…"   43 hours ago        Up 43 hours             5432/tcp            ft_carolina.1.zlxhpq9966nfxxwdchai75842
   5.358 +e17d1e510a75        firethorn/postgres:latest       "docker-entrypoint.s…"   43 hours ago        Up 43 hours             5432/tcp            ft_bethany.1.wrs3lalr60jaz6hxtjpv4i55y
   5.359 +1b7d90a7913d        firethorn/firethorn-py:latest   "python3"                43 hours ago        Up 43 hours                                 ft_firethorn-py.1.ma6yslq3gf4hnisccsoh1p1bd
   5.360 +
   5.361 +
   5.362 +## ------------------------------------------------------------------------
   5.363 +## Run Docker Compose tap-deployer.yml from firethorn.py
   5.364 +## ------------------------------------------------------------------------
   5.365 +
   5.366 +docker exec -it 1b7d90a7913d bash
   5.367 +
   5.368 +
   5.369 +cat > "deployer.py" << EOF
   5.370 +
   5.371 +def main():
   5.372 +    import firethorn
   5.373 +    import firethorn_utils.configurator as configur
   5.374 +    ft = firethorn.Firethorn(endpoint="http://gillian:8080/firethorn")
   5.375 +    ft.login(firethorn.config.adminuser, firethorn.config.adminpass, firethorn.config.admingroup)
   5.376 +    configurator =  configur.Configurator(ft)
   5.377 +    configurator.load_resources("https://raw.githubusercontent.com/stvoutsin/metadata/master/firethorn/config/osa-tap.json")
   5.378 +    configurator.load_resources("https://raw.githubusercontent.com/stvoutsin/metadata/master/firethorn/config/ssa-tap.json")
   5.379 +    configurator.load_resources("https://raw.githubusercontent.com/stvoutsin/metadata/master/firethorn/config/vsa-tap.json")
   5.380 +    configurator.load_resources("https://raw.githubusercontent.com/stvoutsin/metadata/master/firethorn/config/wsa-tap.json")
   5.381 +
   5.382 +if __name__== "__main__":
   5.383 +    main()
   5.384 +
   5.385 +EOF
   5.386 +
   5.387 +
   5.388 +
   5.389 +nohup python3 -u deployer.py &
   5.390 +
   5.391 +
   5.392 +
   5.393 +
   5.394 +OSA - http://gillian:8080/firethorn/tap/54/
   5.395 +SSA - http://gillian:8080/firethorn/tap/62/
   5.396 +VSA - http://gillian:8080/firethorn/tap/65/
   5.397 +WSA - http://gillian:8080/firethorn/tap/72/
   5.398 +
     6.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     6.2 +++ b/doc/notes/stv/20200514-TAP-Swarm-deploy-2.1.36.txt	Wed Jul 29 12:16:11 2020 +0100
     6.3 @@ -0,0 +1,403 @@
     6.4 +#
     6.5 +# <meta:header>
     6.6 +#   <meta:licence>
     6.7 +#     Copyright (c) 2015, ROE (http://www.roe.ac.uk/)
     6.8 +#
     6.9 +#     This information is free software: you can redistribute it and/or modify
    6.10 +#     it under the terms of the GNU General Public License as published by
    6.11 +#     the Free Software Foundation, either version 3 of the License, or
    6.12 +#     (at your option) any later version.
    6.13 +#
    6.14 +#     This information is distributed in the hope that it will be useful,
    6.15 +#     but WITHOUT ANY WARRANTY; without even the implied warranty of
    6.16 +#     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    6.17 +#     GNU General Public License for more details.
    6.18 +#  
    6.19 +#     You should have received a copy of the GNU General Public License
    6.20 +#     along with this program.  If not, see <http://www.gnu.org/licenses/>.
    6.21 +#   </meta:licence>
    6.22 +# </meta:header>
    6.23 +#
    6.24 +#
    6.25 +
    6.26 +
    6.27 +## ------------------------------------------------------------------------------------------
    6.28 +## CreateVM
    6.29 +## ------------------------------------------------------------------------------------------
    6.30 +
    6.31 +stv@trop02:~$ createvm
    6.32 +..
    6.33 +INFO : Node name [Araybwyn]
    6.34 +INFO : Base name [fedora-28-32G-docker-base-20181016.qcow]
    6.35 +INFO : Base path [/var/lib/libvirt/images/base/fedora-28-32G-docker-base-20181016.qcow]
    6.36 +INFO : Disc name [Araybwyn.qcow]
    6.37 +INFO : Disc size [32GiB]
    6.38 +
    6.39 +
    6.40 +
    6.41 +
    6.42 +## ------------------------------------------------------------------------------------------
    6.43 +## Initialize Swarm with VM's address
    6.44 +## ------------------------------------------------------------------------------------------
    6.45 +
    6.46 +ssh Stevedore@Araybwyn
    6.47 +
    6.48 +ip=$(ip -f inet -o addr show ens3|cut -d\  -f 7 | cut -d/ -f 1)
    6.49 +docker swarm init --advertise-addr ${ip}
    6.50 +
    6.51 +
    6.52 +## Firewall Ports for Swarm
    6.53 +
    6.54 +sudo su
    6.55 +    firewall-cmd --add-port=2377/tcp --permanent
    6.56 +    firewall-cmd --add-port=2377/tcp --permanent
    6.57 +    firewall-cmd --add-port=7946/tcp --permanent
    6.58 +    firewall-cmd --add-port=4789/tcp --permanent
    6.59 +    firewall-cmd --add-port=4789/udp --permanent
    6.60 +    iptables -A INPUT -p 50 -j ACCEPT    
    6.61 +    firewall-cmd --reload
    6.62 +exit
    6.63 +
    6.64 +
    6.65 +
    6.66 +
    6.67 +## -------------------------------------------------------------------------------------------
    6.68 +## Add secret function.
    6.69 +## -------------------------------------------------------------------------------------------
    6.70 +
    6.71 +    secrethost='stv@shepseskaf.roe.ac.uk'
    6.72 +    secretfile='${HOME:?}/secret.store.20190828'
    6.73 +
    6.74 +    secret()
    6.75 +    {
    6.76 +        local key=${1:?}
    6.77 +        ssh -o 'VisualHostKey=no' "${secrethost:?}" "sed -n 's/${key}=\\(.*\\)/\\1/p' \"${secretfile:?}\"" 
    6.78 +    }
    6.79 +
    6.80 +    secret 'firethorn.ssh.keys' >> "${HOME}/.ssh/authorized_keys"
    6.81 +
    6.82 +
    6.83 +
    6.84 +## -------------------------------------------------------------------------------------------
    6.85 +## Set the target branch and builtag
    6.86 +## -------------------------------------------------------------------------------------------
    6.87 +
    6.88 +
    6.89 +    export buildtag=2.1.36
    6.90 +    export branch=default
    6.91 +
    6.92 +
    6.93 +
    6.94 +## -------------------------------------------------------------------------------------------
    6.95 +## Create our chain.properties file
    6.96 +## -------------------------------------------------------------------------------------------
    6.97 +
    6.98 +cat > "${HOME:?}/chain.properties" << EOF
    6.99 +
   6.100 +metadata=postgres
   6.101 +metauser=$(pwgen 20 1)
   6.102 +metapass=$(pwgen 20 1) 
   6.103 +
   6.104 +userhost=$(secret 'firethorn.user.host')
   6.105 +userdata=$(secret 'firethorn.user.data')
   6.106 +useruser=$(secret 'firethorn.user.user')
   6.107 +userpass=$(secret 'firethorn.user.pass')
   6.108 +usertype=mssql
   6.109 +
   6.110 +datahost=$(secret 'firethorn.data.host')
   6.111 +datadata=$(secret 'firethorn.data.data')
   6.112 +datacatalog=$(secret 'firethorn.data.catalog')
   6.113 +datatype=$(secret 'firethorn.data.type')
   6.114 +datauser=$(secret 'firethorn.data.user')
   6.115 +datapass=$(secret 'firethorn.data.pass')
   6.116 +
   6.117 +tapschemadata=$(secret 'firethorn.tapschema.database.name')
   6.118 +tapschemauser=$(secret 'firethorn.tapschema.database.user')
   6.119 +tapschemapass=$(secret 'firethorn.tapschema.database.pass')
   6.120 +tapschemahost=$(secret 'firethorn.tapschema.database.host')
   6.121 +tapschemaport=$(secret 'firethorn.tapschema.database.port')
   6.122 +tapschematype=$(secret 'firethorn.tapschema.database.type')
   6.123 +tapschemajdbc=$(secret 'firethorn.tapschema.jdbc.name')
   6.124 +
   6.125 +tunneluser=$(secret 'ssh.tunnel.user')
   6.126 +tunnelhost=$(secret 'ssh.tunnel.host')
   6.127 +
   6.128 +admingroup=$(pwgen 20 1)	
   6.129 +adminuser=$(pwgen 20 1)
   6.130 +adminpass=$(pwgen 20 1)
   6.131 +
   6.132 +adql_query_delay_first=$(secret 'adql.query.delay.first')
   6.133 + 
   6.134 +firethorn_limits_rows_absolute=$(secret 'firethorn.limits.rows.absolute')
   6.135 +firethorn_limits_rows_default=$(secret 'firethorn.limits.rows.default')
   6.136 +
   6.137 +guestgroup=friends
   6.138 +endpoint=$(secret 'endpoint')
   6.139 +
   6.140 +firethornhost=gillian
   6.141 +
   6.142 +EOF
   6.143 +
   6.144 +
   6.145 +
   6.146 +## -----------------------------------------------------
   6.147 +## Create our Firethorn properties.
   6.148 +## -----------------------------------------------------
   6.149 +
   6.150 +source "${HOME:?}/chain.properties"
   6.151 +cat > "${HOME:?}/firethorn.properties" << EOF
   6.152 +
   6.153 +firethorn.meta.type=pgsql
   6.154 +firethorn.meta.driver=org.postgresql.Driver
   6.155 +firethorn.meta.host=bethany
   6.156 +firethorn.meta.url=jdbc:postgresql://bethany/${metadata}
   6.157 +firethorn.meta.data=postgres
   6.158 +firethorn.meta.user=${metauser:?}
   6.159 +firethorn.meta.pass=${metapass:?}
   6.160 +
   6.161 +firethorn.user.type=mssql
   6.162 +firethorn.user.url=jdbc:jtds:sqlserver://${userhost:?}/${userdata:?}
   6.163 +firethorn.user.driver=net.sourceforge.jtds.jdbc.Driver
   6.164 +firethorn.user.host=${userhost:?}
   6.165 +firethorn.user.data=${userdata:?}
   6.166 +firethorn.user.user=${useruser:?}
   6.167 +firethorn.user.pass=${userpass:?}
   6.168 +
   6.169 +firethorn.tapschema.resource.name=${tapschemajdbc}
   6.170 +firethorn.tapschema.database.name=${tapschemadata}
   6.171 +firethorn.tapschema.database.host=${tapschemahost}
   6.172 +firethorn.tapschema.database.port=${tapschemaport}
   6.173 +firethorn.tapschema.database.user=${tapschemauser}
   6.174 +firethorn.tapschema.database.pass=${tapschemapass}
   6.175 +
   6.176 +firethorn.admin.community=${admingroup:?}
   6.177 +firethorn.admin.user.name=${adminuser:?}
   6.178 +firethorn.admin.user.pass=${adminpass:?}
   6.179 +
   6.180 +firethorn.guest.community=${guestgroup:?}
   6.181 +
   6.182 +adql.query.delay.first=${adql_query_delay_first:?}
   6.183 +
   6.184 +firethorn.limits.rows.absolute=${firethorn_limits_rows_absolute:?}
   6.185 +firethorn.limits.rows.default=${firethorn_limits_rows_default:?}
   6.186 +
   6.187 +firethornhost=gillian
   6.188 +
   6.189 +
   6.190 +EOF
   6.191 +
   6.192 +
   6.193 +
   6.194 +## -------------------------------------------------------------------------------------------
   6.195 +## Create our compose env files.
   6.196 +## -------------------------------------------------------------------------------------------
   6.197 +
   6.198 +source "${HOME:?}/chain.properties"
   6.199 +cat > "${HOME:?}/.env" << EOF
   6.200 +
   6.201 +buildtag=${branch:?}
   6.202 +endpoint=${endpoint:?}
   6.203 +
   6.204 +
   6.205 +metadata=postgres
   6.206 +metauser=${metauser:?}
   6.207 +metapass=${metapass:?}
   6.208 +firethorn.meta.type=pgsql
   6.209 +firethorn.meta.driver=org.postgresql.Driver
   6.210 +firethorn.meta.host=bethany
   6.211 +firethorn.meta.url=jdbc:postgresql://bethany/postgres
   6.212 +firethorn.meta.data=postgres
   6.213 +firethorn.meta.user=${metauser:?}
   6.214 +firethorn.meta.pass=${metapass:?}
   6.215 +
   6.216 +
   6.217 +datadata=${datadata:?}
   6.218 +datauser=${datauser:?}
   6.219 +datapass=${datapass:?}
   6.220 +datahost=${datahost:?}
   6.221 +datacatalog=${datacatalog:?}
   6.222 +datatype=mssql
   6.223 +
   6.224 +
   6.225 +tapschemadata=${tapschemadata:?}
   6.226 +tapschemauser=${tapschemauser:?}
   6.227 +tapschemapass=${tapschemapass:?}
   6.228 +tapschemahost=${tapschemahost}
   6.229 +tapschemaport=${tapschemaport:?}
   6.230 +tapschemajdbc=${tapschemajdbc:?}
   6.231 +tapschematype=${tapschematype:?}
   6.232 +firethorn.tapschema.resource.name=${tapschemajdbc:?}
   6.233 +firethorn.tapschema.database.name=${tapschemadata:?}
   6.234 +firethorn.tapschema.database.host=${tapschemahost:?}
   6.235 +firethorn.tapschema.database.port=5432
   6.236 +firethorn.tapschema.database.user=${tapschemauser:?}
   6.237 +firethorn.tapschema.database.pass=${tapschemapass:?}
   6.238 +firethorn.tapschema.database.type=pgsql
   6.239 +
   6.240 +userhost=${userhost:?}
   6.241 +userdata=${userdata:?}
   6.242 +useruser=${useruser:?}
   6.243 +userpass=${userpass:?}
   6.244 +usertype=mssql
   6.245 +firethorn.user.type=mssql
   6.246 +firethorn.user.url=jdbc:jtds:sqlserver://${userhost:?}/${userdata:?}
   6.247 +firethorn.user.driver=net.sourceforge.jtds.jdbc.Driver
   6.248 +firethorn.user.host=${userhost:?}
   6.249 +firethorn.user.data=${userdata:?}
   6.250 +firethorn.user.user=${useruser:?}
   6.251 +firethorn.user.pass=${userpass:?}
   6.252 +
   6.253 +
   6.254 +admingroup=${admingroup:?}
   6.255 +adminuser=${adminuser:?}
   6.256 +adminpass=${adminpass:?}
   6.257 +guestgroup=${guestgroup:?}
   6.258 +firethorn.admin.community=${admingroup:?}
   6.259 +firethorn.admin.user.name=${adminuser:?}
   6.260 +firethorn.admin.user.pass=${adminpass:?}
   6.261 +firethorn.guest.community=${guestgroup:?}
   6.262 +
   6.263 +
   6.264 +adql_query_delay_first=${adql_query_delay_first:?}
   6.265 +adql.query.delay.first=${adql_query_delay_first:?}
   6.266 +firethorn_limits_rows_absolute=${firethorn_limits_rows_absolute:?}
   6.267 +firethorn_limits_rows_default=${firethorn_limits_rows_default:?}
   6.268 +firethorn.limits.rows.absolute=${firethorn_limits_rows_absolute:?}
   6.269 +firethorn.limits.rows.default=${firethorn_limits_rows_default:?}
   6.270 +
   6.271 +firethorn.ogsadai.endpoint=http://jarmila:8080/ogsadai/services
   6.272 +firethornhost=gillian
   6.273 +
   6.274 +
   6.275 +EOF
   6.276 +
   6.277 +
   6.278 +source "${HOME:?}/chain.properties"
   6.279 +cat > "${HOME:?}/.tapschema_env" << EOF
   6.280 +
   6.281 +POSTGRES_DB=${tapschemadata}
   6.282 +POSTGRES_USER=${tapschemauser}
   6.283 +POSTGRES_PASSWORD=${tapschemapass}
   6.284 +
   6.285 +EOF
   6.286 +
   6.287 +
   6.288 +source "${HOME:?}/chain.properties"
   6.289 +cat > "${HOME:?}/.metadata_env" << EOF
   6.290 +
   6.291 +POSTGRES_DB=${metadata}
   6.292 +POSTGRES_USER=${metauser}
   6.293 +POSTGRES_PASSWORD=${metapass}
   6.294 +         
   6.295 +EOF
   6.296 +
   6.297 +
   6.298 +
   6.299 +
   6.300 +## -------------------------------------------------------------------------------------------
   6.301 +## Fetch the TAP Deployer
   6.302 +## -------------------------------------------------------------------------------------------
   6.303 +
   6.304 +wget https://raw.githubusercontent.com/stvoutsin/firethorn.py/master/docker/firethorn-compose-v3.yml -O  docker-compose.yml
   6.305 +
   6.306 +
   6.307 +
   6.308 +
   6.309 +## ------------------------------------------------------------------------
   6.310 +## Deploy Swarm stack
   6.311 +## ------------------------------------------------------------------------
   6.312 +
   6.313 +docker stack deploy -c docker-compose.yml ft
   6.314 +
   6.315 +
   6.316 +
   6.317 +## ------------------------------------------------------------------------
   6.318 +## To remove all docker services 
   6.319 +## ------------------------------------------------------------------------
   6.320 +
   6.321 +## docker service rm $(docker service ls -q)
   6.322 +
   6.323 +
   6.324 +
   6.325 +
   6.326 +## ------------------------------------------------------------------------
   6.327 +## To remove all docker services 
   6.328 +## ------------------------------------------------------------------------
   6.329 +
   6.330 +## docker service rm $(docker service ls -q)
   6.331 +
   6.332 +
   6.333 +
   6.334 +## ------------------------------------------------------------------------
   6.335 +## To remove stack of services
   6.336 +## ------------------------------------------------------------------------
   6.337 +
   6.338 +## docker stack rm ft
   6.339 +
   6.340 +
   6.341 +## ------------------------------------------------------------------------
   6.342 +## Check that the services started
   6.343 +## ------------------------------------------------------------------------
   6.344 +
   6.345 +docker ps
   6.346 +CONTAINER ID        IMAGE                           COMMAND                  CREATED             STATUS                  PORTS               NAMES
   6.347 +b6c43b0fcc39        firethorn/firethorn-py:latest   "python3"                11 hours ago        Up 11 hours                                 ft_firethorn-py.1.ttyojmr0tw108b9kurg5m1l6t
   6.348 +d347cc0e8fcf        firethorn/firethorn:latest      "/bin/sh -c '/var/lo…"   11 hours ago        Up 11 hours (healthy)   8080/tcp            ft_gillian.1.7gjs4uwpxzx8d55agqd91e60v
   6.349 +e81cc914579c        firethorn/ogsadai:latest        "/bin/sh -c '/var/lo…"   11 hours ago        Up 11 hours (healthy)   8080/tcp            ft_jarmila.1.sy5d8zm2f4f6oehp46h0f4lxy
   6.350 +eadf4ace83d4        firethorn/postgres:latest       "docker-entrypoint.s…"   11 hours ago        Up 11 hours             5432/tcp            ft_carolina.1.mbikmqmtgg9r5joehq0ywz0xp
   6.351 +7c4fa13ff87e        firethorn/postgres:latest       "docker-entrypoint.s…"   11 hours ago        Up 11 hours             5432/tcp            ft_bethany.1.sope4plrrq51uctwvdod4w078
   6.352 +
   6.353 +
   6.354 +## ------------------------------------------------------------------------
   6.355 +## Run Docker Compose tap-deployer.yml from firethorn.py
   6.356 +## ------------------------------------------------------------------------
   6.357 +
   6.358 +docker exec -it ft_firethorn-py.1.ttyojmr0tw108b9kurg5m1l6t bash
   6.359 +
   6.360 +
   6.361 +cat > "deployer.py" << EOF
   6.362 +
   6.363 +def main():
   6.364 +    import firethorn
   6.365 +    import firethorn_utils.configurator as configur
   6.366 +    ft = firethorn.Firethorn(endpoint="http://gillian:8080/firethorn")
   6.367 +    ft.login(firethorn.config.adminuser, firethorn.config.adminpass, firethorn.config.admingroup)
   6.368 +    configurator =  configur.Configurator(ft)
   6.369 +    configurator.load_resources("https://raw.githubusercontent.com/stvoutsin/metadata/master/firethorn/config/osa-tap.json")
   6.370 +    configurator.load_resources("https://raw.githubusercontent.com/stvoutsin/metadata/master/firethorn/config/ssa-tap.json")
   6.371 +    configurator.load_resources("https://raw.githubusercontent.com/stvoutsin/metadata/master/firethorn/config/vsa-tap.json")
   6.372 +    configurator.load_resources("https://raw.githubusercontent.com/stvoutsin/metadata/master/firethorn/config/wsa-tap.json")
   6.373 +
   6.374 +if __name__== "__main__":
   6.375 +    main()
   6.376 +
   6.377 +EOF
   6.378 +
   6.379 +
   6.380 +
   6.381 +nohup python3 -u deployer.py &
   6.382 +
   6.383 +## ------------------------------------------------------------------------
   6.384 +## Update Apache Proxy with new TAP services
   6.385 +## ------------------------------------------------------------------------
   6.386 +
   6.387 +
   6.388 +    ProxyPassMatch    ^/osa\/(.*)$  http://araybwyn:8080/firethorn/tap/54/$1
   6.389 +    ProxyPassReverse  ^/osa\/(.*)$  http://araybwyn:8080/firethorn/tap/54/$1
   6.390 +
   6.391 +    ProxyPassMatch    ^/ssa\/(.*)$  http://araybwyn:8080/firethorn/tap/57/$1
   6.392 +    ProxyPassReverse  ^/ssa\/(.*)$  http://araybwyn:8080/firethorn/tap/57/$1
   6.393 +
   6.394 +    ProxyPassMatch    ^/vsa\/(.*)$  http://araybwyn:8080/firethorn/tap/60/$1
   6.395 +    ProxyPassReverse  ^/vsa\/(.*)$  http://araybwyn:8080/firethorn/tap/60/$1
   6.396 +
   6.397 +    ProxyPassMatch    ^/wsa\/(.*)$  http://araybwyn:8080/firethorn/tap/63/$1
   6.398 +    ProxyPassReverse  ^/wsa\/(.*)$  http://araybwyn:8080/firethorn/tap/63/$1
   6.399 +
   6.400 +    ProxyPassMatch    ^/firethorn\/(.*)$  http://araybwyn:8080/firethorn/$1
   6.401 +    ProxyPassReverse  ^/firethorn\/(.*)$  http://araybwyn:8080/firethorn/$1
   6.402 +
   6.403 +
   6.404 +
   6.405 +
   6.406 +
     7.1 Binary file doc/presentations/stelios/20180415-Asterics-Edinburgh/firethorn-py.odg has changed
     8.1 --- a/docker/apache/Dockerfile	Wed May 06 02:17:20 2020 +0100
     8.2 +++ b/docker/apache/Dockerfile	Wed Jul 29 12:16:11 2020 +0100
     8.3 @@ -17,7 +17,7 @@
     8.4  #
     8.5  # Based on example from the official httpd Docker container.
     8.6  # https://github.com/docker-library/httpd/blob/master/2.4/Dockerfile
     8.7 -FROM firethorn/fedora:2.1.35
     8.8 +FROM firethorn/fedora:2.1.36
     8.9  MAINTAINER Dave Morris <docker-admin@metagrid.co.uk>
    8.10  
    8.11  #
     9.1 --- a/docker/builder/Dockerfile	Wed May 06 02:17:20 2020 +0100
     9.2 +++ b/docker/builder/Dockerfile	Wed Jul 29 12:16:11 2020 +0100
     9.3 @@ -15,7 +15,7 @@
     9.4  # You should have received a copy of the GNU General Public License
     9.5  # along with this program.  If not, see <http://www.gnu.org/licenses/>.
     9.6  
     9.7 -FROM firethorn/java:2.1.35
     9.8 +FROM firethorn/java:2.1.36
     9.9  MAINTAINER Dave Morris <docker-admin@metagrid.co.uk>
    9.10  
    9.11  #
    10.1 --- a/docker/compose/client/Dockerfile	Wed May 06 02:17:20 2020 +0100
    10.2 +++ b/docker/compose/client/Dockerfile	Wed Jul 29 12:16:11 2020 +0100
    10.3 @@ -15,7 +15,7 @@
    10.4  # You should have received a copy of the GNU General Public License
    10.5  # along with this program.  If not, see <http://www.gnu.org/licenses/>.
    10.6  
    10.7 -FROM firethorn/tester:2.1.35
    10.8 +FROM firethorn/tester:2.1.36
    10.9  LABEL MAINTAINER Dave Morris <docker-admin@metagrid.co.uk>
   10.10  
   10.11  ENV pysrc=/home/firethorn-py
    11.1 --- a/docker/compose/tests/distictella/Dockerfile	Wed May 06 02:17:20 2020 +0100
    11.2 +++ b/docker/compose/tests/distictella/Dockerfile	Wed Jul 29 12:16:11 2020 +0100
    11.3 @@ -15,7 +15,7 @@
    11.4  # You should have received a copy of the GNU General Public License
    11.5  # along with this program.  If not, see <http://www.gnu.org/licenses/>.
    11.6  
    11.7 -FROM firethorn/fedora:2.1.35
    11.8 +FROM firethorn/fedora:2.1.36
    11.9  MAINTAINER Dave Morris <docker-admin@metagrid.co.uk>
   11.10  
   11.11  RUN dnf -y install \
    12.1 --- a/docker/compose/tests/distictella/firethorn-py/Dockerfile	Wed May 06 02:17:20 2020 +0100
    12.2 +++ b/docker/compose/tests/distictella/firethorn-py/Dockerfile	Wed Jul 29 12:16:11 2020 +0100
    12.3 @@ -15,7 +15,7 @@
    12.4  # You should have received a copy of the GNU General Public License
    12.5  # along with this program.  If not, see <http://www.gnu.org/licenses/>.
    12.6  
    12.7 -FROM firethorn/fedora:2.1.35
    12.8 +FROM firethorn/fedora:2.1.36
    12.9  MAINTAINER Dave Morris <docker-admin@metagrid.co.uk>
   12.10  
   12.11  RUN dnf -y install \
    13.1 --- a/docker/java/Dockerfile	Wed May 06 02:17:20 2020 +0100
    13.2 +++ b/docker/java/Dockerfile	Wed Jul 29 12:16:11 2020 +0100
    13.3 @@ -15,7 +15,7 @@
    13.4  # You should have received a copy of the GNU General Public License
    13.5  # along with this program.  If not, see <http://www.gnu.org/licenses/>.
    13.6  
    13.7 -FROM firethorn/fedora:2.1.35
    13.8 +FROM firethorn/fedora:2.1.36
    13.9  MAINTAINER Dave Morris <docker-admin@metagrid.co.uk>
   13.10  
   13.11  ENV JAVA_VERSION=12.0.0.33
    14.1 --- a/docker/python/3.4.2/Dockerfile	Wed May 06 02:17:20 2020 +0100
    14.2 +++ b/docker/python/3.4.2/Dockerfile	Wed Jul 29 12:16:11 2020 +0100
    14.3 @@ -1,4 +1,4 @@
    14.4 -FROM firethorn/ubuntu:2.1.35
    14.5 +FROM firethorn/ubuntu:2.1.36
    14.6  MAINTAINER Stelios Voutsinas <stv@roe.ac.uk>
    14.7  
    14.8  #
    15.1 --- a/docker/pythonlibs/Dockerfile	Wed May 06 02:17:20 2020 +0100
    15.2 +++ b/docker/pythonlibs/Dockerfile	Wed Jul 29 12:16:11 2020 +0100
    15.3 @@ -1,4 +1,4 @@
    15.4 -FROM firethorn/python:2.1.35
    15.5 +FROM firethorn/python:2.1.36
    15.6  MAINTAINER Stelios Voutsinas <stv@roe.ac.uk>
    15.7  
    15.8  # Install Python Libs
    16.1 --- a/docker/sql-proxy/Dockerfile	Wed May 06 02:17:20 2020 +0100
    16.2 +++ b/docker/sql-proxy/Dockerfile	Wed Jul 29 12:16:11 2020 +0100
    16.3 @@ -15,7 +15,7 @@
    16.4  # You should have received a copy of the GNU General Public License
    16.5  # along with this program.  If not, see <http://www.gnu.org/licenses/>.
    16.6  
    16.7 -FROM firethorn/fedora:2.1.35
    16.8 +FROM firethorn/fedora:2.1.36
    16.9  MAINTAINER Dave Morris <docker-admin@metagrid.co.uk>
   16.10  
   16.11  EXPOSE 1433
    17.1 --- a/docker/sql-tunnel/Dockerfile	Wed May 06 02:17:20 2020 +0100
    17.2 +++ b/docker/sql-tunnel/Dockerfile	Wed Jul 29 12:16:11 2020 +0100
    17.3 @@ -15,7 +15,7 @@
    17.4  # You should have received a copy of the GNU General Public License
    17.5  # along with this program.  If not, see <http://www.gnu.org/licenses/>.
    17.6  
    17.7 -FROM firethorn/fedora:2.1.35
    17.8 +FROM firethorn/fedora:2.1.36
    17.9  MAINTAINER Dave Morris <docker-admin@metagrid.co.uk>
   17.10  
   17.11  EXPOSE 1433
    18.1 --- a/docker/ssh-client/Dockerfile	Wed May 06 02:17:20 2020 +0100
    18.2 +++ b/docker/ssh-client/Dockerfile	Wed Jul 29 12:16:11 2020 +0100
    18.3 @@ -15,7 +15,7 @@
    18.4  # You should have received a copy of the GNU General Public License
    18.5  # along with this program.  If not, see <http://www.gnu.org/licenses/>.
    18.6  
    18.7 -FROM firethorn/fedora:2.1.35
    18.8 +FROM firethorn/fedora:2.1.36
    18.9  MAINTAINER Dave Morris <docker-admin@metagrid.co.uk>
   18.10  
   18.11  RUN dnf -y install openssh-clients
    19.1 --- a/docker/tester/Dockerfile	Wed May 06 02:17:20 2020 +0100
    19.2 +++ b/docker/tester/Dockerfile	Wed Jul 29 12:16:11 2020 +0100
    19.3 @@ -15,7 +15,7 @@
    19.4  # You should have received a copy of the GNU General Public License
    19.5  # along with this program.  If not, see <http://www.gnu.org/licenses/>.
    19.6  
    19.7 -FROM firethorn/fedora:2.1.35
    19.8 +FROM firethorn/fedora:2.1.36
    19.9  MAINTAINER Dave Morris <docker-admin@metagrid.co.uk>
   19.10  
   19.11  RUN dnf install -y jq
    20.1 --- a/docker/tomcat/Dockerfile	Wed May 06 02:17:20 2020 +0100
    20.2 +++ b/docker/tomcat/Dockerfile	Wed Jul 29 12:16:11 2020 +0100
    20.3 @@ -15,7 +15,7 @@
    20.4  # You should have received a copy of the GNU General Public License
    20.5  # along with this program.  If not, see <http://www.gnu.org/licenses/>.
    20.6  
    20.7 -FROM firethorn/java:2.1.35
    20.8 +FROM firethorn/java:2.1.36
    20.9  MAINTAINER [Dave Morris <docker-admin@metagrid.co.uk>]
   20.10  
   20.11  # https://tomcat.apache.org/whichversion.html
    21.1 --- a/firethorn-admin/pom.xml	Wed May 06 02:17:20 2020 +0100
    21.2 +++ b/firethorn-admin/pom.xml	Wed Jul 29 12:16:11 2020 +0100
    21.3 @@ -32,7 +32,7 @@
    21.4      <parent>
    21.5          <groupId>uk.ac.roe.wfau</groupId>
    21.6          <artifactId>firethorn</artifactId>
    21.7 -        <version project='firethorn'>2.1.35</version>
    21.8 +        <version project='firethorn'>2.1.36</version>
    21.9      </parent>
   21.10  
   21.11      <artifactId>firethorn-admin-webapp</artifactId>
    22.1 --- a/firethorn-admin/src/main/docker/firethorn/Dockerfile	Wed May 06 02:17:20 2020 +0100
    22.2 +++ b/firethorn-admin/src/main/docker/firethorn/Dockerfile	Wed Jul 29 12:16:11 2020 +0100
    22.3 @@ -15,7 +15,7 @@
    22.4  # You should have received a copy of the GNU General Public License
    22.5  # along with this program.  If not, see <http://www.gnu.org/licenses/>.
    22.6  
    22.7 -FROM firethorn/tomcat:2.1.35
    22.8 +FROM firethorn/tomcat:2.1.36
    22.9  MAINTAINER Dave Morris <docker-admin@metagrid.co.uk>
   22.10  
   22.11  #
    23.1 --- a/firethorn-annotations/pom.xml	Wed May 06 02:17:20 2020 +0100
    23.2 +++ b/firethorn-annotations/pom.xml	Wed Jul 29 12:16:11 2020 +0100
    23.3 @@ -32,7 +32,7 @@
    23.4      <parent>
    23.5          <groupId>uk.ac.roe.wfau</groupId>
    23.6          <artifactId>firethorn</artifactId>
    23.7 -        <version project='firethorn'>2.1.35</version>
    23.8 +        <version project='firethorn'>2.1.36</version>
    23.9      </parent>
   23.10  
   23.11      <artifactId>firethorn-annotations</artifactId>
    24.1 --- a/firethorn-cds/adql/pom.xml	Wed May 06 02:17:20 2020 +0100
    24.2 +++ b/firethorn-cds/adql/pom.xml	Wed Jul 29 12:16:11 2020 +0100
    24.3 @@ -32,7 +32,7 @@
    24.4      <parent>
    24.5          <groupId>uk.ac.roe.wfau</groupId>
    24.6          <artifactId>firethorn-cds</artifactId>
    24.7 -		<version project='firethorn'>2.1.35</version>
    24.8 +		<version project='firethorn'>2.1.36</version>
    24.9  	</parent>
   24.10  
   24.11      <artifactId>firethorn-cds-adql</artifactId>
    25.1 --- a/firethorn-cds/pom.xml	Wed May 06 02:17:20 2020 +0100
    25.2 +++ b/firethorn-cds/pom.xml	Wed Jul 29 12:16:11 2020 +0100
    25.3 @@ -32,7 +32,7 @@
    25.4      <parent>
    25.5          <groupId>uk.ac.roe.wfau</groupId>
    25.6          <artifactId>firethorn</artifactId>
    25.7 -        <version project='firethorn'>2.1.35</version>
    25.8 +        <version project='firethorn'>2.1.36</version>
    25.9      </parent>
   25.10  
   25.11      <artifactId>firethorn-cds</artifactId>
    26.1 --- a/firethorn-core/pom.xml	Wed May 06 02:17:20 2020 +0100
    26.2 +++ b/firethorn-core/pom.xml	Wed Jul 29 12:16:11 2020 +0100
    26.3 @@ -32,7 +32,7 @@
    26.4      <parent>
    26.5          <groupId>uk.ac.roe.wfau</groupId>
    26.6          <artifactId>firethorn</artifactId>
    26.7 -        <version project='firethorn'>2.1.35</version>
    26.8 +        <version project='firethorn'>2.1.36</version>
    26.9  	</parent>
   26.10  
   26.11      <artifactId>firethorn-core</artifactId>
    27.1 --- a/firethorn-core/src/main/java/uk/ac/roe/wfau/firethorn/meta/base/BaseColumn.java	Wed May 06 02:17:20 2020 +0100
    27.2 +++ b/firethorn-core/src/main/java/uk/ac/roe/wfau/firethorn/meta/base/BaseColumn.java	Wed Jul 29 12:16:11 2020 +0100
    27.3 @@ -38,13 +38,13 @@
    27.4       * The special value for size to indicate a non-array field, {@value}.
    27.5       *
    27.6       */
    27.7 -    public static final Integer NON_ARRAY_SIZE = new Integer(0);
    27.8 +    public static final int NON_ARRAY_SIZE = 0;
    27.9  
   27.10      /**
   27.11       * The special value for size to indicate a variable size array, {@value}.
   27.12       *
   27.13       */
   27.14 -    public static final Integer VAR_ARRAY_SIZE = new Integer(-1);
   27.15 +    public static final int VAR_ARRAY_SIZE = -1;
   27.16  
   27.17      /**
   27.18       * {@link Entity.AliasFactory} interface.
    28.1 --- a/firethorn-jdbc/pom.xml	Wed May 06 02:17:20 2020 +0100
    28.2 +++ b/firethorn-jdbc/pom.xml	Wed Jul 29 12:16:11 2020 +0100
    28.3 @@ -32,7 +32,7 @@
    28.4      <parent>
    28.5          <groupId>uk.ac.roe.wfau</groupId>
    28.6          <artifactId>firethorn</artifactId>
    28.7 -        <version project='firethorn'>2.1.35</version>
    28.8 +        <version project='firethorn'>2.1.36</version>
    28.9      </parent>
   28.10  
   28.11      <artifactId>firethorn-jdbc</artifactId>
    29.1 --- a/firethorn-logging/pom.xml	Wed May 06 02:17:20 2020 +0100
    29.2 +++ b/firethorn-logging/pom.xml	Wed Jul 29 12:16:11 2020 +0100
    29.3 @@ -32,7 +32,7 @@
    29.4      <parent>
    29.5          <groupId>uk.ac.roe.wfau</groupId>
    29.6          <artifactId>firethorn</artifactId>
    29.7 -        <version project='firethorn'>2.1.35</version>
    29.8 +        <version project='firethorn'>2.1.36</version>
    29.9      </parent>
   29.10  
   29.11      <artifactId>firethorn-logging</artifactId>
    30.1 --- a/firethorn-ogsadai/activity/client/pom.xml	Wed May 06 02:17:20 2020 +0100
    30.2 +++ b/firethorn-ogsadai/activity/client/pom.xml	Wed Jul 29 12:16:11 2020 +0100
    30.3 @@ -32,7 +32,7 @@
    30.4      <parent>
    30.5          <groupId>uk.ac.roe.wfau</groupId>
    30.6          <artifactId>firethorn-ogsadai-activity</artifactId>
    30.7 -        <version project='firethorn'>2.1.35</version>
    30.8 +        <version project='firethorn'>2.1.36</version>
    30.9  	</parent>
   30.10  
   30.11      <artifactId>firethorn-ogsadai-activity-client</artifactId>
    31.1 --- a/firethorn-ogsadai/activity/common/pom.xml	Wed May 06 02:17:20 2020 +0100
    31.2 +++ b/firethorn-ogsadai/activity/common/pom.xml	Wed Jul 29 12:16:11 2020 +0100
    31.3 @@ -32,7 +32,7 @@
    31.4      <parent>
    31.5          <groupId>uk.ac.roe.wfau</groupId>
    31.6          <artifactId>firethorn-ogsadai-activity</artifactId>
    31.7 -        <version project='firethorn'>2.1.35</version>
    31.8 +        <version project='firethorn'>2.1.36</version>
    31.9      </parent>
   31.10  
   31.11      <artifactId>firethorn-ogsadai-activity-common</artifactId>
    32.1 --- a/firethorn-ogsadai/activity/context/pom.xml	Wed May 06 02:17:20 2020 +0100
    32.2 +++ b/firethorn-ogsadai/activity/context/pom.xml	Wed Jul 29 12:16:11 2020 +0100
    32.3 @@ -32,7 +32,7 @@
    32.4      <parent>
    32.5          <groupId>uk.ac.roe.wfau</groupId>
    32.6          <artifactId>firethorn-ogsadai-activity</artifactId>
    32.7 -        <version project='firethorn'>2.1.35</version>
    32.8 +        <version project='firethorn'>2.1.36</version>
    32.9  	</parent>
   32.10  
   32.11      <artifactId>firethorn-ogsadai-activity-context</artifactId>
    33.1 --- a/firethorn-ogsadai/activity/pom.xml	Wed May 06 02:17:20 2020 +0100
    33.2 +++ b/firethorn-ogsadai/activity/pom.xml	Wed Jul 29 12:16:11 2020 +0100
    33.3 @@ -37,7 +37,7 @@
    33.4      <parent>
    33.5          <groupId>uk.ac.roe.wfau</groupId>
    33.6          <artifactId>firethorn-ogsadai</artifactId>
    33.7 -        <version project='firethorn'>2.1.35</version>
    33.8 +        <version project='firethorn'>2.1.36</version>
    33.9      </parent>
   33.10  
   33.11      <artifactId>firethorn-ogsadai-activity</artifactId>
    34.1 --- a/firethorn-ogsadai/activity/server/pom.xml	Wed May 06 02:17:20 2020 +0100
    34.2 +++ b/firethorn-ogsadai/activity/server/pom.xml	Wed Jul 29 12:16:11 2020 +0100
    34.3 @@ -32,7 +32,7 @@
    34.4      <parent>
    34.5          <groupId>uk.ac.roe.wfau</groupId>
    34.6          <artifactId>firethorn-ogsadai-activity</artifactId>
    34.7 -        <version project='firethorn'>2.1.35</version>
    34.8 +        <version project='firethorn'>2.1.36</version>
    34.9      </parent>
   34.10  
   34.11      <artifactId>firethorn-ogsadai-activity-server</artifactId>
    35.1 --- a/firethorn-ogsadai/astro/client/pom.xml	Wed May 06 02:17:20 2020 +0100
    35.2 +++ b/firethorn-ogsadai/astro/client/pom.xml	Wed Jul 29 12:16:11 2020 +0100
    35.3 @@ -32,7 +32,7 @@
    35.4      <parent>
    35.5          <groupId>uk.ac.roe.wfau</groupId>
    35.6          <artifactId>firethorn-ogsadai-astro</artifactId>
    35.7 -        <version project='firethorn'>2.1.35</version>
    35.8 +        <version project='firethorn'>2.1.36</version>
    35.9      </parent>
   35.10  
   35.11      <artifactId>firethorn-ogsadai-astro-client</artifactId>
    36.1 --- a/firethorn-ogsadai/astro/pom.xml	Wed May 06 02:17:20 2020 +0100
    36.2 +++ b/firethorn-ogsadai/astro/pom.xml	Wed Jul 29 12:16:11 2020 +0100
    36.3 @@ -32,7 +32,7 @@
    36.4      <parent>
    36.5          <groupId>uk.ac.roe.wfau</groupId>
    36.6          <artifactId>firethorn-ogsadai</artifactId>
    36.7 -        <version project='firethorn'>2.1.35</version>
    36.8 +        <version project='firethorn'>2.1.36</version>
    36.9      </parent>
   36.10  
   36.11      <artifactId>firethorn-ogsadai-astro</artifactId>
    37.1 --- a/firethorn-ogsadai/astro/server/pom.xml	Wed May 06 02:17:20 2020 +0100
    37.2 +++ b/firethorn-ogsadai/astro/server/pom.xml	Wed Jul 29 12:16:11 2020 +0100
    37.3 @@ -32,7 +32,7 @@
    37.4      <parent>
    37.5          <groupId>uk.ac.roe.wfau</groupId>
    37.6          <artifactId>firethorn-ogsadai-astro</artifactId>
    37.7 -        <version project='firethorn'>2.1.35</version>
    37.8 +        <version project='firethorn'>2.1.36</version>
    37.9      </parent>
   37.10  
   37.11      <artifactId>firethorn-ogsadai-astro-server</artifactId>
    38.1 --- a/firethorn-ogsadai/depends/pom.xml	Wed May 06 02:17:20 2020 +0100
    38.2 +++ b/firethorn-ogsadai/depends/pom.xml	Wed Jul 29 12:16:11 2020 +0100
    38.3 @@ -32,7 +32,7 @@
    38.4      <parent>
    38.5          <groupId>uk.ac.roe.wfau</groupId>
    38.6          <artifactId>firethorn-ogsadai</artifactId>
    38.7 -        <version project='firethorn'>2.1.35</version>
    38.8 +        <version project='firethorn'>2.1.36</version>
    38.9      </parent>
   38.10  
   38.11      <artifactId>firethorn-ogsadai-depends</artifactId>
    39.1 --- a/firethorn-ogsadai/distributed/client/pom.xml	Wed May 06 02:17:20 2020 +0100
    39.2 +++ b/firethorn-ogsadai/distributed/client/pom.xml	Wed Jul 29 12:16:11 2020 +0100
    39.3 @@ -32,7 +32,7 @@
    39.4      <parent>
    39.5          <groupId>uk.ac.roe.wfau</groupId>
    39.6          <artifactId>firethorn-ogsadai-dqp</artifactId>
    39.7 -        <version project='firethorn'>2.1.35</version>
    39.8 +        <version project='firethorn'>2.1.36</version>
    39.9      </parent>
   39.10  
   39.11      <artifactId>firethorn-ogsadai-dqp-client</artifactId>
    40.1 --- a/firethorn-ogsadai/distributed/common/pom.xml	Wed May 06 02:17:20 2020 +0100
    40.2 +++ b/firethorn-ogsadai/distributed/common/pom.xml	Wed Jul 29 12:16:11 2020 +0100
    40.3 @@ -32,7 +32,7 @@
    40.4      <parent>
    40.5          <groupId>uk.ac.roe.wfau</groupId>
    40.6          <artifactId>firethorn-ogsadai-dqp</artifactId>
    40.7 -        <version project='firethorn'>2.1.35</version>
    40.8 +        <version project='firethorn'>2.1.36</version>
    40.9      </parent>
   40.10  
   40.11      <artifactId>firethorn-ogsadai-dqp-common</artifactId>
    41.1 --- a/firethorn-ogsadai/distributed/pom.xml	Wed May 06 02:17:20 2020 +0100
    41.2 +++ b/firethorn-ogsadai/distributed/pom.xml	Wed Jul 29 12:16:11 2020 +0100
    41.3 @@ -32,7 +32,7 @@
    41.4      <parent>
    41.5          <groupId>uk.ac.roe.wfau</groupId>
    41.6          <artifactId>firethorn-ogsadai</artifactId>
    41.7 -        <version project='firethorn'>2.1.35</version>
    41.8 +        <version project='firethorn'>2.1.36</version>
    41.9      </parent>
   41.10  
   41.11      <artifactId>firethorn-ogsadai-dqp</artifactId>
    42.1 --- a/firethorn-ogsadai/distributed/server/pom.xml	Wed May 06 02:17:20 2020 +0100
    42.2 +++ b/firethorn-ogsadai/distributed/server/pom.xml	Wed Jul 29 12:16:11 2020 +0100
    42.3 @@ -32,7 +32,7 @@
    42.4      <parent>
    42.5          <groupId>uk.ac.roe.wfau</groupId>
    42.6          <artifactId>firethorn-ogsadai-dqp</artifactId>
    42.7 -        <version project='firethorn'>2.1.35</version>
    42.8 +        <version project='firethorn'>2.1.36</version>
    42.9      </parent>
   42.10  
   42.11      <artifactId>firethorn-ogsadai-dqp-server</artifactId>
    43.1 --- a/firethorn-ogsadai/firethorn/client/pom.xml	Wed May 06 02:17:20 2020 +0100
    43.2 +++ b/firethorn-ogsadai/firethorn/client/pom.xml	Wed Jul 29 12:16:11 2020 +0100
    43.3 @@ -32,7 +32,7 @@
    43.4      <parent>
    43.5          <groupId>uk.ac.roe.wfau</groupId>
    43.6          <artifactId>firethorn-ogsadai-firethorn</artifactId>
    43.7 -        <version project='firethorn'>2.1.35</version>
    43.8 +        <version project='firethorn'>2.1.36</version>
    43.9      </parent>
   43.10  
   43.11      <artifactId>firethorn-ogsadai-firethorn-client</artifactId>
    44.1 --- a/firethorn-ogsadai/firethorn/common/pom.xml	Wed May 06 02:17:20 2020 +0100
    44.2 +++ b/firethorn-ogsadai/firethorn/common/pom.xml	Wed Jul 29 12:16:11 2020 +0100
    44.3 @@ -32,7 +32,7 @@
    44.4      <parent>
    44.5          <groupId>uk.ac.roe.wfau</groupId>
    44.6          <artifactId>firethorn-ogsadai-firethorn</artifactId>
    44.7 -        <version project='firethorn'>2.1.35</version>
    44.8 +        <version project='firethorn'>2.1.36</version>
    44.9      </parent>
   44.10  
   44.11      <artifactId>firethorn-ogsadai-firethorn-common</artifactId>
    45.1 --- a/firethorn-ogsadai/firethorn/pom.xml	Wed May 06 02:17:20 2020 +0100
    45.2 +++ b/firethorn-ogsadai/firethorn/pom.xml	Wed Jul 29 12:16:11 2020 +0100
    45.3 @@ -32,7 +32,7 @@
    45.4      <parent>
    45.5          <groupId>uk.ac.roe.wfau</groupId>
    45.6          <artifactId>firethorn-ogsadai</artifactId>
    45.7 -        <version project='firethorn'>2.1.35</version>
    45.8 +        <version project='firethorn'>2.1.36</version>
    45.9      </parent>
   45.10  
   45.11      <artifactId>firethorn-ogsadai-firethorn</artifactId>
    46.1 --- a/firethorn-ogsadai/firethorn/server/pom.xml	Wed May 06 02:17:20 2020 +0100
    46.2 +++ b/firethorn-ogsadai/firethorn/server/pom.xml	Wed Jul 29 12:16:11 2020 +0100
    46.3 @@ -32,7 +32,7 @@
    46.4      <parent>
    46.5          <groupId>uk.ac.roe.wfau</groupId>
    46.6          <artifactId>firethorn-ogsadai-firethorn</artifactId>
    46.7 -        <version project='firethorn'>2.1.35</version>
    46.8 +        <version project='firethorn'>2.1.36</version>
    46.9      </parent>
   46.10  
   46.11      <artifactId>firethorn-ogsadai-firethorn-server</artifactId>
    47.1 --- a/firethorn-ogsadai/metadata/client/pom.xml	Wed May 06 02:17:20 2020 +0100
    47.2 +++ b/firethorn-ogsadai/metadata/client/pom.xml	Wed Jul 29 12:16:11 2020 +0100
    47.3 @@ -32,7 +32,7 @@
    47.4      <parent>
    47.5          <groupId>uk.ac.roe.wfau</groupId>
    47.6          <artifactId>firethorn-ogsadai-metadata</artifactId>
    47.7 -        <version project='firethorn'>2.1.35</version>
    47.8 +        <version project='firethorn'>2.1.36</version>
    47.9      </parent>
   47.10  
   47.11      <artifactId>firethorn-ogsadai-metadata-client</artifactId>
    48.1 --- a/firethorn-ogsadai/metadata/pom.xml	Wed May 06 02:17:20 2020 +0100
    48.2 +++ b/firethorn-ogsadai/metadata/pom.xml	Wed Jul 29 12:16:11 2020 +0100
    48.3 @@ -32,7 +32,7 @@
    48.4      <parent>
    48.5          <groupId>uk.ac.roe.wfau</groupId>
    48.6          <artifactId>firethorn-ogsadai</artifactId>
    48.7 -        <version project='firethorn'>2.1.35</version>
    48.8 +        <version project='firethorn'>2.1.36</version>
    48.9      </parent>
   48.10  
   48.11      <artifactId>firethorn-ogsadai-metadata</artifactId>
    49.1 --- a/firethorn-ogsadai/pom.xml	Wed May 06 02:17:20 2020 +0100
    49.2 +++ b/firethorn-ogsadai/pom.xml	Wed Jul 29 12:16:11 2020 +0100
    49.3 @@ -37,7 +37,7 @@
    49.4      <parent>
    49.5          <groupId>uk.ac.roe.wfau</groupId>
    49.6          <artifactId>firethorn</artifactId>
    49.7 -        <version project='firethorn'>2.1.35</version>
    49.8 +        <version project='firethorn'>2.1.36</version>
    49.9      </parent>
   49.10  
   49.11      <artifactId>firethorn-ogsadai</artifactId>
    50.1 --- a/firethorn-ogsadai/webapp/pom.xml	Wed May 06 02:17:20 2020 +0100
    50.2 +++ b/firethorn-ogsadai/webapp/pom.xml	Wed Jul 29 12:16:11 2020 +0100
    50.3 @@ -32,7 +32,7 @@
    50.4      <parent>
    50.5          <groupId>uk.ac.roe.wfau</groupId>
    50.6          <artifactId>firethorn-ogsadai</artifactId>
    50.7 -        <version project='firethorn'>2.1.35</version>
    50.8 +        <version project='firethorn'>2.1.36</version>
    50.9      </parent>
   50.10  
   50.11      <artifactId>firethorn-ogsadai-webapp</artifactId>
    51.1 --- a/firethorn-ogsadai/webapp/src/main/docker/ogsadai/Dockerfile	Wed May 06 02:17:20 2020 +0100
    51.2 +++ b/firethorn-ogsadai/webapp/src/main/docker/ogsadai/Dockerfile	Wed Jul 29 12:16:11 2020 +0100
    51.3 @@ -15,7 +15,7 @@
    51.4  # You should have received a copy of the GNU General Public License
    51.5  # along with this program.  If not, see <http://www.gnu.org/licenses/>.
    51.6  
    51.7 -FROM firethorn/tomcat:2.1.35
    51.8 +FROM firethorn/tomcat:2.1.36
    51.9  MAINTAINER Dave Morris <docker-admin@metagrid.co.uk>
   51.10  
   51.11  #
    52.1 --- a/firethorn-spring/pom.xml	Wed May 06 02:17:20 2020 +0100
    52.2 +++ b/firethorn-spring/pom.xml	Wed Jul 29 12:16:11 2020 +0100
    52.3 @@ -32,7 +32,7 @@
    52.4      <parent>
    52.5          <groupId>uk.ac.roe.wfau</groupId>
    52.6          <artifactId>firethorn</artifactId>
    52.7 -        <version project='firethorn'>2.1.35</version>
    52.8 +        <version project='firethorn'>2.1.36</version>
    52.9      </parent>
   52.10  
   52.11      <artifactId>firethorn-spring</artifactId>
    53.1 --- a/firethorn-stil/pom.xml	Wed May 06 02:17:20 2020 +0100
    53.2 +++ b/firethorn-stil/pom.xml	Wed Jul 29 12:16:11 2020 +0100
    53.3 @@ -32,7 +32,7 @@
    53.4      <parent>
    53.5          <groupId>uk.ac.roe.wfau</groupId>
    53.6          <artifactId>firethorn</artifactId>
    53.7 -        <version project='firethorn'>2.1.35</version>
    53.8 +        <version project='firethorn'>2.1.36</version>
    53.9      </parent>
   53.10  
   53.11      <artifactId>firethorn-stil</artifactId>
    54.1 --- a/firethorn-testing/pom.xml	Wed May 06 02:17:20 2020 +0100
    54.2 +++ b/firethorn-testing/pom.xml	Wed Jul 29 12:16:11 2020 +0100
    54.3 @@ -32,7 +32,7 @@
    54.4      <parent>
    54.5          <groupId>uk.ac.roe.wfau</groupId>
    54.6          <artifactId>firethorn</artifactId>
    54.7 -        <version project='firethorn'>2.1.35</version>
    54.8 +        <version project='firethorn'>2.1.36</version>
    54.9      </parent>
   54.10  
   54.11      <artifactId>firethorn-testing</artifactId>
    55.1 --- a/firethorn-webapp/pom.xml	Wed May 06 02:17:20 2020 +0100
    55.2 +++ b/firethorn-webapp/pom.xml	Wed Jul 29 12:16:11 2020 +0100
    55.3 @@ -32,7 +32,7 @@
    55.4      <parent>
    55.5          <groupId>uk.ac.roe.wfau</groupId>
    55.6          <artifactId>firethorn</artifactId>
    55.7 -        <version project='firethorn'>2.1.35</version>
    55.8 +        <version project='firethorn'>2.1.36</version>
    55.9      </parent>
   55.10  
   55.11      <artifactId>firethorn-webapp</artifactId>
    56.1 --- a/firethorn-webapp/src/main/docker/firethorn/Dockerfile	Wed May 06 02:17:20 2020 +0100
    56.2 +++ b/firethorn-webapp/src/main/docker/firethorn/Dockerfile	Wed Jul 29 12:16:11 2020 +0100
    56.3 @@ -15,7 +15,7 @@
    56.4  # You should have received a copy of the GNU General Public License
    56.5  # along with this program.  If not, see <http://www.gnu.org/licenses/>.
    56.6  
    56.7 -FROM firethorn/tomcat:2.1.35
    56.8 +FROM firethorn/tomcat:2.1.36
    56.9  MAINTAINER Dave Morris <docker-admin@metagrid.co.uk>
   56.10  
   56.11  #
    57.1 --- a/firethorn-webapp/src/main/java/uk/ac/roe/wfau/firethorn/webapp/tap/UWSJob.java	Wed May 06 02:17:20 2020 +0100
    57.2 +++ b/firethorn-webapp/src/main/java/uk/ac/roe/wfau/firethorn/webapp/tap/UWSJob.java	Wed Jul 29 12:16:11 2020 +0100
    57.3 @@ -554,7 +554,7 @@
    57.4  		            	writer.append("<uws:parameter id='lang'>None</uws:parameter>");
    57.5  			        }
    57.6  			        if (this.getQuery()!=null){
    57.7 -		            	writer.append("<uws:parameter id='query'>" + this.getQuery().input() + "</uws:parameter>");
    57.8 +		            	writer.append("<uws:parameter id='query'><![CDATA[ " + this.getQuery().input() + " ]]></uws:parameter>");
    57.9  			        }
   57.10  			        if (this.getFormat()!=null){
   57.11  		            	writer.append("<uws:parameter id='format'>" + this.getFormat() + "</uws:parameter>");
    58.1 --- a/firethorn-webapp/src/main/java/uk/ac/roe/wfau/firethorn/webapp/votable/AbstractTableController.java	Wed May 06 02:17:20 2020 +0100
    58.2 +++ b/firethorn-webapp/src/main/java/uk/ac/roe/wfau/firethorn/webapp/votable/AbstractTableController.java	Wed Jul 29 12:16:11 2020 +0100
    58.3 @@ -64,7 +64,7 @@
    58.4           *
    58.5           */
    58.6          public String format(final ResultSet results)
    58.7 -        throws SQLException;
    58.8 +        throws SQLException, ProtectionException;
    58.9  
   58.10          /**
   58.11           * The field index in a JDBC ResultSet.
   58.12 @@ -252,7 +252,7 @@
   58.13       *
   58.14       */
   58.15      public void rows(final List<FieldFormatter> formatters, final PrintWriter writer, final ResultSet results)
   58.16 -    throws SQLException
   58.17 +    throws SQLException, ProtectionException
   58.18          {
   58.19          while (results.next())
   58.20              {
   58.21 @@ -269,10 +269,11 @@
   58.22       * @param formatters The {@link List} of {@link FieldFormatter}s to use.
   58.23       * @param writer     The {@link PrintWriter} to write the field to.
   58.24       * @param results    The {@link ResultSet} to get the row from.
   58.25 +     * @throws ProtectionException 
   58.26       *
   58.27       */
   58.28      public abstract void row(final List<FieldFormatter> formatters, final PrintWriter writer, final ResultSet results)
   58.29 -    throws SQLException;
   58.30 +    throws SQLException, ProtectionException;
   58.31  
   58.32      /**
   58.33       * Write all the fields from a {@link ResultSet} to a {@link PrintWriter} using a {@link List} of {@link FieldFormatter}s.
   58.34 @@ -282,7 +283,7 @@
   58.35       *
   58.36       */
   58.37      public void cells(final List<FieldFormatter> formatters, final PrintWriter writer, final ResultSet results)
   58.38 -    throws SQLException
   58.39 +    throws SQLException, ProtectionException
   58.40          {
   58.41          for (final FieldFormatter formatter : formatters)
   58.42              {
   58.43 @@ -299,10 +300,11 @@
   58.44       * @param formatter The {@link FieldFormatter} to use to get the field and format it.
   58.45       * @param writer    The {@link PrintWriter} to write the field to.
   58.46       * @param results   The {@link ResultSet} to get the field from.
   58.47 +     * @throws ProtectionException 
   58.48       *
   58.49       */
   58.50      public abstract void cell(final FieldFormatter formatter, final PrintWriter writer, final ResultSet results)
   58.51 -    throws SQLException;
   58.52 +    throws SQLException, ProtectionException;
   58.53      
   58.54      /**
   58.55       * Write the footer for a {@link BaseTable} to a {@link PrintWriter}.
    59.1 --- a/firethorn-webapp/src/main/java/uk/ac/roe/wfau/firethorn/webapp/votable/BaseTableDataTableController.java	Wed May 06 02:17:20 2020 +0100
    59.2 +++ b/firethorn-webapp/src/main/java/uk/ac/roe/wfau/firethorn/webapp/votable/BaseTableDataTableController.java	Wed Jul 29 12:16:11 2020 +0100
    59.3 @@ -194,7 +194,7 @@
    59.4       */
    59.5      @Override
    59.6      public void row(final List<FieldFormatter> formatters, final PrintWriter writer, final ResultSet results)
    59.7 -    throws SQLException
    59.8 +    throws SQLException, ProtectionException
    59.9          {
   59.10          writer.append("{");
   59.11          cells(
   59.12 @@ -212,7 +212,7 @@
   59.13       */
   59.14      @Override
   59.15      public void cells(final List<FieldFormatter> formatters, final PrintWriter writer, final ResultSet results)
   59.16 -    throws SQLException
   59.17 +    throws SQLException, ProtectionException
   59.18          {
   59.19      	int size = 1;
   59.20      	int maxlen = formatters.size();
   59.21 @@ -239,7 +239,7 @@
   59.22       */
   59.23      @Override
   59.24      public void rows(final List<FieldFormatter> formatters, final PrintWriter writer, final ResultSet results)
   59.25 -    throws SQLException
   59.26 +    throws SQLException, ProtectionException
   59.27          {
   59.28          while (results.next())
   59.29              {
   59.30 @@ -261,7 +261,7 @@
   59.31       */
   59.32      @Override
   59.33      public void cell(final FieldFormatter formatter, final PrintWriter writer, final ResultSet results)
   59.34 -    throws SQLException
   59.35 +    throws SQLException, ProtectionException
   59.36          {
   59.37      	  writer.append(
   59.38              formatter.format(
    60.1 --- a/firethorn-webapp/src/main/java/uk/ac/roe/wfau/firethorn/webapp/votable/BaseTableVOTableController.java	Wed May 06 02:17:20 2020 +0100
    60.2 +++ b/firethorn-webapp/src/main/java/uk/ac/roe/wfau/firethorn/webapp/votable/BaseTableVOTableController.java	Wed Jul 29 12:16:11 2020 +0100
    60.3 @@ -32,7 +32,6 @@
    60.4  import uk.ac.roe.wfau.firethorn.meta.adql.AdqlColumn;
    60.5  import uk.ac.roe.wfau.firethorn.meta.base.BaseColumn;
    60.6  import uk.ac.roe.wfau.firethorn.meta.base.BaseTable;
    60.7 -import uk.ac.roe.wfau.firethorn.webapp.votable.AbstractTableController.AbstractFormatter;
    60.8  
    60.9  /**
   60.10   * Spring MVC controller to format a {@link BaseTable} as a <a href='http://www.ivoa.net/documents/VOTable/'>VOTable</a>.
   60.11 @@ -149,30 +148,45 @@
   60.12  
   60.13          @Override
   60.14          public String format(final ResultSet results)
   60.15 -        throws SQLException
   60.16 +        throws SQLException, ProtectionException
   60.17              {
   60.18 -        		String byteArrayString = "";
   60.19 -    		
   60.20 -	        	if (results.getObject(index())!=null){
   60.21 -	        		byte[] bytes = results.getBytes(
   60.22 -	                            index()
   60.23 -	                            );
   60.24 -	        		
   60.25 -                    int aux;
   60.26 -   	                final StringBuilder builder = new StringBuilder();
   60.27 -			        for (byte b : bytes) {
   60.28 -		                 if(b<0) aux=256+b; else aux=b; 
   60.29 -		    	         builder.append(aux  + " ");
   60.30 -			        }
   60.31 -		
   60.32 -			        byteArrayString = builder.toString();
   60.33 +                String byteArrayString = "";
   60.34 +                int aux;
   60.35 +	            final StringBuilder builder = new StringBuilder(); 
   60.36 +                
   60.37 +                if (results.getObject(index())!=null){
   60.38 +                	
   60.39 +                   
   60.40 +            		boolean isarray = column.meta().adql().type().isarray();
   60.41 +            		int size =  column.meta().adql().arraysize();
   60.42 +			
   60.43  
   60.44 +					if (!isarray && size<=0) {
   60.45 +						byte[] bytes = results.getBytes(
   60.46 +					            index()
   60.47 +					        );
   60.48 +						
   60.49 +						int intval = java.nio.ByteBuffer.wrap(bytes).getInt();
   60.50 +
   60.51 +					    builder.append(intval);       
   60.52 +							
   60.53 +					} else {
   60.54 +					    
   60.55 +					    byte[] bytes = results.getBytes(
   60.56 +					        index()
   60.57 +					    );
   60.58 +					    
   60.59 +					    for (byte b : bytes) {
   60.60 +					        if(b<0) aux=256+b; else aux=b; 
   60.61 +					            builder.append(aux  + " ");
   60.62 +					    } 
   60.63 +						  
   60.64 +					}
   60.65  				
   60.66 -				} 
   60.67 -					    
   60.68 -			    return byteArrayString.trim();
   60.69 +                }
   60.70  
   60.71 -            
   60.72 +                byteArrayString = builder.toString();
   60.73 +                return byteArrayString.trim();
   60.74              }
   60.75          }
   60.76      
   60.77 @@ -191,9 +205,6 @@
   60.78          public String format(final ResultSet results)
   60.79          throws SQLException
   60.80              {
   60.81 -        		System.out.println(results.getString(index()));
   60.82 -        		System.out.println(String.valueOf(results.getInt(index())));
   60.83 -
   60.84  	    		if (results.getObject(index())!=null){
   60.85  	    			return  results.getString(index());
   60.86  	    		} else {
   60.87 @@ -312,56 +323,35 @@
   60.88  
   60.89          if (column.meta().adql().type() != null)
   60.90              {
   60.91 -            if (column.meta().adql().type() == AdqlColumn.AdqlType.DATE)
   60.92 +
   60.93 +            writer.append(" datatype='");
   60.94 +            writer.append(column.meta().adql().type().votype());
   60.95 +            writer.append("'");
   60.96 +
   60.97 +            if (column.meta().adql().arraysize() != null)
   60.98                  {
   60.99 -                writer.append(" datatype='char'");
  60.100 -                writer.append(" arraysize='*'");
  60.101 +            	
  60.102 +                if (column.meta().adql().arraysize()==AdqlColumn.NON_ARRAY_SIZE)
  60.103 +                    {
  60.104 +                    }
  60.105 +                else if (column.meta().adql().arraysize()==AdqlColumn.VAR_ARRAY_SIZE)
  60.106 +                    {
  60.107 +                    writer.append(" arraysize='*'");
  60.108 +                    }
  60.109 +                else {
  60.110 +                    writer.append(" arraysize='");
  60.111 +                    writer.append(column.meta().adql().arraysize().toString());
  60.112 +                    writer.append("'");
  60.113                  }
  60.114 -            else if (column.meta().adql().type() == AdqlColumn.AdqlType.TIME)
  60.115 -                {
  60.116 -                writer.append(" datatype='char'");
  60.117 -                writer.append(" arraysize='*'");
  60.118 -                }
  60.119 -            else if (column.meta().adql().type() == AdqlColumn.AdqlType.DATETIME)
  60.120 -                {
  60.121 -                writer.append(" datatype='char'");
  60.122 -                writer.append(" arraysize='*'");
  60.123 -                }
  60.124 -            else if (column.meta().adql().type() == AdqlColumn.AdqlType.INTEGER) {
  60.125 -		writer.append(" datatype='int'");
  60.126 -                writer.append(" arraysize='1'");
  60.127 -		}
  60.128 -	    else if (column.meta().adql().type() == AdqlColumn.AdqlType.BYTE) {
  60.129 -		writer.append(" datatype='unsignedByte'");
  60.130 -                writer.append(" arraysize='*'");
  60.131 -		}
  60.132 -            else {
  60.133 -                writer.append(" datatype='");
  60.134 -                writer.append(column.meta().adql().type().name().toString().replace("'", "''").toLowerCase());
  60.135 -                writer.append("'");
  60.136 -
  60.137 +            }
  60.138                  
  60.139 -                if (column.meta().adql().arraysize() != null)
  60.140 -                    {
  60.141 -                    if (column.meta().adql().arraysize() == AdqlColumn.NON_ARRAY_SIZE)
  60.142 -                        {
  60.143 -                        }
  60.144 -                    else if (column.meta().adql().arraysize() == AdqlColumn.VAR_ARRAY_SIZE || column.meta().adql().arraysize() <= 0)
  60.145 -                        {
  60.146 -                        writer.append(" arraysize='*'");
  60.147 -                        }
  60.148 -                    else {
  60.149 -                        writer.append(" arraysize='");
  60.150 -                        writer.append(column.meta().adql().arraysize().toString());
  60.151 -                        writer.append("'");
  60.152 -                        }
  60.153 -                    }
  60.154 -                }
  60.155              if (column.meta().adql() != null)
  60.156                  {
  60.157 -                writer.append(" xtype='");
  60.158 -                writer.append(column.meta().adql().type().xtype());
  60.159 -                writer.append("'");
  60.160 +                    if (column.meta().adql().type().xtype() != null) {
  60.161 +	                    writer.append(" xtype='");
  60.162 +	                    writer.append(column.meta().adql().type().xtype());
  60.163 +	                    writer.append("'");
  60.164 +	                }
  60.165                  }
  60.166              }
  60.167  
  60.168 @@ -408,7 +398,7 @@
  60.169  
  60.170      @Override
  60.171      public void row(final List<FieldFormatter> formatters, final PrintWriter writer, final ResultSet results)
  60.172 -    throws SQLException
  60.173 +    throws SQLException, ProtectionException
  60.174          {
  60.175          writer.append("<TR>");
  60.176          cells(
  60.177 @@ -421,7 +411,7 @@
  60.178  
  60.179      @Override
  60.180      public void cell(final FieldFormatter formatter, final PrintWriter writer, final ResultSet results)
  60.181 -    throws SQLException
  60.182 +    throws SQLException, ProtectionException
  60.183          {
  60.184      	String content =  formatter.format(results);
  60.185          writer.append("<TD>");
    61.1 --- a/integration/005/pom.xml	Wed May 06 02:17:20 2020 +0100
    61.2 +++ b/integration/005/pom.xml	Wed Jul 29 12:16:11 2020 +0100
    61.3 @@ -32,7 +32,7 @@
    61.4      <parent>
    61.5          <groupId>uk.ac.roe.wfau</groupId>
    61.6          <artifactId>firethorn</artifactId>
    61.7 -        <version project='firethorn'>2.1.35</version>
    61.8 +        <version project='firethorn'>2.1.36</version>
    61.9      </parent>
   61.10  
   61.11      <artifactId>firethorn-integration-tests</artifactId>
    62.1 --- a/integration/tester/Dockerfile	Wed May 06 02:17:20 2020 +0100
    62.2 +++ b/integration/tester/Dockerfile	Wed Jul 29 12:16:11 2020 +0100
    62.3 @@ -15,7 +15,7 @@
    62.4  # You should have received a copy of the GNU General Public License
    62.5  # along with this program.  If not, see <http://www.gnu.org/licenses/>.
    62.6  
    62.7 -FROM firethorn/fedora:2.1.35
    62.8 +FROM firethorn/fedora:2.1.36
    62.9  MAINTAINER Dave Morris <docker-admin@metagrid.co.uk>
   62.10  
   62.11  RUN dnf -y install perl
    63.1 --- a/pom.xml	Wed May 06 02:17:20 2020 +0100
    63.2 +++ b/pom.xml	Wed Jul 29 12:16:11 2020 +0100
    63.3 @@ -39,7 +39,7 @@
    63.4          | Maven project versions
    63.5          | http://www.sonatype.com/books/mvnref-book/reference/pom-relationships-sect-pom-syntax.html
    63.6          +-->
    63.7 -    <version project='firethorn'>2.1.35</version>
    63.8 +    <version project='firethorn'>2.1.36</version>
    63.9  
   63.10      <prerequisites>
   63.11          <maven>3.3.1</maven>