Skip to content
  1. Mar 26, 2021
  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. Mar 01, 2017
  4. 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
  5. 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
  6. Feb 08, 2016
  7. 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
  8. Jun 08, 2015
  9. Apr 22, 2015
  10. Apr 13, 2015
  11. Mar 13, 2015
  12. Mar 04, 2015
  13. Feb 18, 2015
  14. Feb 16, 2015
  15. 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
  16. Feb 09, 2015
  17. Apr 10, 2014