Diff
Not logged in

Differences From Artifact [def9793f08]:

To Artifact [35d77c12e4]:


151
152
153
154
155
156
157
158

159
160
161
162
163
164
165
151
152
153
154
155
156
157

158
159
160
161
162
163
164
165







-
+







    ");"
  );

  /* Add files found in V
  */
  db_multi_exec(
    "INSERT OR IGNORE INTO fv(fn,fnp,fnm,idv,idp,idm,ridv,ridp,ridm,chnged)"
    " SELECT pathname, pathname, pathname, 0, 0, 0, 0, 0, 0, 0 "
    " SELECT pathname, pathname, pathname, id, 0, 0, rid, 0, 0, chnged "
    " FROM vfile WHERE vid=%d",
    vid
  );

  /*
  ** Compute name changes from P->V
  */
175
176
177
178
179
180
181
182

183
184
185
186
187
188
189
175
176
177
178
179
180
181

182
183
184
185
186
187
188
189







-
+







      );
      free(z);
    }
    fossil_free(aChng);
    db_multi_exec("UPDATE fv SET fnm=fnp WHERE fnp!=fn");
  }

  /* Add files found in P
  /* Add files found in P but not in V
  */
  db_multi_exec(
    "INSERT OR IGNORE INTO fv(fn,fnp,fnm,idv,idp,idm,ridv,ridp,ridm,chnged)"
    " SELECT pathname, pathname, pathname, 0, 0, 0, 0, 0, 0, 0 "
    "   FROM vfile"
    "  WHERE vid=%d AND pathname NOT IN (SELECT fnp FROM fv)",
    pid
201
202
203
204
205
206
207
208

209
210
211
212
213
214
215
216
217
218
219
220

221
222
223
224
225
226
227

228
229
230
231
232

233
234
235
236
237
238
239
201
202
203
204
205
206
207

208
209
210
211
212
213
214
215
216
217
218
219

220
221
222
223
224
225
226

227





228
229
230
231
232
233
234
235







-
+











-
+






-
+
-
-
-
-
-
+







        " WHERE fnp=(SELECT name FROM filename WHERE fnid=%d)",
        aChng[i*2+1], aChng[i*2]
      );
    }
    fossil_free(aChng);
  }

  /* Add files found in M
  /* Add files found in M but not in P or V.
  */
  db_multi_exec(
    "INSERT OR IGNORE INTO fv(fn,fnp,fnm,idv,idp,idm,ridv,ridp,ridm,chnged)"
    " SELECT pathname, pathname, pathname, 0, 0, 0, 0, 0, 0, 0 "
    "   FROM vfile"
    "  WHERE vid=%d"
    "    AND pathname NOT IN (SELECT fnp FROM fv UNION SELECT fnm FROM fv)",
    mid
  );

  /*
  ** Compute the file version ids for V, P, and M.
  ** Compute the file version ids for P and M.
  */
  db_multi_exec(
    "UPDATE fv SET"
    " idp=coalesce((SELECT id FROM vfile WHERE vid=%d AND pathname=fnp),0),"
    " ridp=coalesce((SELECT rid FROM vfile WHERE vid=%d AND pathname=fnp),0),"
    " idm=coalesce((SELECT id FROM vfile WHERE vid=%d AND pathname=fnm),0),"
    " ridm=coalesce((SELECT rid FROM vfile WHERE vid=%d AND pathname=fnm),0),"
    " ridm=coalesce((SELECT rid FROM vfile WHERE vid=%d AND pathname=fnm),0)",
    " idv=coalesce((SELECT id FROM vfile WHERE vid=%d AND pathname=fn),0),"
    " ridv=coalesce((SELECT rid FROM vfile WHERE vid=%d AND pathname=fn),0),"
    " chnged=coalesce((SELECT chnged FROM vfile"
                      " WHERE vid=%d AND pathname=fn),0)",
    pid, pid, mid, mid, vid, vid, vid
    pid, pid, mid, mid
  );

  if( debugFlag ){
    db_prepare(&q,
       "SELECT rowid, fn, fnp, fnm, chnged, ridv, ridp, ridm FROM fv"
    );
    while( db_step(&q)==SQLITE_ROW ){