Skip to content
  1. Sep 26, 2017
  2. Aug 02, 2017
    • gmantele's avatar
      [ADQL,TAP] Basic MySQL support. · cf721ff2
      gmantele authored
      On the contrary to other DBMS, MySQL supports schemas, but as databases.
      Which means that JDBCConnection gets from the JDBC driver that MySQL does
      not support schemas and so it tries to access TAP_SCHEMA tables with a
      'TAP_SCHEMA_' prefix instead of 'TAP_SCHEMA.' one. Since MySQL does
      behave like it supports schemas, JDBCConnection.supportsSchema must be
      set to 'true' if the DBMS is MySQL.
      
      Besides, since no schemas are returned by the JDBC driver
      (cf DatabaseMetadata.listSchema(...)), the function
      JDBCConnection.isSchemaExisting(String, DatabaseMetaData) must always assume
      that the specified schema exists if the DBMS is MySQL. This is particularly
      important when the existence of 'TAP_UPLOAD' must be checked, because if the
      function returns 'false' the library will attempt to create the database/schema
      'TAP_UPLOAD' and will obviously fail due to a lack of permissions. Of course,
      it means that the TAP implementor must create manually the schema/database
      'TAP_UPLOAD' him-/her-self.
      
      The second particularity of MySQL is the quote character for identifiers.
      It is a back-quote (`) instead of a double quote ("). To reflect this
      difference, JDBCTranslator.appendIdentifier(...) has been overwritten in a new
      JDBCTranslator extension: MySQLTranslator.
      
      The translation of all SQL types and mathematical functions have been adapted to
      MySQL according to the online documentation. Few tests have been done locally
      with a tiny database. This seems to work but further testing should be
      performed in order to ensure the stability of this implementation.
      cf721ff2
  3. Jul 05, 2017
  4. Apr 25, 2017
  5. Mar 10, 2017
  6. 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
      [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
  7. Mar 08, 2017
  8. Mar 01, 2017
  9. Sep 01, 2016
  10. Jul 21, 2016
  11. Jul 14, 2016
  12. Jul 13, 2016
  13. Jun 16, 2016
  14. Apr 19, 2016
    • gmantele's avatar
      [TAP] Finish fixing the transaction management bug. · 5ac8f1fb
      gmantele authored
      See the commit bd621842,
      for the first part of the fix (which actually did not really
      fixed the problem: connections "idle in transaction" were
      still in the database ; the connection being inside an opened transaction,
      it generates lock issues in the database in addition of probably taking
      some memory resources).
      5ac8f1fb
  15. Apr 12, 2016
    • gmantele's avatar
      [TAP] New fix for the transaction management. · bd621842
      gmantele authored
      The transaction and Statement were closed too early before.
        - Fetching the row was not possible once the first bunch of fetched
      rows was over.
        - The problem of "statement is aborted" preventing the re-use of
      a same DB connection was apparently still there, but occurred less often.
      
        Now, any transaction potentially started in a DB connection is always
      closed after one of the public functions of JDBCConnection is called ;
      except executeQuery(ADQLQuery) whose the call MUST be wrapped inside a
      try...catch block in which DBConnection.cancel(true) MUST be called
      in case of error (in order to effectively end any started transaction).
      bd621842
  16. Jan 29, 2016
  17. Dec 04, 2015
  18. Nov 13, 2015
    • gmantele's avatar
      [TAP & UWS] 2 MAJOR BUGS FIXED (these bugs were affecting performances). · d9041712
      gmantele authored
      1) [TAP & UWS] ]MAJOR BUG FIX: The abortion of an SQL query is now correctly
      implemented. Before this fix, 2 mistakes prevented this clean abortion:
        a/ The thread was not cancelled because the SQL query execution was
      blocking the thread. Then the thread could not treat the interruption though
      it was flagged as interrupted.
        b/ The function UWSJob.isStopped() considered the job as stopped because
      the interrupted flag was set, even though the thread was still processing
      (and the database too). Because of that it returned true and the job phase
      was ABORTED though the thread was still running.
        NOW:
        a/ TAPJob calls the function Statement.cancel() (if supported) in order
      to cancel the SQL query execution properly inside the database.
        b/ The function UWSJob.isStopped() does not test any more the interrupted flag
      and returns true only if the thread is really stopped.
        IN BRIEF: It is now sure that a job in the phase ABORTED is really stopped
      (that's to say: thread stopped AND DB query execution stopped).
      
      2) [TAP] BUG FIX: When the writing of a result is abnormaly interrupted for any
      reason, the file which was being written is deleted.
      d9041712
  19. Jul 20, 2015
  20. Jul 08, 2015
  21. Jun 18, 2015
  22. Jun 16, 2015
  23. Jun 08, 2015
  24. Apr 22, 2015
  25. Apr 13, 2015
  26. Apr 02, 2015
    • gmantele's avatar
      [UWS,TAP] Errors and log management improvements. Particularly, now TAP and... · 998d11f5
      gmantele authored
      [UWS,TAP] Errors and log management improvements. Particularly, now TAP and UWS are able to manage correctly HTTP request abortions (i.e. when the user stop the request before the response has been fully sent, or when there is a connection problem or a time-out). Such abortions are considered by UWS and TAP merely as job abortion/cancel. No error is logged any more. In addition of this correction, log entries concerning the execution of a TAP sync/async job have been modified so that having more coherents messages. And stack traces of exception that occurred when executing a job (sync or async, tap or uws) are displayed just once: at the JOB END log entry, and not by the HTTP RESPONSE_SENT entry. And finally, output flush and interruption detection are made more often when writing a query result (the flush is particularly important when combining with fetch-size > 0 in synchronous mode....the sync response is then a streaming output).
      998d11f5
  27. Mar 26, 2015
  28. Mar 10, 2015
  29. Feb 27, 2015
  30. Feb 13, 2015
    • gmantele's avatar
      [TAP] Add a new database access method in the configuration file: get a... · e7dff888
      gmantele authored
      [TAP] Add a new database access method in the configuration file: get a Datasource from JNDI. & Better support of connection pooling (TAPFactory.countFreeConnections() has been removed ; when the creation of a database connection fails with an SQLException, it is considered that no connection are momentarily available...async jobs will be queued and all sync requests will be rejected).
      e7dff888
  31. Feb 06, 2015
  32. Dec 09, 2014
  33. Nov 05, 2014
    • gmantele's avatar
      [ADQL,TAP] Add geometry format in output and correct upload of STC-S regions.... · 6f607bc6
      gmantele authored
      [ADQL,TAP] Add geometry format in output and correct upload of STC-S regions. Geometrical type conversion from and into a DB type is now required in all JDBCTranslator. This allows formatting of geometrical column value coming from the database, but also the translation of STC-S expressions provided in uploaded table into geometrical column values.
      6f607bc6
  34. Oct 28, 2014
    • gmantele's avatar
      [ADQL,TAP] Add STC-S and UDFs support in the ADQL parser. Now, it is possible... · 496e769c
      gmantele authored
      [ADQL,TAP] Add STC-S and UDFs support in the ADQL parser. Now, it is possible to provide a list of allowed UDFs, regions and coordinate systems. The ServiceConnection of TAP is now able to provide these lists and to propagate them to the ADQLExecutor. UDFs and allowed regions are now listed automatically in the /capabilities resource of TAP. The type 'geometry' is now fully supported in ADQL. That's why the new function 'isGeometry()' has been added to all ADQLOperand extensions. Now the DBChecker is also able to check roughly types of columns and UDFs (unknown when parsing syntactically a query). The syntax of STC-S regions (expressed in the REGION function) are now checked by DBChecker. However, for the moment, geometries are not serialized in STC-S in the output....but it should be possible in some way in the next commit(s).
      496e769c
  35. Oct 01, 2014