"INSERT INTO temp1 SELECT Job.JobId,JobTdate "
"FROM Client,Job,JobMedia,Media,FileSet WHERE Client.ClientId=%s "
"AND Job.ClientId=%s "
- "AND Job.StartTime<'%s' "
+ "AND Job.StartTime < '%s' "
"AND Level='F' AND JobStatus IN ('T','W') AND Type='B' "
"AND JobMedia.JobId=Job.JobId "
"AND Media.Enabled=1 "
"FROM Job, File, ( "
"SELECT MAX(JobTDate) AS JobTDate, PathId, FilenameId "
"FROM ( "
- "SELECT JobTDate, PathId, FilenameId "
- "FROM File JOIN Job USING (JobId) "
- "WHERE JobId IN (%s) "
+ "SELECT JobTDate, PathId, FilenameId " /* Get all normal files */
+ "FROM File JOIN Job USING (JobId) " /* from selected backup */
+ "WHERE File.JobId IN (%s) "
"UNION ALL "
- "SELECT JobTDate, PathId, FilenameId "
- "FROM BaseFiles "
+ "SELECT JobTDate, PathId, FilenameId " /* Get all files from */
+ "FROM BaseFiles " /* BaseJob */
"JOIN File USING (FileId) "
"JOIN Job ON (BaseJobId = Job.JobId) "
- "WHERE BaseFiles.JobId IN (%s) "
- ") AS tmp GROUP BY PathId, FilenameId "
+ "WHERE BaseFiles.JobId IN (%s) " /* Use Max(JobTDate) to find */
+ ") AS tmp GROUP BY PathId, FilenameId " /* the latest file version */
") AS T1 "
-"WHERE (Job.JobId IN ( "
+"WHERE (Job.JobId IN ( " /* Security, we force JobId to be valid */
"SELECT DISTINCT BaseJobId FROM BaseFiles WHERE JobId IN (%s)) "
"OR Job.JobId IN (%s)) "
- "AND T1.JobTDate = Job.JobTDate "
- "AND Job.JobId = File.JobId "
+ "AND T1.JobTDate = Job.JobTDate " /* Join on JobTDate to get the orginal */
+ "AND Job.JobId = File.JobId " /* Job/File record */
"AND T1.PathId = File.PathId "
"AND T1.FilenameId = File.FilenameId",
"FROM ( "
"SELECT JobTDate, PathId, FilenameId "
"FROM File JOIN Job USING (JobId) "
- "WHERE JobId IN (%s) "
+ "WHERE File.JobId IN (%s) "
"UNION ALL "
"SELECT JobTDate, PathId, FilenameId "
"FROM BaseFiles "
"FROM ( "
"SELECT JobTDate, PathId, FilenameId "
"FROM File JOIN Job USING (JobId) "
- "WHERE JobId IN (%s) "
+ "WHERE File.JobId IN (%s) "
"UNION ALL "
"SELECT JobTDate, PathId, FilenameId "
"FROM BaseFiles "
"FROM ( " /* Choose the last version for each Path/Filename */
"SELECT max(JobTDate) AS JobTDate, PathId, FilenameId "
"FROM File JOIN Job USING (JobId) "
- "WHERE JobId IN (%s) "
+ "WHERE File.JobId IN (%s) "
"GROUP BY PathId, FilenameId "
") AS t1, Job AS j1, File AS f1 "
"WHERE t1.JobTDate = j1.JobTDate "
/* Postgresql */
"SELECT DISTINCT ON (FilenameId, PathId) StartTime, JobId, FileId, "
- "FileIndex, PathId, FilenameId, LStat "
+ "FileIndex, PathId, FilenameId, LStat, MD5 "
"FROM File JOIN Job USING (JobId) "
"WHERE JobId IN (%s) "
"ORDER BY FilenameId, PathId, StartTime DESC ",
"FROM ( "
"SELECT max(JobTDate) AS JobTDate, PathId, FilenameId "
"FROM File JOIN Job USING (JobId) "
- "WHERE JobId IN (%s) "
+ "WHERE File.JobId IN (%s) "
"GROUP BY PathId, FilenameId "
") AS t1, Job AS j1, File AS f1 "
"WHERE t1.JobTDate = j1.JobTDate "
"FROM ( "
"SELECT max(JobTDate) AS JobTDate, PathId, FilenameId "
"FROM File JOIN Job USING (JobId) "
- "WHERE JobId IN (%s) "
+ "WHERE File.JobId IN (%s) "
"GROUP BY PathId, FilenameId "
") AS t1, Job AS j1, File AS f1 "
"WHERE t1.JobTDate = j1.JobTDate "
"AND Path.PathId=File.Pathid "
"AND Filename.FilenameId=File.FilenameId "
"GROUP BY File.FileIndex "};
+
+const char *sql_get_max_connections[4] = {
+ /* Mysql */
+ "SHOW VARIABLES LIKE 'max_connections'",
+ /* Postgresql */
+ "SHOW max_connections",
+ /* SQLite */
+ "SELECT 0",
+ /* SQLite3 */
+ "SELECT 0"
+};
+
+/* Row number of the max_connections setting */
+const uint32_t sql_get_max_connections_index[4] = {
+ /* Mysql */
+ 1,
+ /* Postgresql */
+ 0,
+ /* SQLite */
+ 0,
+ /* SQLite3 */
+ 0
+};