s4
changeset 835:fa23017ba273
Sync only latest entries in user_m
author | HIROSE Yuuji <yuuji@gentei.org> |
---|---|
date | Tue, 23 Jun 2020 12:47:34 +0900 |
parents | a87030974b99 |
children | b3516ee2bb4d |
files | s4-world.sh |
diffstat | 1 files changed, 21 insertions(+), 2 deletions(-) [+] |
line diff
1.1 --- a/s4-world.sh Tue Jun 23 11:14:44 2020 +0900 1.2 +++ b/s4-world.sh Tue Jun 23 12:47:34 2020 +0900 1.3 @@ -79,6 +79,24 @@ 1.4 fi 1.5 err "`gdate +%S.%3N` Starting account synchronization[$$]" 1.6 1.7 + prevsync=`tail -1 $syncflag|colrm 20` # 2020-06-21 12:30:00 = 19cols 1.8 + syncall=${db%.*}.syncall 1.9 + err syncallfile=$syncall 1.10 + if [ -e $syncall ]; then 1.11 + rm -f "$syncall" 1.12 + err "Force update user_m for all users" 1.13 + else 1.14 + case "$prevsync" in 1.15 + [2-9][0-9][0-9][0-9]-[01][0-9]-[0-3][0-9]\ [012][0-9]:??:??) 1.16 + SYNCCOND="WHERE name in (SELECT name FROM m.user_s WHERE key='wtime' AND val > '$prevsync')" 1.17 + err synccond limited to \ 1.18 + `query "SELECT DISTINCT name FROM m.user_s $SYNCCOND;"` 1.19 + err "Touch $syncall (owner=`id -un`) to update all user_m." 1.20 + ;; 1.21 + *) 1.22 + echo arere ;; 1.23 + esac 1.24 + fi 1.25 ## num=$(sqlite3 -bail -cmd 'PRAGMA FOREIGN_KEYS=on' $db <<EOF 1.26 num=$(query <<EOF 1.27 BEGIN; 1.28 @@ -92,9 +110,10 @@ 1.29 SELECT rowid,* FROM m.user_s; 1.30 DELETE FROM main.user_m WHERE rowid NOT IN (SELECT rowid FROM m.user_m); 1.31 REPLACE INTO main.user_m(rowid, name, key, type, val, bin) 1.32 - SELECT rowid,* FROM m.user_m 1.33 + SELECT rowid,* FROM m.user_m $SYNCCOND 1.34 EXCEPT 1.35 - SELECT rowid,* FROM main.user_m; 1.36 + SELECT rowid,* FROM main.user_m $SYNCCOND 1.37 + ; 1.38 END; 1.39 1.40 /* Compare user tables */