Mercurial > hgrepos > hgweb.cgi > s4
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); |