]> git.sur5r.net Git - bacula/bacula/blob - bacula/patches/testing/project-accurate-backup.sql
ebl update
[bacula/bacula] / bacula / patches / testing / project-accurate-backup.sql
1
2 CREATE TABLE CurrentBackupId
3 (
4      BackupId          serial     not null,
5      ClientId          integer    not null,
6      JobName           text       not null,
7      FileSetId         integer    not null,
8      primary key (BackupId)
9 );
10
11 -- Serait bien de prendre la meme table pour
12 -- les File et le CurrentBackup...
13 -- Quand on prune, il faut purger ici aussi
14
15 CREATE TABLE CurrentBackup
16 (
17      FileId           integer    not null,
18      BackupId         integer    not null,
19      FullMark         char(1)    default 0,
20      MarkId           integer    default 0,
21      primary key (FileId)
22 );
23
24 CREATE INDEX currentbackup_fileid on CurrentBackup (BackupId);
25
26 -- On batch insert dans la table temporaire
27
28 -- il faut trouver les fichiers manquant
29 -- INSERT des nouveaux, UPDATE des anciens, SELECT pour trouver les deletes
30
31 -- UPDATE CurrentBackup SET MarkId = 1 
32 --  WHERE CurrentBackup.Id IN (
33 --        SELECT CurrentBackup.Id 
34 --          FROM      batch 
35 --               JOIN Filename USING (Name) 
36 --               JOIN Path     USING (Path)
37 --               JOIN CurrentBackup 
38 --                 ON (Filename.FilenameId = CurrentBackup.FilenameId 
39 --                     AND
40 --                     Path.PathId = CurrentBackup.PathId)
41 --          WHERE CurrentBackup.BackupId = 1
42 --      )
43 -- 
44 -- INSERT INTO CurrentBackup (BackupId, FullMark, PathId, FilenameId, LStat, MD5)
45 --   (SELECT CurrentBackup.BackupId, 'F', Path.PathId, Filename.FilenameId, 
46 --        batch.LStat, batch.MD5
47 --      FROM batch        
48 --           JOIN Path     USING (Path) 
49 --           JOIN Filename USING (Name) 
50 --           LEFT OUTER JOIN CurrentBackup 
51 --                 ON (Filename.FilenameId = CurrentBackup.FilenameId 
52 --                     AND Path.PathId = CurrentBackup.PathId 
53 --                     AND CurrentBackup.BackupId = 1)
54 --          WHERE BackupId IS NULL
55 --              
56 --   )
57 -- 
58 -- il faut trouver les fichiers modifies
59 -- Le champs LStat n'est plus le meme
60 -- SELECT * 
61 --   FROM      batch 
62 --        JOIN Path     USING (Path) 
63 --        JOIN Filename USING (Name) 
64 --        JOIN CurrentBackup USING (FilenameId, PathId)
65 -- 
66 --  WHERE CurrentBackup.LStat != batch.LStat
67 --    AND CurrentBackup.BackupId = 1
68 -- 
69 -- il faut mettre a jour la liste des fichiers
70