Skip to content
  1. Apr 20, 2017
  2. Apr 04, 2017
    • gmantele's avatar
      [ADQL] Complete commit "Re-Fix GROUP BY's columns handling" · 8e2fa9ff
      gmantele authored
      (https://github.com/gmantele/taplib/commit/7a70c6038cef460ab169682bed391bb5ae1de1e9)
      
      It was not possible to use a GROUP BY with a qualified column name.
      So finally, now, a GROUP BY is a ClauseADQL<ADQLColumn> instead of
      a ClauseADQL<ColumnReference>. Indeed, according to the ADQL's BNF,
      GROUP BY items are only columns as they would appear in the SELECT
      clause (i.e. qualified or not, delimited or not). On the other
      hand an ORDER BY accepts ONLY column index or non-qualified column
      name/alias.
      
      The class ColumnReference is kept for backward compatibility (or in
      case the next version of the ADQL grammar make items of GROUP BY and
      ORDER BY of the same type: index or qualified column). Besides, this
      class is still inherited for the ORDER BY clause items
      (see adql.query.ADQLOrder).
      8e2fa9ff
  3. Apr 03, 2017
  4. Mar 29, 2017
  5. Mar 16, 2017
  6. Mar 10, 2017
    • gmantele's avatar
      [ADQL] Fix handling of delimited column references (e.g. items of ORDER BY). · 118f357a
      gmantele authored
      This error has been raised on the issue #32 by Zarquan.
      118f357a
    • gmantele's avatar
      [TAP] Fix handling of bad uploaded files: · 77132014
      gmantele authored
      - empty file
      - not a valid VOTable document
      
      In such cases, the following error message is returned:
        "The input file is not a valid VOTable document!"
      A cause with more detais (especially the line and column numbers)
      may be appended.
      
      Cases handled with no error:
      
        - If the VOTable document has no rows, an empty table
          is uploaded. No error has to be returned.
      
        - If a row has a different number of columns than the number
          of declared FIELDs, additional values are ignored and missing
          values are replaced by NULL. This is actually nicely handled by
          STIL.
      77132014
    • gmantele's avatar
      [TAP] Use a more standard way to get the DBMS name. · db34b35d
      gmantele authored
      Two comments:
      
      - JDBCConnection.getDBMSName(String url) is now deprecated ; it may disappear
        in a next version of the ADQLLibrary.
      - In case the DBMS name can not be retrieved (generally because of an
        incomplete JDBC driver implementation), NULL will be returned.
      db34b35d
    • gmantele's avatar
      [ADQL] Remove unnecessary ending semicolons from SQL queries. · 63cacfa4
      gmantele authored
      Few useless casts have also been removed.
      63cacfa4
  7. Mar 09, 2017
    • gmantele's avatar
      [TAP] Fix incorrect abortion handling in SYNChronous mode. · 5baff84e
      gmantele authored
      It is also now recommended to make DBConnection.executeQuery(ADQLQuery)
      return NULL if the query has been aborted (indeed, the DBConnection is
      the only one that can reliably know that fact). JDBCConnection has been
      adapted consequently.
      5baff84e
    • gmantele's avatar
      [UWS,TAP] Synchronize access to ISO8601Format. · fa206848
      gmantele authored
      This class is using static attributes of type DecimalFormat.
      Unfortunately this type of objects can NOT be accessed by multiple
      threads simultaneously: it is not thread-safe. Parsing errors,
      mostly during TAP uploads, have been experienced for this reason.
      
      To solve quickly this issue, the main static public functions of
      ISO8601Format have been synchronized.
      fa206848
    • gmantele's avatar
      [TAP] Adapt the JUnit class testing getFile(...), · 36b4a8bf
      gmantele authored
      apply a quick space replacement (by %20) for few URIs of the configuration file
      and remove duplicated entry (encoding) from the Gradle build script.
      
      A special test has also been added in getFile(...) in order to deliver
      a clear error message for users using a former version with URIs in their
      configuration file (only for file_root_path and metadata_file).
      36b4a8bf
    • gmantele's avatar
      [TAP] Fix and add JUnit tests. Now, they should work on any machine. · 0422fb7d
      gmantele authored
      Two embedded DBMS are used: H2 and a little SQLite. JDBC drivers are provided
      in the `lib` directory. The databases are created and deleted automatically
      by the JUnit tests (see `test/tap/db_testtools/DBTools for more details`).
      
      The ANT and Gradle build scripts have been updated to reflect all these test
      modifications.
      0422fb7d
  8. Mar 08, 2017
  9. Mar 03, 2017
  10. Mar 02, 2017
  11. Mar 01, 2017
  12. Feb 24, 2017
  13. Feb 23, 2017
  14. Feb 22, 2017
  15. Feb 20, 2017
  16. Feb 09, 2017
  17. Feb 01, 2017
  18. Oct 12, 2016
  19. Sep 20, 2016
    • gmantele's avatar
      [ADQL] Fix the tree generated by the parsing of NATURAL JOINs. · 7ca49f81
      gmantele authored
      The "normal" JOIN:
          A JOIN B ON A.id = B.id JOIN C ON B.id = C.id
      is correctly interpreted as:
          ( (A JOIN B ON A.id = B.id) JOIN C ON B.id = C.id )
      But with a NATURAL JOIN, the tree is mirrored:
          A NATURAL JOIN B NATURAL JOIN C
      gives:
      	( A NATURAL JOIN (B NATURAL JOIN C) )
      instead of:
          ( (A NATURAL JOIN B) NATURAL JOIN C )
      This is not a problem when the SQL translation is identical to the ADQL
      expression, but for some DBMS a conversion into a INNER JOIN ON is necessary
      and in this case we got the following SQL:
          A JOIN B JOIN C ON A.id = B.id ON B.id = C.id
      Which seems to work, but is syntactically strange.
      
      This commit should fix the generated tree. A "normal" JOIN and a NATURAL JOIN
      should now have the same form. A JUnit test has been added into TestADQLParser
      to check that: testJoinTree().
      7ca49f81