src/Pure/Admin/build_log.scala
changeset 65777 821e77ce41be
parent 65775 123f2c0995b8
child 65778 666a1bac126b
equal deleted inserted replaced
65776:373d708898d4 65777:821e77ce41be
   690     /* recent pull_date entries */
   690     /* recent pull_date entries */
   691 
   691 
   692     def recent_time(days: Int): SQL.Source =
   692     def recent_time(days: Int): SQL.Source =
   693       "now() - INTERVAL '" + days.max(0) + " days'"
   693       "now() - INTERVAL '" + days.max(0) + " days'"
   694 
   694 
   695     def recent_table(days: Int): SQL.Table =
   695     def recent_pull_date_table(days: Int): SQL.Table =
   696     {
   696     {
   697       val table = pull_date_table
   697       val table = pull_date_table
   698       SQL.Table("recent", table.columns,
   698       SQL.Table("recent_pull_date", table.columns,
   699         table.select(table.columns, "WHERE " + pull_date(table) + " > " + recent_time(days)))
   699         table.select(table.columns, "WHERE " + pull_date(table) + " > " + recent_time(days)))
   700     }
   700     }
   701 
   701 
   702     def select_recent(table: SQL.Table, columns: List[SQL.Column], days: Int,
   702     def recent_pull_date_select(table1: SQL.Table, columns: List[SQL.Column], days: Int,
   703       distinct: Boolean = false, pull_date: Boolean = false): SQL.Source =
   703       distinct: Boolean = false): SQL.Source =
   704     {
   704     {
   705       val recent = recent_table(days)
   705       val table2 = recent_pull_date_table(days)
   706       val columns1 = if (pull_date) columns ::: List(Data.pull_date(recent)) else columns
   706       table1.select(columns, distinct = distinct) + SQL.join_inner + table2.query_name +
   707       table.select(columns1, distinct = distinct) + SQL.join_inner + recent.query_name +
   707       " ON " + Prop.isabelle_version(table1) + " = " + Prop.isabelle_version(table2)
   708       " ON " + Prop.isabelle_version(table) + " = " + Prop.isabelle_version(recent)
       
   709     }
   708     }
   710 
   709 
   711 
   710 
   712     /* universal view on main data */
   711     /* universal view on main data */
   713 
   712 
   780             db2.create_table(Data.sessions_table)
   779             db2.create_table(Data.sessions_table)
   781             db2.create_table(Data.ml_statistics_table)
   780             db2.create_table(Data.ml_statistics_table)
   782 
   781 
   783             val recent_log_names =
   782             val recent_log_names =
   784               db.using_statement(
   783               db.using_statement(
   785                 Data.select_recent(
   784                 Data.recent_pull_date_select(
   786                   Data.meta_info_table, List(Data.log_name), days, distinct = true))(stmt =>
   785                   Data.meta_info_table, List(Data.log_name), days, distinct = true))(stmt =>
   787                     stmt.execute_query().iterator(_.string(Data.log_name)).toList)
   786                     stmt.execute_query().iterator(_.string(Data.log_name)).toList)
   788 
   787 
   789             for (log_name <- recent_log_names) {
   788             for (log_name <- recent_log_names) {
   790               read_meta_info(db, log_name).foreach(meta_info =>
   789               read_meta_info(db, log_name).foreach(meta_info =>
   800             {
   799             {
   801               val table = Data.pull_date_table
   800               val table = Data.pull_date_table
   802               db2.create_table(table)
   801               db2.create_table(table)
   803               db2.using_statement(table.insert())(stmt2 =>
   802               db2.using_statement(table.insert())(stmt2 =>
   804               {
   803               {
   805                 db.using_statement(Data.recent_table(days).query)(stmt =>
   804                 db.using_statement(Data.recent_pull_date_table(days).query)(stmt =>
   806                 {
   805                 {
   807                   val res = stmt.execute_query()
   806                   val res = stmt.execute_query()
   808                   while (res.next()) {
   807                   while (res.next()) {
   809                     for ((c, i) <- table.columns.zipWithIndex) {
   808                     for ((c, i) <- table.columns.zipWithIndex) {
   810                       stmt2.string(i + 1) = res.get_string(c)
   809                       stmt2.string(i + 1) = res.get_string(c)