2 CREATE TABLE CurrentBackupId
4 BackupId serial not null,
5 ClientId integer not null,
7 FileSetId integer not null,
11 -- Serait bien de prendre la meme table pour
12 -- les File et le CurrentBackup...
13 -- Mais y'a des problemes pour les prunes
15 CREATE TABLE CurrentBackup
18 BackupId integer not null,
19 FullMark char(1) default 0,
20 PathId integer not null,
21 FilenameId integer not null,
22 MarkId integer not null default 0,
28 CREATE INDEX currentbackup_fileid on CurrentBackup (BackupId);
29 CREATE INDEX currentbackup_idx on currentbackup (FilenameId, PathId);
30 CREATE INDEX currentbackup_idx1 on currentbackup (FilenameId);
31 CREATE INDEX currentbackup_idx2 on currentbackup (PathId);
34 CREATE TEMPORARY TABLE batch (path varchar,
39 -- On batch insert dans la table temporaire
41 -- il faut trouver les fichiers manquant
42 -- INSERT des nouveaux, UPDATE des anciens, SELECT pour trouver les deletes
44 UPDATE CurrentBackup SET MarkId = 1
45 WHERE CurrentBackup.Id IN (
46 SELECT CurrentBackup.Id
48 JOIN Filename USING (Name)
49 JOIN Path USING (Path)
51 ON (Filename.FilenameId = CurrentBackup.FilenameId
53 Path.PathId = CurrentBackup.PathId)
54 WHERE CurrentBackup.BackupId = 1
57 INSERT INTO CurrentBackup (BackupId, FullMark, PathId, FilenameId, LStat, MD5)
58 (SELECT CurrentBackup.BackupId, 'F', Path.PathId, Filename.FilenameId,
59 batch.LStat, batch.MD5
61 JOIN Path USING (Path)
62 JOIN Filename USING (Name)
63 LEFT OUTER JOIN CurrentBackup
64 ON (Filename.FilenameId = CurrentBackup.FilenameId
65 AND Path.PathId = CurrentBackup.PathId
66 AND CurrentBackup.BackupId = 1)
67 WHERE BackupId IS NULL
71 -- il faut trouver les fichiers modifies
72 -- Le champs LStat n'est plus le meme
75 JOIN Path USING (Path)
76 JOIN Filename USING (Name)
77 JOIN CurrentBackup USING (FilenameId, PathId)
79 WHERE CurrentBackup.LStat != batch.LStat
80 AND CurrentBackup.BackupId = 1
82 -- il faut mettre a jour la liste des fichiers