comparison s4-world.sh @ 887:8229c75e9f94

Ensure user_s update
author HIROSE Yuuji <yuuji@gentei.org>
date Tue, 22 Dec 2020 08:24:23 +0900
parents 4c02a9f862d7
children 3c9c65ff80f0
comparison
equal deleted inserted replaced
886:99187e4ad69b 887:8229c75e9f94
76 err "forcibly, touch db/forceusersync file each time of world update." 76 err "forcibly, touch db/forceusersync file each time of world update."
77 return -4 77 return -4
78 fi 78 fi
79 fi 79 fi
80 err "`gdate +%S.%3N` Starting account synchronization" 80 err "`gdate +%S.%3N` Starting account synchronization"
81 SYNC_M=1
81 82
82 prevsync=`tail -1 $syncflag|colrm 20` # 2020-06-21 12:30:00 = 19cols 83 prevsync=`tail -1 $syncflag|colrm 20` # 2020-06-21 12:30:00 = 19cols
83 syncall=${db%.*}.syncall 84 syncall=${db%.*}.syncall
84 err syncallfile=$syncall 85 err syncallfile=$syncall
85 if [ -e $syncall ]; then 86 if [ -e $syncall ]; then
94 if [ -n "$limited" ]; then 95 if [ -n "$limited" ]; then
95 err synccond limited to "$limited" 96 err synccond limited to "$limited"
96 else 97 else
97 err synccond canceled for user_m 98 err synccond canceled for user_m
98 SYNCCOND="WHERE NULL" 99 SYNCCOND="WHERE NULL"
100 SYNC_M=
99 fi 101 fi
100 err "Touch $syncall (owner=`id -un`) to update all user_m." 102 err "Touch $syncall (owner=`id -un`) to update all user_m."
101 ;; 103 ;;
102 *) 104 *)
103 echo arere ;; 105 echo arere ;;
112 WHERE m.user.rowid NOT IN (SELECT rowid FROM user); 114 WHERE m.user.rowid NOT IN (SELECT rowid FROM user);
113 UPDATE user SET name = (SELECT name FROM m.user WHERE main.user.rowid=m.user.rowid); 115 UPDATE user SET name = (SELECT name FROM m.user WHERE main.user.rowid=m.user.rowid);
114 DELETE FROM main.user_s WHERE rowid NOT IN (SELECT rowid FROM m.user_s); 116 DELETE FROM main.user_s WHERE rowid NOT IN (SELECT rowid FROM m.user_s);
115 REPLACE INTO main.user_s(rowid, name, key, type, val, bin) 117 REPLACE INTO main.user_s(rowid, name, key, type, val, bin)
116 SELECT rowid,* FROM m.user_s; 118 SELECT rowid,* FROM m.user_s;
119 ${SYNC_M:+
117 DELETE FROM main.user_m WHERE rowid NOT IN (SELECT rowid FROM m.user_m); 120 DELETE FROM main.user_m WHERE rowid NOT IN (SELECT rowid FROM m.user_m);
118 REPLACE INTO main.user_m(rowid, name, key, type, val, bin) 121 REPLACE INTO main.user_m(rowid, name, key, type, val, bin)
119 SELECT rowid,* FROM m.user_m $SYNCCOND 122 SELECT rowid,* FROM m.user_m $SYNCCOND
120 EXCEPT 123 EXCEPT
121 SELECT rowid,* FROM main.user_m $SYNCCOND 124 SELECT rowid,* FROM main.user_m $SYNCCOND
122 ; 125 ;} /* SYNC_M closed here */
123 END; 126 END;
124 127
125 /* Compare user tables */ 128 /* Compare user tables */
126 WITH master AS ( 129 WITH master AS (
127 SELECT p.rowid,* FROM m.user p 130 SELECT p.rowid,* FROM m.user p
128 NATURAL LEFT JOIN m.user_s 131 NATURAL LEFT JOIN m.user_s
129 NATURAL LEFT JOIN m.user_m 132 ${SYNC_M:+ NATURAL LEFT JOIN m.user_m}
130 ), thisworld AS ( 133 ), thisworld AS (
131 SELECT p.rowid,* FROM user p 134 SELECT p.rowid,* FROM user p
132 NATURAL LEFT JOIN user_s 135 NATURAL LEFT JOIN user_s
133 NATURAL LEFT JOIN user_m 136 ${SYNC_M:+ NATURAL LEFT JOIN user_m}
134 ), m_a AS ( 137 ), m_a AS (
135 SELECT * FROM master EXCEPT SELECT * FROM thisworld 138 SELECT * FROM master EXCEPT SELECT * FROM thisworld
136 ), a_m AS ( 139 ), a_m AS (
137 SELECT * FROM thisworld EXCEPT SELECT * FROM master 140 SELECT * FROM thisworld EXCEPT SELECT * FROM master
138 ) SELECT (SELECT count(*) FROM m_a) + (SELECT count(*) FROM a_m); 141 ) SELECT (SELECT count(*) FROM m_a) + (SELECT count(*) FROM a_m);

yatex.org