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) |