src/Pure/General/sql.scala
changeset 73367 77ef8bef0593
parent 73340 0ffcad1f6130
child 75393 87ebf5a50283
equal deleted inserted replaced
73366:5f388e514ab8 73367:77ef8bef0593
   251     }
   251     }
   252 
   252 
   253     def execute(): Boolean = rep.execute()
   253     def execute(): Boolean = rep.execute()
   254     def execute_query(): Result = new Result(this, rep.executeQuery())
   254     def execute_query(): Result = new Result(this, rep.executeQuery())
   255 
   255 
   256     def close(): Unit = rep.close
   256     def close(): Unit = rep.close()
   257   }
   257   }
   258 
   258 
   259 
   259 
   260   /* results */
   260   /* results */
   261 
   261 
   320 
   320 
   321     /* connection */
   321     /* connection */
   322 
   322 
   323     def connection: Connection
   323     def connection: Connection
   324 
   324 
   325     def close(): Unit = connection.close
   325     def close(): Unit = connection.close()
   326 
   326 
   327     def transaction[A](body: => A): A =
   327     def transaction[A](body: => A): A =
   328     {
   328     {
   329       val auto_commit = connection.getAutoCommit
   329       val auto_commit = connection.getAutoCommit
   330       try {
   330       try {
   481       }
   481       }
   482     try {
   482     try {
   483       val connection = DriverManager.getConnection(url, user, password)
   483       val connection = DriverManager.getConnection(url, user, password)
   484       new Database(name, connection, port_forwarding)
   484       new Database(name, connection, port_forwarding)
   485     }
   485     }
   486     catch { case exn: Throwable => port_forwarding.foreach(_.close); throw exn }
   486     catch { case exn: Throwable => port_forwarding.foreach(_.close()); throw exn }
   487   }
   487   }
   488 
   488 
   489   class Database private[PostgreSQL](
   489   class Database private[PostgreSQL](
   490       name: String, val connection: Connection, port_forwarding: Option[SSH.Port_Forwarding])
   490       name: String, val connection: Connection, port_forwarding: Option[SSH.Port_Forwarding])
   491     extends SQL.Database
   491     extends SQL.Database
   507 
   507 
   508     def insert_permissive(table: SQL.Table, sql: SQL.Source = ""): SQL.Source =
   508     def insert_permissive(table: SQL.Table, sql: SQL.Source = ""): SQL.Source =
   509       table.insert_cmd("INSERT",
   509       table.insert_cmd("INSERT",
   510         sql = sql + (if (sql == "") "" else " ") + "ON CONFLICT DO NOTHING")
   510         sql = sql + (if (sql == "") "" else " ") + "ON CONFLICT DO NOTHING")
   511 
   511 
   512     override def close(): Unit = { super.close; port_forwarding.foreach(_.close) }
   512     override def close(): Unit = { super.close(); port_forwarding.foreach(_.close()) }
   513   }
   513   }
   514 }
   514 }