src/Pure/General/sql.scala
changeset 65598 5deef985e38e
parent 65594 659305708959
child 65602 d9533e9615ad
equal deleted inserted replaced
65597:b408ca224954 65598:5deef985e38e
   300     override def toString: String = name
   300     override def toString: String = name
   301 
   301 
   302     def sql_type(T: SQL.Type.Value): String = SQL.sql_type_sqlite(T)
   302     def sql_type(T: SQL.Type.Value): String = SQL.sql_type_sqlite(T)
   303 
   303 
   304     def set_date(stmt: PreparedStatement, i: Int, date: Date): Unit =
   304     def set_date(stmt: PreparedStatement, i: Int, date: Date): Unit =
   305       set_string(stmt, i, date_format(date))
   305       if (date == null) set_string(stmt, i, null)
       
   306       else set_string(stmt, i, date_format(date))
       
   307 
   306     def date(rs: ResultSet, name: String): Date =
   308     def date(rs: ResultSet, name: String): Date =
   307       date_format.parse(string(rs, name))
   309       date_format.parse(string(rs, name))
   308 
   310 
   309     def rebuild { using(statement("VACUUM"))(_.execute()) }
   311     def rebuild { using(statement("VACUUM"))(_.execute()) }
   310   }
   312   }
   366 
   368 
   367     def sql_type(T: SQL.Type.Value): String = SQL.sql_type_postgresql(T)
   369     def sql_type(T: SQL.Type.Value): String = SQL.sql_type_postgresql(T)
   368 
   370 
   369     // see https://jdbc.postgresql.org/documentation/head/8-date-time.html
   371     // see https://jdbc.postgresql.org/documentation/head/8-date-time.html
   370     def set_date(stmt: PreparedStatement, i: Int, date: Date): Unit =
   372     def set_date(stmt: PreparedStatement, i: Int, date: Date): Unit =
   371       stmt.setObject(i, OffsetDateTime.from(date.to_utc.rep))
   373       if (date == null) stmt.setObject(i, null)
       
   374       else stmt.setObject(i, OffsetDateTime.from(date.to_utc.rep))
       
   375 
   372     def date(rs: ResultSet, name: String): Date =
   376     def date(rs: ResultSet, name: String): Date =
   373       Date.instant(rs.getObject(name, classOf[OffsetDateTime]).toInstant)
   377       Date.instant(rs.getObject(name, classOf[OffsetDateTime]).toInstant)
   374 
   378 
   375     override def close() { super.close; port_forwarding.foreach(_.close) }
   379     override def close() { super.close; port_forwarding.foreach(_.close) }
   376   }
   380   }