FOSSology  4.7.1
Open Source License Compliance by Open Source Software
sqlstatements.h
Go to the documentation of this file.
1 /*
2  SPDX-FileCopyrightText: © 2012 Hewlett-Packard Development Company, L.P.
3  SPDX-FileCopyrightText: © 2015, 2018 Siemens AG
4 
5  SPDX-License-Identifier: GPL-2.0-only
6 */
7 
16 #ifndef SQLSTATEMENTS_H
17 #define SQLSTATEMENTS_H
18 
23  " SELECT column_name FROM information_schema.columns "
24  " WHERE table_catalog = '%s' "
25  " AND table_schema = 'public' "
26  " AND table_name = ";
27 
31 const char* url_checkout =
32  " SELECT conf_value FROM sysconfig "
33  " WHERE variablename = 'FOSSologyURL';";
34 
38 const char* select_upload_fk =
39  " SELECT j.job_upload_fk FROM job j"
40  " INNER JOIN jobqueue jq ON jq.jq_job_fk = j.job_pk"
41  " WHERE jq.jq_pk = %d;";
42 
46 const char* upload_common =
47  " SELECT * FROM jobqueue "
48  " LEFT JOIN job ON jq_job_fk = job_pk"
49  " WHERE job.job_upload_fk = %d;";
50 
54 const char* folder_name =
55  " SELECT folder_name, folder_pk FROM folder "
56  " LEFT JOIN foldercontents ON folder_pk = foldercontents.parent_fk "
57  " LEFT JOIN job ON child_id = job_upload_fk "
58  " LEFT JOIN jobqueue ON jq_job_fk = job_pk "
59  " WHERE jq_pk = %d;";
60 
65 const char* parent_folder_name =
66  " SELECT folder_name, folder_pk FROM folder "
67  " INNER JOIN foldercontents ON folder_pk=foldercontents.parent_fk "
68  " WHERE child_id = %d AND foldercontents_mode = 1;";
69 
73 const char* upload_name =
74  " SELECT upload_filename FROM upload "
75  " LEFT JOIN job ON upload_pk = job_upload_fk "
76  " LEFT JOIN jobqueue ON jq_job_fk = job_pk "
77  " WHERE jq_pk = %d;";
78 
82 const char* upload_pk =
83  " SELECT upload_fk, uploadtree_pk FROM uploadtree "
84  " LEFT JOIN job ON upload_fk = job_upload_fk "
85  " LEFT JOIN jobqueue ON jq_job_fk = job_pk "
86  " WHERE parent IS NULL"
87  " AND jq_pk = %d;";
88 
92 const char* jobsql_email =
93  " SELECT user_name, user_email, email_notify FROM users, upload "
94  " WHERE user_pk = user_fk "
95  " AND upload_pk = %d;";
96 
100 const char* jobsql_email_job =
101  " SELECT user_name, user_email, email_notify FROM users, job, jobqueue "
102  " WHERE user_pk = job_user_fk AND job_pk = jq_job_fk "
103  " AND jq_pk = %d;";
104 
105 /* job queue related sql */
118 const char* basic_checkout =
119  " SELECT jq.jq_pk, jq.jq_job_fk, jq.jq_type, jq.jq_host,"
120  " jq.jq_runonpfile, jq.jq_args, jq.jq_cmd_args,"
121  " u.user_pk, j.job_priority, j.job_group_fk AS group_pk"
122  " FROM jobqueue jq"
123  " INNER JOIN job j ON j.job_pk = jq.jq_job_fk"
124  " LEFT JOIN users u ON u.user_pk = j.job_user_fk"
125  " WHERE jq.jq_starttime IS NULL AND jq.jq_end_bits < 2"
126  " AND jq.jq_pk NOT IN (%s)"
127  " AND NOT EXISTS("
128  " SELECT 1 FROM jobdepends jd"
129  " INNER JOIN jobqueue dep ON dep.jq_pk = jd.jdep_jq_depends_fk"
130  " WHERE jd.jdep_jq_fk = jq.jq_pk"
131  " AND NOT (dep.jq_endtime IS NOT NULL AND dep.jq_end_bits < 2)"
132  " )"
133  " ORDER BY j.job_priority DESC"
134  " LIMIT %d;";
135 
139 const char* jobsql_started =
140  " UPDATE jobqueue "
141  " SET jq_starttime = now(), "
142  " jq_schedinfo ='%s.%d', "
143  " jq_endtext = 'Started' "
144  " WHERE jq_pk = %d;";
145 
149 const char* jobsql_complete =
150  " UPDATE jobqueue "
151  " SET jq_endtime = now(), "
152  " jq_end_bits = jq_end_bits | 1, "
153  " jq_schedinfo = null, "
154  " jq_endtext = 'Completed' "
155  " WHERE jq_pk = %d;";
156 
160 const char* jobsql_restart =
161  " UPDATE jobqueue "
162  " SET jq_endtext = 'Restarted', "
163  " jq_starttime = ( CASE "
164  " WHEN jq_starttime = CAST('9999-12-31' AS timestamp with time zone) "
165  " THEN null "
166  " ELSE jq_starttime "
167  " END ) "
168  " WHERE jq_pk = %d;";
169 
173 const char* jobsql_failed =
174  " UPDATE jobqueue "
175  " SET jq_endtime = now(), "
176  " jq_end_bits = jq_end_bits | 2, "
177  " jq_schedinfo = null, "
178  " jq_endtext = '%s' "
179  " WHERE jq_pk = %d;";
180 
196  " WITH RECURSIVE deps(jq_pk, depth) AS ("
197  " SELECT jdep_jq_fk, 1 FROM jobdepends"
198  " WHERE jdep_jq_depends_fk = %d"
199  " UNION ALL"
200  " SELECT jd.jdep_jq_fk, deps.depth + 1 FROM jobdepends jd"
201  " INNER JOIN deps ON deps.jq_pk = jd.jdep_jq_depends_fk"
202  " WHERE deps.depth < 20"
203  " )"
204  " UPDATE jobqueue"
205  " SET jq_endtime = now(),"
206  " jq_end_bits = jq_end_bits | 2,"
207  " jq_schedinfo = null,"
208  " jq_endtext = 'dependency failed'"
209  " WHERE jq_pk IN (SELECT jq_pk FROM deps)"
210  " AND jq_endtime IS NULL;";
211 
215 const char* jobsql_processed =
216  " Update jobqueue "
217  " SET jq_itemsprocessed = %d "
218  " WHERE jq_pk = %d;";
219 
223 const char* jobsql_paused =
224  " UPDATE jobqueue "
225  " SET jq_endtext = 'Paused', "
226  " jq_starttime = ( CASE "
227  " WHEN jq_starttime IS NULL "
228  " THEN CAST('9999-12-31' AS timestamp with time zone) "
229  " ELSE jq_starttime "
230  " END ) "
231  " WHERE jq_pk = %d;";
232 
236 const char* jobsql_log =
237  " UPDATE jobqueue "
238  " SET jq_log = '%s' "
239  " WHERE jq_pk = %d;";
240 
244 const char* jobsql_priority =
245  " UPDATE job "
246  " SET job_priority = %d "
247  " WHERE job_pk IN ( "
248  " SELECT jq_job_fk FROM jobqueue "
249  " WHERE jq_pk = %d);";
250 
254 const char* jobsql_anyrunnable =
255  " SELECT 1 FROM jobqueue jq"
256  " WHERE jq.jq_starttime IS NULL AND jq.jq_end_bits < 2"
257  " AND NOT EXISTS("
258  " SELECT 1 FROM jobdepends jd"
259  " INNER JOIN jobqueue dep ON dep.jq_pk = jd.jdep_jq_depends_fk"
260  " WHERE jd.jdep_jq_fk = jq.jq_pk"
261  " AND NOT (dep.jq_endtime IS NOT NULL AND dep.jq_end_bits < 2)"
262  " )"
263  " AND jq.jq_job_fk = (SELECT jq_job_fk FROM jobqueue WHERE jq_pk = %d)"
264  " LIMIT 1;";
265 
269 const char* jobsql_jobendbits =
270  " SELECT jq2.jq_pk, jq2.jq_end_bits"
271  " FROM jobqueue jq1"
272  " INNER JOIN jobqueue jq2 ON jq2.jq_job_fk = jq1.jq_job_fk"
273  " WHERE jq1.jq_pk = %d;";
274 
278 const char* jobsql_resetqueue =
279  "UPDATE jobqueue "
280  " SET jq_starttime=null, "
281  " jq_endtext=null, "
282  " jq_schedinfo=null "
283  " WHERE jq_endtime is NULL;";
284 
288 const char* jobsql_jobinfo =
289  " SELECT jq2.*"
290  " FROM jobqueue jq1"
291  " INNER JOIN jobqueue jq2 ON jq2.jq_job_fk = jq1.jq_job_fk"
292  " WHERE jq1.jq_pk = %d;";
293 
297 const char* smtp_values =
298  " SELECT conf_value, variablename FROM sysconfig "
299  " WHERE variablename LIKE 'SMTP%';";
300 
301 #endif /* SQLSTATEMENTS_H */
const char * upload_pk
Definition: sqlstatements.h:82
const char * jobsql_started
const char * check_scheduler_tables
Definition: sqlstatements.h:22
const char * jobsql_paused
const char * jobsql_failed
const char * upload_common
Definition: sqlstatements.h:46
const char * jobsql_jobinfo
const char * parent_folder_name
Definition: sqlstatements.h:65
const char * jobsql_processed
const char * jobsql_log
const char * jobsql_resetqueue
const char * basic_checkout
const char * jobsql_fail_dependents
const char * upload_name
Definition: sqlstatements.h:73
const char * smtp_values
const char * url_checkout
Definition: sqlstatements.h:31
const char * jobsql_restart
const char * jobsql_anyrunnable
const char * jobsql_complete
const char * folder_name
Definition: sqlstatements.h:54
const char * jobsql_priority
const char * jobsql_email
Definition: sqlstatements.h:92
const char * jobsql_jobendbits
const char * jobsql_email_job
const char * select_upload_fk
Definition: sqlstatements.h:38