]> andersk Git - moira.git/blob - server/queries2.c
4deca9399416ad4a43c24ef874bb173ed08d3617
[moira.git] / server / queries2.c
1 /* $Id$
2  *
3  * This file defines the query dispatch table
4  *
5  * Copyright (C) 1987-1998 by the Massachusetts Institute of Technology.
6  * For copying and distribution information, please see the file
7  * <mit-copyright.h>.
8  */
9
10 #include <mit-copyright.h>
11 #include "mr_server.h"
12 #include "query.h"
13
14 #include "mr_et.h"
15
16 /* VALOBJS
17  * These are commonly used validation objects, defined here so that they
18  * can be shared.
19  */
20
21 static struct valobj VOuser0[] = {
22   {V_ID, 0, USERS_TABLE, "login", "users_id", MR_USER},
23 };
24
25 static struct valobj VOmach0[] = {
26   {V_ID, 0, MACHINE_TABLE, "name", "mach_id", MR_MACHINE},
27 };
28
29 static struct valobj VOclu0[] = {
30   {V_ID, 0, CLUSTERS_TABLE, "name", "clu_id", MR_CLUSTER},
31 };
32
33 static struct valobj VOsnet0[] = {
34   {V_ID, 0, SUBNET_TABLE, "name", "snet_id", MR_SUBNET},
35 };
36
37 static struct valobj VOlist0[] = {
38   {V_ID, 0, LIST_TABLE, "name", "list_id", MR_LIST},
39 };
40
41 static struct valobj VOfilesys0[] = {
42   {V_ID, 0, FILESYS_TABLE, "label", "filsys_id", MR_FILESYS},
43 };
44
45 static struct valobj VOnum0[] = {
46   {V_NUM, 0},
47 };
48
49 /* Validations
50  * Commonly used validation records defined here so that they may
51  * be shared.
52  */
53
54 static struct validate VDmach = { VOmach0, 1 };
55
56 static struct validate VDfix_modby = {
57   0,
58   0,
59   0,
60   0,
61   0,
62   0,
63   0,
64   0,
65   followup_fix_modby,
66 };
67
68 /* Query data */
69
70 static char *galo2_fields[] = {
71   "login", "unix_uid", "shell", "last", "first", "middle",
72 };
73
74 static char *galo_fields[] = {
75   "login", "unix_uid", "shell", "winconsoleshell", "last", "first", "middle",
76 };
77
78 static char *gual2_fields[] = {
79   "login",
80   "login", "unix_uid", "shell", "last", "first", "middle", "status",
81   "clearid", "class", "comments", "signature", "secure",
82   "modtime", "modby", "modwith",
83 };
84
85 static char *gual_fields[] = {
86   "login",
87   "login", "unix_uid", "shell", "winconsoleshell", "last", "first", "middle", 
88   "status", "clearid", "class", "comments", "signature", "secure",
89   "modtime", "modby", "modwith",
90 };
91
92 static char *gubl2_fields[] = {
93   "login",
94   "login", "unix_uid", "shell", "last", "first", "middle", "status",
95   "clearid", "class", "modtime", "modby", "modwith",
96 };
97
98 static char *gubl_fields[] = {
99   "login",
100   "login", "unix_uid", "shell", "winconsoleshell", "last", "first", "middle", 
101   "status", "clearid", "class", "modtime", "modby", "modwith",
102 };
103
104 static struct validate gubl_validate =
105 {
106   0,
107   0,
108   0,
109   0,
110   0,
111   0,
112   access_login,
113   0,
114   followup_fix_modby,
115 };
116
117 static char *guau2_fields[] = {
118   "unix_uid",
119   "login", "unix_uid", "shell", "last", "first", "middle", "status",
120   "clearid", "class", "comments", "signature", "secure",
121   "modtime", "modby", "modwith",
122 };
123
124 static char *guau_fields[] = {
125   "unix_uid",
126   "login", "unix_uid", "shell", "winconsoleshell", "last", "first", "middle", 
127   "status", "clearid", "class", "comments", "signature", "secure",
128   "modtime", "modby", "modwith",
129 };
130
131 static char *guan2_fields[] = {
132   "first", "last",
133   "login", "unix_uid", "shell", "last", "first", "middle", "status",
134   "clearid", "class", "comments", "signature", "secure",
135   "modtime", "modby", "modwith",
136 };
137
138 static char *guan_fields[] = {
139   "first", "last",
140   "login", "unix_uid", "shell", "winconsoleshell", "last", "first", "middle", 
141   "status", "clearid", "class", "comments", "signature", "secure",
142   "modtime", "modby", "modwith",
143 };
144
145 static struct validate guan_validate =
146 {
147   0,
148   0,
149   0,
150   0,
151   0,
152   0,
153   0,
154   0,
155   followup_fix_modby,
156 };
157
158 static char *guac2_fields[] = {
159   "class",
160   "login", "unix_uid", "shell", "last", "first", "middle", "status",
161   "clearid", "class", "comments", "signature", "secure",
162   "modtime", "modby", "modwith",
163 };
164
165 static char *guac_fields[] = {
166   "class",
167   "login", "unix_uid", "shell", "winconsoleshell", "last", "first", "middle", 
168   "status", "clearid", "class", "comments", "signature", "secure",
169   "modtime", "modby", "modwith",
170 };
171
172 static char *guam2_fields[] = {
173   "clearid",
174   "login", "unix_uid", "shell", "last", "first", "middle", "status",
175   "clearid", "class", "comments", "signature", "secure",
176   "modtime", "modby", "modwith",
177 };
178
179 static char *guam_fields[] = {
180   "clearid",
181   "login", "unix_uid", "shell", "winconsoleshell", "last", "first", "middle", 
182   "status", "clearid", "class", "comments", "signature", "secure",
183   "modtime", "modby", "modwith",
184 };
185
186 static char *gubu2_fields[] = {
187   "unix_uid",
188   "login", "unix_uid", "shell", "last", "first", "middle", "status",
189   "clearid", "class", "modtime", "modby", "modwith",
190 };
191
192 static char *gubu_fields[] = {
193   "unix_uid",
194   "login", "unix_uid", "shell", "winconsoleshell", "last", "first", "middle", 
195   "status", "clearid", "class", "modtime", "modby", "modwith",
196 };
197
198 static struct validate gubu_validate =
199 {
200   VOnum0,
201   1,
202   0,
203   0,
204   0,
205   0,
206   access_login,
207   0,
208   followup_fix_modby,
209 };
210
211 static char *gubn2_fields[] = {
212   "first", "last",
213   "login", "unix_uid", "shell", "last", "first", "middle", "status",
214   "clearid", "class", "modtime", "modby", "modwith",
215 };
216
217 static char *gubn_fields[] = {
218   "first", "last",
219   "login", "unix_uid", "shell", "winconsoleshell", "last", "first", "middle", 
220   "status", "clearid", "class", "modtime", "modby", "modwith",
221 };
222
223 static struct validate gubn_validate =
224 {
225   0,
226   0,
227   0,
228   0,
229   0,
230   0,
231   0,
232   0,
233   followup_fix_modby,
234 };
235
236 static char *gubc2_fields[] = {
237   "class",
238   "login", "unix_uid", "shell", "last", "first", "middle", "status",
239   "clearid", "class", "modtime", "modby", "modwith",
240 };
241
242 static char *gubc_fields[] = {
243   "class",
244   "login", "unix_uid", "shell", "winconsoleshell", "last", "first", "middle", 
245   "status", "clearid", "class", "modtime", "modby", "modwith",
246 };
247
248 static char *gubm2_fields[] = {
249   "clearid",
250   "login", "unix_uid", "shell", "last", "first", "middle", "status",
251   "clearid", "class", "modtime", "modby", "modwith",
252 };
253
254 static char *gubm_fields[] = {
255   "clearid",
256   "login", "unix_uid", "shell", "winconsoleshell", "last", "first", 
257   "middle", "status", "clearid", "class", "modtime", "modby", "modwith",
258 };
259
260 static char *auac2_fields[] = {
261   "login", "unix_uid", "shell", "last", "first", "middle", "status",
262   "clearid", "class", "comments", "signature", "secure",
263 };
264
265 static char *auac_fields[] = {
266   "login", "unix_uid", "shell", "winconsoleshell", "last", "first", 
267   "middle", "status", "clearid", "class", "comments", "signature", "secure",
268 };
269
270 static struct valobj auac2_valobj[] = {
271   {V_CHAR, 0, USERS_TABLE, "login"},
272   {V_NUM, 1},
273   {V_CHAR, 2, USERS_TABLE, "shell"},
274   {V_CHAR, 3, USERS_TABLE, "last"},
275   {V_CHAR, 4, USERS_TABLE, "first"},
276   {V_CHAR, 5, USERS_TABLE, "middle"},
277   {V_NUM, 6},
278   {V_CHAR, 7, USERS_TABLE, "clearid"},
279   {V_TYPE, 8, 0, "class", 0, MR_BAD_CLASS},
280   {V_ID, 9, STRINGS_TABLE, "string", "string_id", MR_NO_MATCH},
281   {V_NUM, 11},
282 };
283
284 static struct valobj auac_valobj[] = {
285   {V_CHAR, 0, USERS_TABLE, "login"},
286   {V_NUM, 1},
287   {V_CHAR, 2, USERS_TABLE, "shell"},
288   {V_CHAR, 3, USERS_TABLE, "winconsoleshell"},
289   {V_CHAR, 4, USERS_TABLE, "last"},
290   {V_CHAR, 5, USERS_TABLE, "first"},
291   {V_CHAR, 6, USERS_TABLE, "middle"},
292   {V_NUM, 7},
293   {V_CHAR, 8, USERS_TABLE, "clearid"},
294   {V_TYPE, 9, 0, "class", 0, MR_BAD_CLASS},
295   {V_ID, 10, STRINGS_TABLE, "string", "string_id", MR_NO_MATCH},
296   {V_NUM, 12},
297 };
298
299 static struct validate auac2_validate = {
300   auac2_valobj,
301   11,
302   "login",
303   "login = '%s'",
304   1,
305   "users_id",
306   0,
307   setup_ausr,
308   followup_ausr,
309 };
310
311 static struct validate auac_validate = {
312   auac_valobj,
313   12,
314   "login",
315   "login = '%s'",
316   1,
317   "users_id",
318   0,
319   setup_ausr,
320   followup_ausr,
321 };
322
323 static struct validate ausr2_validate = {
324   auac2_valobj,
325   9,
326   "login",
327   "login = '%s'",
328   1,
329   "users_id",
330   0,
331   setup_ausr,
332   followup_ausr,
333 };
334
335 static struct validate ausr_validate = {
336   auac_valobj,
337   10,
338   "login",
339   "login = '%s'",
340   1,
341   "users_id",
342   0,
343   setup_ausr,
344   followup_ausr,
345 };
346
347 static char *rusr_fields[] = {
348   "unix_uid", "login", "pobox_type"
349 };
350
351 static struct valobj rusr_valobj[] = {
352   {V_NUM, 0},
353   {V_CHAR, 1, USERS_TABLE, "login"},
354 };
355
356 static struct validate rusr_validate = {
357   rusr_valobj,
358   2,
359   0,
360   0,
361   0,
362   0,
363   0,
364   register_user,
365   0,
366 };
367
368 static char *uuac2_fields[] = {
369   "login",
370   "newlogin", "unix_uid", "shell", "last", "first", "middle", "status",
371   "clearid", "class", "comments", "signature", "secure",
372 };
373
374 static char *uuac_fields[] = {
375   "login",
376   "newlogin", "unix_uid", "shell", "winconsoleshell", "last", "first", 
377   "middle", "status", "clearid", "class", "comments", "signature", "secure",
378 };
379
380 static struct valobj uuac2_valobj[] = {
381   {V_ID, 0, USERS_TABLE, "login", "users_id", MR_USER},
382   {V_RENAME, 1, USERS_TABLE, "login", "users_id", MR_NOT_UNIQUE},
383   {V_NUM, 2},
384   {V_CHAR, 3, USERS_TABLE, "shell"},
385   {V_CHAR, 4, USERS_TABLE, "first"},
386   {V_CHAR, 5, USERS_TABLE, "last"},
387   {V_CHAR, 6, USERS_TABLE, "middle"},
388   {V_NUM, 7},
389   {V_CHAR, 8, USERS_TABLE, "clearid"},
390   {V_TYPE, 9, 0, "class", 0, MR_BAD_CLASS},
391   {V_ID, 10, STRINGS_TABLE, "string", "string_id", MR_NO_MATCH},
392   {V_NUM, 12},
393 };
394   
395 static struct valobj uuac_valobj[] = {
396   {V_ID, 0, USERS_TABLE, "login", "users_id", MR_USER},
397   {V_RENAME, 1, USERS_TABLE, "login", "users_id", MR_NOT_UNIQUE},
398   {V_NUM, 2},
399   {V_CHAR, 3, USERS_TABLE, "shell"},
400   {V_CHAR, 4, USERS_TABLE, "winconsoleshell"},
401   {V_CHAR, 5, USERS_TABLE, "first"},
402   {V_CHAR, 6, USERS_TABLE, "last"},
403   {V_CHAR, 7, USERS_TABLE, "middle"},
404   {V_NUM, 8},
405   {V_CHAR, 9, USERS_TABLE, "clearid"},
406   {V_TYPE, 10, 0, "class", 0, MR_BAD_CLASS},
407   {V_ID, 11, STRINGS_TABLE, "string", "string_id", MR_NO_MATCH},
408   {V_NUM, 13},
409 };
410
411 static struct validate uuac2_validate = {
412   uuac2_valobj,
413   12,
414   0,
415   0,
416   0,
417   "users_id",
418   0,
419   setup_ausr,
420   set_modtime_by_id,
421 };
422
423 static struct validate uuac_validate = {
424   uuac_valobj,
425   13,
426   0,
427   0,
428   0,
429   "users_id",
430   0,
431   setup_ausr,
432   set_modtime_by_id,
433 };
434
435 static struct validate uusr2_validate = {
436   uuac2_valobj,
437   10,
438   0,
439   0,
440   0,
441   "users_id",
442   0,
443   setup_ausr,
444   set_modtime_by_id,
445 };
446
447 static struct validate uusr_validate = {
448   uuac_valobj,
449   11,
450   0,
451   0,
452   0,
453   "users_id",
454   0,
455   setup_ausr,
456   set_modtime_by_id,
457 };
458
459 static char *uush_fields[] = {
460   "login",
461   "shell",
462 };
463
464 static struct valobj uush_valobj[] = {
465   {V_ID, 0, USERS_TABLE, "login", "users_id", MR_USER},
466   {V_CHAR, 1, USERS_TABLE, "shell"},
467 };
468
469 static struct validate uush_validate = {
470   uush_valobj,
471   2,
472   0,
473   0,
474   0,
475   "users_id",
476   access_user,
477   0,
478   set_finger_modtime,
479 };
480
481 static char *uuws_fields[] = {
482   "login",
483   "winconsoleshell",
484 };
485
486 static struct valobj uuws_valobj[] = {
487   {V_ID, 0, USERS_TABLE, "login", "users_id", MR_USER},
488   {V_CHAR, 1, USERS_TABLE, "winconsoleshell"},
489 };
490
491 static struct validate uuws_validate = {
492   uuws_valobj,
493   2,
494   0,
495   0,
496   0,
497   "users_id",
498   access_user,
499   0,
500   set_finger_modtime,
501 };
502
503 static char *uust_fields[] = {
504   "login",
505   "status",
506 };
507
508 static char *uuss_fields[] = {
509   "login",
510   "secure",
511 };
512
513 static struct valobj uust_valobj[] = {
514   {V_ID, 0, USERS_TABLE, "login", "users_id", MR_USER},
515   {V_NUM, 1},
516   {V_NUM, 2},
517 };
518
519 static struct validate uust_validate = {
520   uust_valobj,
521   2,
522   0,
523   0,
524   0,
525   "users_id",
526   0,
527   0,
528   set_modtime_by_id,
529 };
530
531 static char *dusr_fields[] = {
532   "login",
533 };
534
535 static struct validate dusr_validate = {
536   VOuser0,
537   1,
538   0,
539   0,
540   0,
541   0,
542   0,
543   setup_dusr,
544   0,
545 };
546
547 static char *aurv_fields[] = {
548   "login", "reservation",
549 };
550
551 static struct validate aurv_validate = {
552   VOuser0,
553   1,
554   0,
555   0,
556   0,
557   "users_id",
558   0,
559   0,
560   do_user_reservation,
561 };
562
563 static char *gurv_fields[] = {
564   "login",
565   "reservation",
566 };
567
568 static struct validate gurv_validate = {
569   VOuser0,
570   1,
571   0,
572   0,
573   0,
574   0,
575   0,
576   0,
577   get_user_reservations,
578 };
579
580 static char *gubr_fields[] = {
581   "reservation",
582   "login",
583 };
584
585 static struct validate gubr_validate = {
586   0,
587   0,
588   0,
589   0,
590   0,
591   0,
592   0,
593   0,
594   get_user_by_reservation,
595 };
596
597 static char *gkum_fields[] = { "login", "kerberos",
598                                    "login", "kerberos" };
599
600 static char *akum_fields[] = { "login", "kerberos" };
601
602 static struct valobj akum_valobj[] =
603 {
604   {V_ID, 0, USERS_TABLE, "login", "users_id", MR_USER},
605   {V_ID, 1, STRINGS_TABLE, "string", "string_id", MR_NO_MATCH},
606 };
607
608 static struct validate akum_validate =
609 {
610   akum_valobj,
611   2,
612   "users_id",
613   "users_id = %d or string_id = %d",
614   2,
615   "users_id",
616   access_user,
617   0,
618   0,
619 };
620
621 static struct validate dkum_validate =
622 {
623   akum_valobj,
624   2,
625   "users_id",
626   "users_id = %d and string_id = %d",
627   2,
628   "users_id",
629   access_user,
630   0,
631   0,
632 };
633
634 static char *gfbl_fields[] = {
635   "login",
636   "login", "fullname", "nickname", "home_addr",
637   "home_phone", "office_addr", "office_phone", "department",
638   "affiliation", "modtime", "modby", "modwith",
639 };
640
641 static struct validate gfbl_validate = {
642   VOuser0,
643   1,
644   0,
645   0,
646   0,
647   0,
648   access_user,
649   0,
650   followup_fix_modby,
651 };
652
653 static char *ufbl_fields[] = {
654   "login",
655   "fullname", "nickname", "home_addr",
656   "home_phone", "office_addr", "office_phone", "department",
657   "affiliation",
658 };
659
660 static struct valobj ufbl_valobj[] = {
661   {V_ID, 0, USERS_TABLE, "login", "users_id", MR_USER},
662   {V_LEN, 1, USERS_TABLE, "fullname"},
663   {V_LEN, 2, USERS_TABLE, "nickname"},
664   {V_LEN, 3, USERS_TABLE, "home_addr"},
665   {V_LEN, 4, USERS_TABLE, "home_phone"},
666   {V_LEN, 5, USERS_TABLE, "office_addr"},
667   {V_LEN, 6, USERS_TABLE, "office_phone"},
668   {V_LEN, 7, USERS_TABLE, "department"},
669   {V_LEN, 8, USERS_TABLE, "affiliation"},
670 };
671
672 static struct validate ufbl_validate = {
673   ufbl_valobj,
674   9,
675   0,
676   0,
677   0,
678   0,
679   access_user,
680   0,
681   set_finger_modtime,
682 };
683
684 static char *gpob_fields[] = {
685   "login",
686   "login", "type", "box", "address", "modtime", "modby", "modwith",
687 };
688
689 static struct validate gpob_validate = {
690   VOuser0,
691   1,
692   "potype",
693   "potype != 'NONE' and users_id = %d",
694   1,
695   0,
696   access_user,
697   0,
698   followup_gpob,
699 };
700
701 static char *gpox_fields[] = {
702   "login", "type", "box",
703 };
704
705 static struct validate gpox_validate = {
706   0,
707   0,
708   0,
709   0,
710   0,
711   0,
712   0,
713   0,
714   followup_gpob,
715 };
716
717 static char *spob_fields[] = {
718   "login", "type", "box",
719 };
720
721 static struct valobj spob_valobj[] = {
722   {V_ID, 0, USERS_TABLE, "login", "users_id", MR_USER},
723   {V_TYPE, 1, 0, "pobox", 0, MR_TYPE},
724 };
725
726 static struct validate spob_validate =  /* SET_POBOX */
727 {
728   spob_valobj,
729   2,
730   0,
731   0,
732   0,
733   0,
734   access_spob,
735   0,
736   set_pobox,
737 };
738
739 static struct validate spop_validate =  /* SET_POBOX_POP */
740 {
741   VOuser0,
742   1,
743   0,
744   0,
745   0,
746   0,
747   access_user,
748   0,
749   set_pobox_pop,
750 };
751
752 static struct validate dpob_validate =  /* DELETE_POBOX */
753 {
754   VOuser0,
755   1,
756   0,
757   0,
758   0,
759   0,
760   access_user,
761   setup_dpob,
762   set_pobox_modtime,
763 };
764
765 static char *gmac_fields[] = {
766   "name",
767   "name", "type", "modtime", "modby", "modwith",
768 };
769
770 static char *ghst_fields[] = {
771   "name", "address", "location", "network",
772   "name", "vendor", "model", "os", "location", "contact", "use",
773   "status", "status_change", "network", "address", "ace_type",
774   "ace_name", "admin_comment", "ops_comment", "created", "creator",
775   "inuse", "modtime", "modby", "modwith",
776 };
777
778 static char *ghbh_fields[] = {
779   "hwaddr",
780   "name", "vendor", "model", "os", "location", "contact", "use",
781   "status", "status_change", "network", "address", "ace_type",
782   "ace_name", "admin_comment", "ops_comment", "created", "creator",
783   "inuse", "modtime", "modby", "modwith",
784 };
785
786 static struct validate ghst_validate = {
787   0,
788   0,
789   0,
790   0,
791   0,
792   0,
793   access_host,
794   0,
795   followup_ghst,
796 };
797
798 static char *ghha_fields[] = {
799   "name",
800   "hwaddr",
801 };
802
803 static char *ahst_fields[] = {
804   "name", "vendor", "model", "os", "location", "contact", "use",
805   "status", "subnet", "address", "ace_type", "ace_name",
806   "admin_comment", "ops_comment",
807 };
808
809 static struct valobj ahst_valobj[] = {
810   {V_CHAR, 0, MACHINE_TABLE, "name"},
811   {V_CHAR, 1, MACHINE_TABLE, "vendor"},
812   {V_CHAR, 2, MACHINE_TABLE, "model"},
813   {V_CHAR, 3, MACHINE_TABLE, "os"},
814   {V_CHAR, 4, MACHINE_TABLE, "location"},
815   {V_CHAR, 5, MACHINE_TABLE, "contact"},
816   {V_NUM, 6},
817   {V_NUM, 7},
818   {V_ID, 8, SUBNET_TABLE, "name", "snet_id", MR_SUBNET},
819   {V_TYPE, 10, 0, "ace_type", 0, MR_ACE},
820   {V_TYPEDATA, 11, 0, 0, 0, MR_ACE},
821   {V_ID, 12, STRINGS_TABLE, "string", "string_id", MR_NO_MATCH},
822   {V_ID, 13, STRINGS_TABLE, "string", "string_id", MR_NO_MATCH},
823 };
824
825 static struct validate ahst_validate = {
826   ahst_valobj,
827   13,
828   "name",
829   "name = UPPER('%s')",
830   1,
831   "mach_id",
832   access_host,
833   setup_ahst,
834   set_uppercase_modtime,
835 };
836
837 static char *uhst_fields[] = {
838   "name",
839   "newname", "vendor", "model", "os", "location", "contact", "use",
840   "status", "subnet", "address", "ace_type", "ace_name",
841   "admin_comment", "ops_comment",
842 };
843
844 static struct valobj uhst_valobj[] = {
845   {V_CHAR, 0, MACHINE_TABLE, "name"},
846   {V_ID, 0, MACHINE_TABLE, "name", "mach_id", MR_MACHINE},
847   {V_RENAME, 1, MACHINE_TABLE, "name", "mach_id", MR_NOT_UNIQUE},
848   {V_CHAR, 2, MACHINE_TABLE, "vendor"},
849   {V_CHAR, 3, MACHINE_TABLE, "model"},
850   {V_CHAR, 4, MACHINE_TABLE, "os"},
851   {V_CHAR, 5, MACHINE_TABLE, "location"},
852   {V_CHAR, 6, MACHINE_TABLE, "contact"},
853   {V_NUM, 7},
854   {V_NUM, 8},
855   {V_ID, 9, SUBNET_TABLE, "name", "snet_id", MR_SUBNET},
856   {V_TYPE, 11, 0, "ace_type", 0, MR_ACE},
857   {V_TYPEDATA, 12, 0, 0, 0, MR_ACE},
858   {V_ID, 13, STRINGS_TABLE, "string", "string_id", MR_NO_MATCH},
859   {V_ID, 14, STRINGS_TABLE, "string", "string_id", MR_NO_MATCH},
860 };
861
862 static struct validate uhst_validate = {
863   uhst_valobj,
864   15,
865   0,
866   0,
867   0,
868   "mach_id",
869   access_host,
870   setup_ahst,
871   set_modtime_by_id,
872 };
873
874 static char *uhha_fields[] = {
875   "name",
876   "hwaddr"
877 };
878
879 static struct valobj uhha_valobj[] = {
880   {V_ID, 0, MACHINE_TABLE, "name", "mach_id", MR_MACHINE},
881   {V_CHAR, 1, MACHINE_TABLE, "hwaddr"},
882 };
883
884 static struct validate uhha_validate = {
885   uhha_valobj,
886   2,
887   0,
888   0,
889   0,
890   "mach_id",
891   0,
892   setup_uhha,
893   set_modtime_by_id,
894 };
895
896 static char *dhst_fields[] = {
897   "name",
898 };
899
900 static struct validate dhst_validate = {
901   VOmach0,
902   1,
903   0,
904   0,
905   0,
906   0,
907   0,
908   setup_dmac,
909   0,
910 };
911
912 static char *ghal_fields[] = {
913   "alias", "canonical_hostname",
914   "alias", "canonical_hostname"
915 };
916
917 static struct validate ghal_validate = {
918   0,
919   0,
920   0,
921   0,
922   0,
923   0,
924   access_ahal,
925   0,
926   0,
927 };
928
929 static struct valobj ahal_valobj[] = {
930   {V_CHAR, 0, HOSTALIAS_TABLE, "name"},
931   {V_ID, 1, MACHINE_TABLE, "name", "mach_id", MR_MACHINE},
932 };
933
934 static struct validate ahal_validate = {
935   ahal_valobj,
936   2,
937   "name",
938   "name = UPPER('%s')",
939   1,
940   "mach_id",
941   access_ahal,
942   setup_ahal,
943   0,
944 };
945
946 static struct valobj dhal_valobj[] = {
947   {V_ID, 1, MACHINE_TABLE, "name", "mach_id", MR_MACHINE},
948 };
949
950 static struct validate dhal_validate = {
951   dhal_valobj,
952   1,
953   "name",
954   "name = UPPER('%s') AND mach_id = %d",
955   2,
956   "mach_id",
957   access_ahal,
958   0,
959   0,
960 };
961
962 static char *gsnt_fields[] = {
963   "name",
964   "name", "description", "address", "mask", "low", "high", "prefix",
965   "ace_type", "ace_name", "modtime", "modby", "modwith"
966 };
967
968 static struct validate gsnt_validate = {
969   0,
970   0,
971   0,
972   0,
973   0,
974   0,
975   access_snt,
976   0,
977   followup_gsnt,
978 };
979
980 static char *asnt_fields[] = {
981   "name", "description", "address", "mask", "low", "high", "prefix",
982   "ace_type", "ace_name",
983 };
984
985 static struct valobj asnt_valobj[] = {
986   {V_CHAR, 0, SUBNET_TABLE, "name"},
987   {V_LEN, 1, SUBNET_TABLE, "description"},
988   {V_NUM, 2},
989   {V_NUM, 3},
990   {V_NUM, 4},
991   {V_NUM, 5},
992   {V_LEN, 6, SUBNET_TABLE, "prefix"},
993   {V_TYPE, 7, 0, "ace_type", 0, MR_ACE},
994   {V_TYPEDATA, 8, 0, 0, 0, MR_ACE},
995 };
996
997 static struct validate asnt_validate =
998 {
999   asnt_valobj,
1000   9,
1001   "name",
1002   "name = UPPER('%s')",
1003   1,
1004   "snet_id",
1005   0,
1006   prefetch_value,
1007   set_uppercase_modtime,
1008 };
1009
1010 static char *usnt_fields[] = {
1011   "name",
1012   "newname", "description", "address", "mask", "low", "high", "prefix",
1013   "ace_type", "ace_name",
1014 };
1015
1016 static struct valobj usnt_valobj[] = {
1017   {V_ID, 0, SUBNET_TABLE, "name", "snet_id", MR_NO_MATCH},
1018   {V_RENAME, 1, SUBNET_TABLE, "name", "snet_id", MR_NOT_UNIQUE},
1019   {V_LEN, 2, SUBNET_TABLE, "description"},
1020   {V_NUM, 3},
1021   {V_NUM, 4},
1022   {V_NUM, 5},
1023   {V_NUM, 6},
1024   {V_LEN, 7, SUBNET_TABLE, "prefix"},
1025   {V_TYPE, 8, 0, "ace_type", 0, MR_ACE},
1026   {V_TYPEDATA, 9, 0, 0, 0, MR_ACE},
1027 };
1028
1029 static struct validate usnt_validate =
1030 {
1031   usnt_valobj,
1032   10,
1033   "name",
1034   "snet_id = %d",
1035   1,
1036   "snet_id",
1037   0,
1038   0,
1039   set_modtime_by_id,
1040 };
1041
1042 static char *dsnt_fields[] = {
1043   "name",
1044 };
1045
1046 static struct validate dsnt_validate = {
1047   VOsnet0,
1048   1,
1049   0,
1050   0,
1051   0,
1052   0,
1053   0,
1054   setup_dsnt,
1055   0,
1056 };
1057
1058 static char *gclu_fields[] = {
1059   "name",
1060   "name", "description", "location", "modtime", "modby", "modwith",
1061 };
1062
1063 static char *aclu_fields[] = {
1064   "name", "description", "location",
1065 };
1066
1067 static struct valobj aclu_valobj[] = {
1068   {V_CHAR, 0, CLUSTERS_TABLE, "name"},
1069   {V_LEN, 1, CLUSTERS_TABLE, "description"},
1070   {V_LEN, 2, CLUSTERS_TABLE, "location"},
1071 };
1072
1073 static struct validate aclu_validate =
1074 {
1075   aclu_valobj,
1076   3,
1077   "name",
1078   "name = '%s'",
1079   1,
1080   "clu_id",
1081   0,
1082   prefetch_value,
1083   set_modtime,
1084 };
1085
1086 static char *uclu_fields[] = {
1087   "name",
1088   "newname", "description", "location",
1089 };
1090
1091 static struct valobj uclu_valobj[] = {
1092   {V_ID, 0, CLUSTERS_TABLE, "name", "clu_id", MR_CLUSTER},
1093   {V_RENAME, 1, CLUSTERS_TABLE, "name", "clu_id", MR_NOT_UNIQUE},
1094   {V_LEN, 2, CLUSTERS_TABLE, "description"},
1095   {V_LEN, 3, CLUSTERS_TABLE, "location"},
1096 };
1097
1098 static struct validate uclu_validate = {
1099   uclu_valobj,
1100   4,
1101   0,
1102   0,
1103   0,
1104   "clu_id",
1105   0,
1106   0,
1107   set_modtime_by_id,
1108 };
1109
1110 static char *dclu_fields[] = {
1111   "name",
1112 };
1113
1114 static struct validate dclu_validate = {
1115   VOclu0,
1116   1,
1117   0,
1118   0,
1119   0,
1120   0,
1121   0,
1122   setup_dclu,
1123   0,
1124 };
1125
1126 static char *gmcm_fields[] = {
1127   "machine", "cluster",
1128   "machine", "cluster",
1129 };
1130
1131 static struct valobj amtc_valobj[] =    /* ADD_MACHINE_TO_CLUSTER */
1132 {                                       /* DELETE_MACHINE_FROM_CLUSTER */
1133   {V_ID, 0, MACHINE_TABLE, "name", "mach_id", MR_MACHINE},
1134   {V_ID, 1, CLUSTERS_TABLE, "name", "clu_id", MR_CLUSTER},
1135 };
1136
1137 static struct validate amtc_validate = /* for amtc and dmfc */
1138 {
1139   amtc_valobj,
1140   2,
1141   "mach_id",
1142   "mach_id = %d and clu_id = %d",
1143   2,
1144   0,
1145   0,
1146   0,
1147   set_mach_modtime_by_id,
1148 };
1149
1150 static char *gcld_fields[] = {
1151   "cluster", "serv_label",
1152   "cluster", "serv_label", "serv_cluster",
1153 };
1154
1155 static char *acld_fields[] = {
1156   "cluster", "serv_label", "serv_cluster",
1157 };
1158
1159 static struct valobj acld_valobj[] =
1160 {
1161   {V_ID, 0, CLUSTERS_TABLE, "name", "clu_id", MR_CLUSTER},
1162   {V_CHAR, 1, SVC_TABLE, "serv_label"},
1163   {V_CHAR, 2, SVC_TABLE, "serv_cluster"}
1164 };
1165
1166 static struct validate acld_validate =
1167 {
1168   acld_valobj,
1169   3,
1170   "clu_id",
1171   "clu_id = %d AND serv_label = '%s' AND serv_cluster = '%s'",
1172   3,
1173   0,
1174   0,
1175   0,
1176   set_cluster_modtime_by_id,
1177 };
1178
1179 static struct validate dcld_validate =
1180 {
1181   VOclu0,
1182   1,
1183   "clu_id",
1184   "clu_id = %d AND serv_label = '%s' AND serv_cluster = '%s'",
1185   3,
1186   0,
1187   0,
1188   0,
1189   set_cluster_modtime_by_id,
1190 };
1191
1192 static char *glin2_fields[] = {
1193   "name",
1194   "name", "active", "publicflg", "hidden", "maillist", "grouplist", "gid",
1195   "ace_type", "ace_name", "description", "modtime", "modby", "modwith",
1196 };
1197
1198 static char *glin3_fields[] = {
1199   "name",
1200   "name", "active", "publicflg", "hidden", "maillist", "grouplist", "gid",
1201   "nfsgroup", "ace_type", "ace_name", "description", "modtime", "modby", 
1202   "modwith",
1203 };
1204
1205 static char *glin_fields[] = {
1206   "name",
1207   "name", "active", "publicflg", "hidden", "maillist", "grouplist", "gid",
1208   "nfsgroup", "ace_type", "ace_name", "memace_type", "memace_name", 
1209   "description", "modtime", "modby", "modwith",
1210 };
1211
1212 static struct validate glin_validate = {
1213   0,
1214   0,
1215   0,
1216   0,
1217   0,
1218   0,
1219   access_vis_list_by_name,
1220   0,
1221   followup_glin,
1222 };
1223
1224 static char *alis2_fields[] = {
1225   "name", "active", "publicflg", "hidden", "maillist", "grouplist", "gid",
1226   "ace_type", "ace_name", "description",
1227 };
1228
1229 static struct valobj alis2_valobj[] = {
1230   {V_CHAR, 0, LIST_TABLE, "name"},
1231   {V_NUM, 1},
1232   {V_NUM, 2},
1233   {V_NUM, 3},
1234   {V_NUM, 4},
1235   {V_NUM, 5},
1236   {V_NUM, 6},
1237   {V_TYPE, 7, 0, "ace_type", 0, MR_ACE},
1238   {V_TYPEDATA, 8, 0, 0, "list_id", MR_ACE},
1239   {V_LEN, 9, LIST_TABLE, "description"},
1240 };
1241
1242 static struct validate alis2_validate = {
1243   alis2_valobj,
1244   10,
1245   "name",
1246   "name = '%s'",
1247   1,
1248   "list_id",
1249   0,
1250   setup_alis,
1251   set_modtime,
1252 };
1253
1254 static char *alis3_fields[] = {
1255   "name", "active", "publicflg", "hidden", "maillist", "grouplist", "gid",
1256   "nfsgroup", "ace_type", "ace_name", "description",
1257 };
1258
1259 static struct valobj alis3_valobj[] = {
1260   {V_CHAR, 0, LIST_TABLE, "name"},
1261   {V_NUM, 1},
1262   {V_NUM, 2},
1263   {V_NUM, 3},
1264   {V_NUM, 4},
1265   {V_NUM, 5},
1266   {V_NUM, 6},
1267   {V_NUM, 7},
1268   {V_TYPE, 8, 0, "ace_type", 0, MR_ACE},
1269   {V_TYPEDATA, 9, 0, 0, "list_id", MR_ACE},
1270   {V_LEN, 10, LIST_TABLE, "description"},
1271 };
1272
1273 static struct validate alis3_validate = {
1274   alis3_valobj,
1275   11,
1276   "name",
1277   "name = '%s'",
1278   1,
1279   "list_id",
1280   0,
1281   setup_alis,
1282   set_modtime,
1283 };
1284
1285 static char *alis_fields[] = {
1286   "name", "active", "publicflg", "hidden", "maillist", "grouplist", "gid",
1287   "nfsgroup", "ace_type", "ace_name", "memace_type", "memace_name", 
1288   "description",
1289 };
1290
1291 static struct valobj alis_valobj[] = {
1292   {V_CHAR, 0, LIST_TABLE, "name"},
1293   {V_NUM, 1},
1294   {V_NUM, 2},
1295   {V_NUM, 3},
1296   {V_NUM, 4},
1297   {V_NUM, 5},
1298   {V_NUM, 6},
1299   {V_NUM, 7},
1300   {V_TYPE, 8, 0, "ace_type", 0, MR_ACE},
1301   {V_TYPEDATA, 9, 0, 0, "list_id", MR_ACE},
1302   {V_TYPE, 10, 0, "ace_type", 0, MR_ACE},
1303   {V_TYPEDATA, 11, 0, 0, "list_id", MR_ACE},
1304   {V_LEN, 12, LIST_TABLE, "description"},
1305 };
1306
1307 static struct validate alis_validate = {
1308   alis_valobj,
1309   13,
1310   "name",
1311   "name = '%s'",
1312   1,
1313   "list_id",
1314   0,
1315   setup_alis,
1316   set_modtime,
1317 };
1318
1319 static char *ulis2_fields[] = {
1320   "name",
1321   "newname", "active", "publicflg", "hidden", "maillist", "grouplist", "gid",
1322   "ace_type", "ace_name", "description",
1323 };
1324
1325 static struct valobj ulis2_valobj[] = {
1326   {V_ID, 0, LIST_TABLE, "name", "list_id", MR_LIST},
1327   {V_RENAME, 1, LIST_TABLE, "name", "list_id", MR_NOT_UNIQUE},
1328   {V_NUM, 2},
1329   {V_NUM, 3},
1330   {V_NUM, 4},
1331   {V_NUM, 5},
1332   {V_NUM, 6},
1333   {V_NUM, 7},
1334   {V_TYPE, 8, 0, "ace_type", 0, MR_ACE},
1335   {V_TYPEDATA, 9, 0, 0, "list_id", MR_ACE},
1336   {V_LEN, 10, LIST_TABLE, "description"},
1337 };
1338
1339 static struct validate ulis2_validate = {
1340   ulis2_valobj,
1341   11,
1342   "name",
1343   "list_id = %d",
1344   1,
1345   "list_id",
1346   access_list,
1347   setup_alis,
1348   set_modtime_by_id,
1349 };
1350
1351 static char *ulis3_fields[] = {
1352   "name",
1353   "newname", "active", "publicflg", "hidden", "maillist", "grouplist", "gid", 
1354   "nfsgroup", "ace_type", "ace_name", "description",
1355 };
1356
1357 static struct valobj ulis3_valobj[] = {
1358   {V_ID, 0, LIST_TABLE, "name", "list_id", MR_LIST},
1359   {V_RENAME, 1, LIST_TABLE, "name", "list_id", MR_NOT_UNIQUE},
1360   {V_NUM, 2},
1361   {V_NUM, 3},
1362   {V_NUM, 4},
1363   {V_NUM, 5},
1364   {V_NUM, 6},
1365   {V_NUM, 7},
1366   {V_NUM, 8},
1367   {V_TYPE, 9, 0, "ace_type", 0, MR_ACE},
1368   {V_TYPEDATA, 10, 0, 0, "list_id", MR_ACE},
1369   {V_LEN, 11, LIST_TABLE, "description"},
1370 };
1371
1372 static struct validate ulis3_validate = {
1373   ulis3_valobj,
1374   12,
1375   "name", 
1376   "list_id = %d",
1377   1,
1378   "list_id",
1379   access_list,
1380   setup_alis,
1381   set_modtime_by_id,
1382 };
1383
1384 static char *ulis_fields[] = {
1385   "name",
1386   "newname", "active", "publicflg", "hidden", "maillist", "grouplist", "gid",
1387   "nfsgroup", "ace_type", "ace_name", "memace_type", "memace_name",
1388   "description",
1389 };
1390
1391 static struct valobj ulis_valobj[] = {
1392   {V_ID, 0, LIST_TABLE, "name", "list_id", MR_LIST},
1393   {V_RENAME, 1, LIST_TABLE, "name", "list_id", MR_NOT_UNIQUE},
1394   {V_NUM, 2},
1395   {V_NUM, 3},
1396   {V_NUM, 4},
1397   {V_NUM, 5},
1398   {V_NUM, 6},
1399   {V_NUM, 7},
1400   {V_NUM, 8},
1401   {V_TYPE, 9, 0, "ace_type", 0, MR_ACE},
1402   {V_TYPEDATA, 10, 0, 0, "list_id", MR_ACE},
1403   {V_TYPE, 11, 0, "ace_type", 0, MR_ACE},
1404   {V_TYPEDATA, 12, 0, 0, "list_id", MR_ACE},
1405   {V_LEN, 13, LIST_TABLE, "description"},
1406 };
1407
1408 static struct validate ulis_validate = {
1409   ulis_valobj,
1410   14,
1411   "name",
1412   "list_id = %d",
1413   1,
1414   "list_id",
1415   access_list,
1416   setup_alis,
1417   set_modtime_by_id,
1418 };
1419
1420 static char *dlis_fields[] = {
1421   "name",
1422 };
1423
1424 static struct validate dlis_validate = {
1425   VOlist0,
1426   1,
1427   "name",
1428   "list_id = %d",
1429   1,
1430   0,
1431   access_list,
1432   setup_dlis,
1433   0,
1434 };
1435
1436 static char *amtl_fields[] = {
1437   "list_name", "member_type", "member_name",
1438 };
1439
1440 static char *atml_fields[] = {
1441   "list_name", "member_type", "member_name", "tag",
1442 };
1443
1444 static struct valobj amtl_valobj[] = {
1445   {V_ID, 0, LIST_TABLE, "name", "list_id", MR_LIST},
1446   {V_TYPE, 1, 0, "member", 0, MR_TYPE},
1447   {V_TYPEDATA, 2, 0, 0, 0, MR_NO_MATCH},
1448   {V_ID, 3, STRINGS_TABLE, "string", "string_id", MR_NO_MATCH},
1449 };
1450
1451 static struct validate amtl_validate =
1452 {
1453   amtl_valobj,
1454   3,
1455   0,
1456   0,
1457   0,
1458   0,
1459   access_list,
1460   0,
1461   add_member_to_list,
1462 };
1463
1464 static struct validate atml_validate =
1465 {
1466   amtl_valobj,
1467   4,
1468   0,
1469   0,
1470   0,
1471   0,
1472   access_list,
1473   0,
1474   add_member_to_list,
1475 };
1476
1477 static struct validate tmol_validate =
1478 {
1479   amtl_valobj,
1480   4,
1481   0,
1482   0,
1483   0,
1484   0,
1485   access_list,
1486   0,
1487   tag_member_of_list,
1488 };
1489
1490 static struct validate dmfl_validate =
1491 {
1492   amtl_valobj,
1493   3,
1494   0,
1495   0,
1496   0,
1497   0,
1498   access_list,
1499   0,
1500   delete_member_from_list,
1501 };
1502
1503 static char *gaus_fields[] = {
1504   "ace_type", "ace_name",
1505   "use_type", "use_name",
1506 };
1507
1508 static struct valobj gaus_valobj[] = {
1509   {V_TYPE, 0, 0, "gaus", 0, MR_TYPE},
1510   {V_TYPEDATA, 1, 0, 0, 0, MR_NO_MATCH},
1511 };
1512
1513 static struct validate gaus_validate = {
1514   gaus_valobj,
1515   2,
1516   0,
1517   0,
1518   0,
1519   0,
1520   access_member,
1521   0,
1522   get_ace_use,
1523 };
1524
1525 static char *ghbo_fields[] = {
1526   "ace_type", "ace_name",
1527   "name",
1528 };
1529
1530 static struct valobj ghbo_valobj[] = {
1531   {V_TYPE, 0, 0, "gaus", 0, MR_TYPE},
1532   {V_TYPEDATA, 1, 0, 0, 0, MR_NO_MATCH},
1533 };
1534
1535 static struct validate ghbo_validate = {
1536   ghbo_valobj,
1537   2,
1538   0,
1539   0,
1540   0,
1541   0,
1542   access_member,
1543   0,
1544   get_host_by_owner,
1545 };
1546
1547 static char *qgli_fields[] = {
1548   "active", "publicflg", "hidden", "maillist", "grouplist",
1549   "list",
1550 };
1551
1552 static struct valobj qgli_valobj[] = {
1553   {V_TYPE, 0, 0, "boolean", 0, MR_TYPE},
1554   {V_TYPE, 1, 0, "boolean", 0, MR_TYPE},
1555   {V_TYPE, 2, 0, "boolean", 0, MR_TYPE},
1556   {V_TYPE, 3, 0, "boolean", 0, MR_TYPE},
1557   {V_TYPE, 4, 0, "boolean", 0, MR_TYPE},
1558 };
1559
1560 static struct validate qgli_validate = {
1561   qgli_valobj,
1562   5,
1563   0,
1564   0,
1565   0,
1566   0,
1567   access_qgli,
1568   0,
1569   qualified_get_lists,
1570 };
1571
1572 static char *gmol_fields[] = {
1573   "list_name",
1574   "member_type", "member_name",
1575 };
1576
1577 static char *gtml_fields[] = {
1578   "list_name",
1579   "member_type", "member_name", "tag",
1580 };
1581
1582 static struct validate gmol_validate = {
1583   VOlist0,
1584   1,
1585   0,
1586   0,
1587   0,
1588   0,
1589   access_visible_list,
1590   0,
1591   get_members_of_list,
1592 };
1593
1594 static char *glom_fields[] = {
1595   "member_type", "member_name",
1596   "list_name", "active", "publicflg", "hidden", "maillist", "grouplist",
1597 };
1598
1599 static struct valobj glom_valobj[] = {
1600   {V_TYPE, 0, 0, "rmember", 0, MR_TYPE},
1601   {V_TYPEDATA, 1, 0, 0, 0, MR_NO_MATCH},
1602 };
1603
1604 static struct validate glom_validate = {
1605   glom_valobj,
1606   2,
1607   0,
1608   0,
1609   0,
1610   0,
1611   access_member,
1612   0,
1613   get_lists_of_member,
1614 };
1615
1616 static char *cmol_fields[] = {
1617   "list_name",
1618   "count",
1619 };
1620
1621 static struct validate cmol_validate = {
1622   VOlist0,
1623   1,
1624   0,
1625   0,
1626   0,
1627   0,
1628   access_visible_list,
1629   0,
1630   count_members_of_list,
1631 };
1632
1633 static char *gsin_fields[] = {
1634   "service",
1635   "service", "update_int", "target_file", "script", "dfgen", "dfcheck",
1636   "type", "enable", "inprogress", "harderror", "errmsg",
1637   "ace_type", "ace_name", "modtime", "modby", "modwith",
1638 };
1639
1640 static struct validate gsin_validate =
1641 {
1642   0,
1643   0,
1644   0,
1645   0,
1646   0,
1647   0,
1648   access_service,
1649   0,
1650   followup_gsin,
1651 };
1652
1653 static char *qgsv_fields[] = {
1654   "enable", "inprogress", "harderror",
1655   "service",
1656 };
1657
1658 static struct valobj qgsv_valobj[] = {
1659   {V_TYPE, 0, 0, "boolean", 0, MR_TYPE},
1660   {V_TYPE, 1, 0, "boolean", 0, MR_TYPE},
1661   {V_TYPE, 2, 0, "boolean", 0, MR_TYPE},
1662 };
1663
1664 static struct validate qgsv_validate = {
1665   qgsv_valobj,
1666   3,
1667   0,
1668   0,
1669   0,
1670   0,
1671   0,
1672   0,
1673   qualified_get_server,
1674 };
1675
1676 static char *asin_fields[] = {
1677   "service", "update_int", "target_file", "script", "type", "enable",
1678   "ace_type", "ace_name",
1679 };
1680
1681 static struct valobj asin_valobj[] = {
1682   {V_CHAR, 0, SERVERS_TABLE, "name"},
1683   {V_NUM, 1},
1684   {V_LEN, 2, SERVERS_TABLE, "target_file"},
1685   {V_LEN, 3, SERVERS_TABLE, "script"},
1686   {V_TYPE, 4, 0, "service", 0, MR_TYPE},
1687   {V_NUM, 5},
1688   {V_TYPE, 6, 0, "ace_type", 0, MR_ACE},
1689   {V_TYPEDATA, 7, 0, 0, 0, MR_ACE},
1690 };
1691
1692 static struct validate asin_validate =  /* for asin, usin */
1693 {
1694   asin_valobj,
1695   8,
1696   "name",
1697   "name = UPPER('%s')",
1698   1,
1699   0,
1700   0,
1701   0,
1702   set_uppercase_modtime,
1703 };
1704
1705 static struct validate rsve_validate = {
1706   asin_valobj,
1707   1,
1708   "name",
1709   "name = UPPER('%s')",
1710   1,
1711   0,
1712   access_service,
1713   0,
1714   set_uppercase_modtime,
1715 };
1716
1717 static char *ssif_fields[] = {
1718   "service", "dfgen", "dfcheck", "inprogress", "harderror", "errmsg",
1719 };
1720
1721 static struct valobj ssif_valobj[] = {
1722   {V_NAME, 0, SERVERS_TABLE, "name", 0, MR_SERVICE},
1723   {V_NUM, 1},
1724   {V_NUM, 2},
1725   {V_NUM, 3},
1726   {V_NUM, 4},
1727   {V_LEN, 5, SERVERS_TABLE, "errmsg"},
1728 };
1729
1730 static struct validate ssif_validate = {
1731   ssif_valobj,
1732   6,
1733   "name",
1734   "name = UPPER('%s')",
1735   1,
1736   0,
1737   0,
1738   0,
1739   0,
1740 };
1741
1742 static char *dsin_fields[] = {
1743   "service",
1744 };
1745
1746 static struct validate dsin_validate = {
1747   asin_valobj,
1748   1,
1749   "name",
1750   "name = UPPER('%s')",
1751   1,
1752   0,
1753   0,
1754   setup_dsin,
1755   0,
1756 };
1757
1758 static char *gshi_fields[] = {
1759   "service", "machine",
1760   "service", "machine", "enable", "override", "success", "inprogress",
1761   "hosterror", "hosterrormsg", "ltt", "lts", "value1", "value2",
1762   "value3", "modtime", "modby", "modwith",
1763 };
1764
1765 static struct validate gshi_validate = {
1766   0,
1767   0,
1768   0,
1769   0,
1770   0,
1771   0,
1772   access_service,
1773   0,
1774   followup_fix_modby,
1775 };
1776
1777 static char *qgsh_fields[] = {
1778   "service", "enable", "override", "success", "inprogress", "hosterror",
1779   "service", "machine",
1780 };
1781
1782 static struct valobj qgsh_valobj[] = {
1783   {V_TYPE, 1, 0, "boolean", 0, MR_TYPE},
1784   {V_TYPE, 2, 0, "boolean", 0, MR_TYPE},
1785   {V_TYPE, 3, 0, "boolean", 0, MR_TYPE},
1786   {V_TYPE, 4, 0, "boolean", 0, MR_TYPE},
1787   {V_TYPE, 5, 0, "boolean", 0, MR_TYPE},
1788 };
1789
1790 static struct validate qgsh_validate = {
1791   qgsh_valobj,
1792   5,
1793   0,
1794   0,
1795   0,
1796   0,
1797   0,
1798   0,
1799   qualified_get_serverhost,
1800 };
1801
1802 static char *ashi_fields[] = {
1803   "service", "machine", "enable", "value1", "value2", "value3",
1804 };
1805
1806 static struct valobj ashi_valobj[] = {
1807   {V_NAME, 0, SERVERS_TABLE, "name", 0, MR_SERVICE},
1808   {V_ID, 1, MACHINE_TABLE, "name", "mach_id", MR_MACHINE},
1809   {V_NUM, 2},
1810   {V_NUM, 3},
1811   {V_NUM, 4},
1812   {V_LEN, 5, SERVERHOSTS_TABLE, "value3"},
1813 };
1814
1815 static struct validate ashi_validate = /* ashi & ushi */
1816 {
1817   ashi_valobj,
1818   6,
1819   "service",
1820   "service = UPPER('%s') AND mach_id = %d",
1821   2,
1822   0,
1823   access_service,
1824   0,
1825   set_serverhost_modtime,
1826 };
1827
1828 static struct validate rshe_validate =
1829 {
1830   ashi_valobj,
1831   2,
1832   "service",
1833   "service = UPPER('%s') AND mach_id = %d",
1834   2,
1835   0,
1836   access_service,
1837   0,
1838   set_serverhost_modtime,
1839 };
1840
1841 static struct validate ssho_validate =
1842 {
1843   ashi_valobj,
1844   2,
1845   "service",
1846   "service = UPPER('%s') AND mach_id = %d",
1847   2,
1848   0,
1849   access_service,
1850   0,
1851   trigger_dcm,
1852 };
1853
1854 static char *sshi_fields[] = {
1855   "service", "machine", "override", "success", "inprogress",
1856   "hosterror", "errmsg", "ltt", "lts",
1857 };
1858
1859 static struct valobj sshi_valobj[] = {
1860   {V_NAME, 0, SERVERS_TABLE, "name", 0, MR_SERVICE},
1861   {V_ID, 1, MACHINE_TABLE, "name", "mach_id", MR_MACHINE},
1862   {V_NUM, 2},
1863   {V_NUM, 3},
1864   {V_NUM, 4},
1865   {V_NUM, 5},
1866   {V_LEN, 6, SERVERHOSTS_TABLE, "hosterrmsg"},
1867   {V_NUM, 7},
1868   {V_NUM, 8},
1869 };
1870
1871 static struct validate sshi_validate =
1872 {
1873   sshi_valobj,
1874   9,
1875   0,
1876   0,
1877   0,
1878   0,
1879   0,
1880   0,
1881   0,
1882 };
1883
1884 static char *dshi_fields[] = {
1885   "service", "machine",
1886 };
1887
1888 static struct validate dshi_validate =
1889 {
1890   ashi_valobj,
1891   2,
1892   "service",
1893   "service = UPPER('%s') AND mach_id = %d",
1894   2,
1895   0,
1896   access_service,
1897   setup_dshi,
1898   0,
1899 };
1900
1901 static char *gslo_fields[] = {
1902   "server",
1903   "server", "machine",
1904 };
1905
1906 static char *gfsl_fields[] = {
1907   "label",
1908   "label", "type", "machine", "name", "mount", "access", "comments",
1909   "owner", "owners", "create", "lockertype", "modtime", "modby", "modwith",
1910 };
1911
1912 static struct validate gfsl_validate = {
1913   0,
1914   0,
1915   0,
1916   0,
1917   0,
1918   0,
1919   access_filesys,
1920   0,
1921   followup_fix_modby,
1922 };
1923
1924 static char *gfsm_fields[] = {
1925   "machine",
1926   "label", "type", "machine", "name", "mount", "access", "comments",
1927   "owner", "owners", "create", "lockertype", "modtime", "modby", "modwith",
1928 };
1929
1930 static struct validate gfsm_validate = {
1931   VOmach0,
1932   1,
1933   0,
1934   0,
1935   0,
1936   0,
1937   0,
1938   0,
1939   followup_fix_modby,
1940 };
1941
1942 static char *gfsn_fields[] = {
1943   "machine", "partition",
1944   "label", "type", "machine", "name", "mount", "access", "comments",
1945   "owner", "owners", "create", "lockertype", "modtime", "modby", "modwith",
1946 };
1947
1948 static struct validate gfsn_validate = {
1949   VOmach0,
1950   1,
1951   0,
1952   0,
1953   0,
1954   0,
1955   0,
1956   0,
1957   followup_fix_modby,
1958 };
1959
1960 static char *gfsp_fields[] = {
1961   "path",
1962   "label", "type", "machine", "name", "mount", "access", "comments",
1963   "owner", "owners", "create", "lockertype", "modtime", "modby", "modwith",
1964 };
1965
1966 static char *gfsg_fields[] = {
1967   "list",
1968   "label", "type", "machine", "name", "mount", "access", "comments",
1969   "owner", "owners", "create", "lockertype", "modtime", "modby", "modwith",
1970 };
1971
1972 static struct validate gfsg_validate = {
1973   VOlist0,
1974   1,
1975   0,
1976   0,
1977   0,
1978   0,
1979   access_list,
1980   0,
1981   followup_fix_modby,
1982 };
1983
1984 static char *afil_fields[] = {
1985   "label", "type", "machine", "name", "mount", "access", "comments",
1986   "owner", "owners", "create", "lockertype",
1987 };
1988
1989 static struct valobj afil_valobj[] = {
1990   {V_CHAR, 0, FILESYS_TABLE, "label"},
1991   {V_TYPE, 1, 0, "filesys", 0, MR_FSTYPE},
1992   {V_ID, 2, MACHINE_TABLE, "name", "mach_id", MR_MACHINE},
1993   {V_CHAR, 3, FILESYS_TABLE, "name"},
1994   {V_LEN, 4, FILESYS_TABLE, "mount"},
1995   {V_LEN, 5, FILESYS_TABLE, "rwaccess"},
1996   {V_LEN, 6, FILESYS_TABLE, "comments"},
1997   {V_ID, 7, USERS_TABLE, "login", "users_id", MR_USER},
1998   {V_ID, 8, LIST_TABLE, "name", "list_id", MR_LIST},
1999   {V_NUM, 9},
2000   {V_TYPE, 10, 0, "lockertype", 0, MR_TYPE},
2001 };
2002
2003 static struct validate afil_validate = {
2004   afil_valobj,
2005   11,
2006   "label",
2007   "label = '%s'",
2008   1,
2009   "filsys_id",
2010   0,
2011   setup_afil,
2012   set_filesys_modtime,
2013 };
2014
2015 static char *ufil_fields[] = {
2016   "label", "newlabel", "type", "machine", "name", "mount", "access",
2017   "comments", "owner", "owners", "create", "lockertype",
2018 };
2019
2020 static struct valobj ufil_valobj[] = {
2021   {V_ID, 0, FILESYS_TABLE, "label", "filsys_id", MR_FILESYS},
2022   {V_RENAME, 1, FILESYS_TABLE, "label", "filsys_id", MR_NOT_UNIQUE},
2023   {V_TYPE, 2, 0, "filesys", 0, MR_FSTYPE},
2024   {V_ID, 3, MACHINE_TABLE, "name", "mach_id", MR_MACHINE},
2025   {V_CHAR, 4, FILESYS_TABLE, "name"},
2026   {V_LEN, 5, FILESYS_TABLE, "mount"},
2027   {V_LEN, 6, FILESYS_TABLE, "rwaccess"},
2028   {V_LEN, 7, FILESYS_TABLE, "comments"},
2029   {V_ID, 8, USERS_TABLE, "login", "users_id", MR_USER},
2030   {V_ID, 9, LIST_TABLE, "name", "list_id", MR_LIST},
2031   {V_NUM, 10},
2032   {V_TYPE, 11, 0, "lockertype", 0, MR_TYPE},
2033 };
2034
2035 static struct validate ufil_validate = {
2036   ufil_valobj,
2037   12,
2038   "label",
2039   "filsys_id = %d",
2040   1,
2041   "filsys_id",
2042   0,
2043   setup_ufil,
2044   set_filesys_modtime,
2045 };
2046
2047 static char *dfil_fields[] = {
2048   "label",
2049 };
2050
2051 static struct validate dfil_validate = {
2052   VOfilesys0,
2053   1,
2054   "label",
2055   "filsys_id = %d",
2056   1,
2057   0,
2058   0,
2059   setup_dfil,
2060   0,
2061 };
2062
2063 static char *gfgm_fields[] = {
2064   "fsgroup", "filesys", "sortkey"
2065 };
2066
2067 static struct validate gfgm_validate = {
2068   VOfilesys0,
2069   1,
2070   0,
2071   0,
2072   0,
2073   0,
2074   0,
2075   0,
2076   0,
2077 };
2078
2079 static struct valobj aftg_valobj[] = {
2080   {V_ID, 0, FILESYS_TABLE, "label", "filsys_id", MR_FILESYS},
2081   {V_ID, 1, FILESYS_TABLE, "label", "filsys_id", MR_FILESYS},
2082 };
2083
2084 static struct validate aftg_validate = {
2085   aftg_valobj,
2086   2,
2087   "group_id",
2088   "group_id = %d and filsys_id = %d",
2089   2,
2090   0,
2091   0,
2092   0,
2093   0,
2094 };
2095
2096 static char *ganf_fields[] = {
2097   "machine", "dir", "device", "status", "allocated", "size",
2098   "modtime", "modby", "modwith",
2099 };
2100
2101 static char *gnfp_fields[] = {
2102   "machine", "dir",
2103   "machine", "dir", "device", "status", "allocated", "size",
2104   "modtime", "modby", "modwith",
2105 };
2106
2107 static struct validate gnfp_validate = {
2108   VOmach0,
2109   1,
2110   0,
2111   0,
2112   0,
2113   0,
2114   0,
2115   0,
2116   followup_fix_modby,
2117 };
2118
2119 static struct valobj anfp_valobj[] = {
2120   {V_ID, 0, MACHINE_TABLE, "name", "mach_id", MR_MACHINE},
2121   {V_CHAR, 1, NFSPHYS_TABLE, "dir"},
2122   {V_LEN, 2, NFSPHYS_TABLE, "device"},
2123   {V_NUM, 3},
2124   {V_NUM, 4},
2125   {V_NUM, 5},
2126 };
2127
2128 static struct validate anfp_validate = {
2129   anfp_valobj,
2130   6,
2131   "dir",
2132   "mach_id = %d and dir = '%s'",
2133   2,
2134   "nfsphys_id",
2135   0,
2136   prefetch_value,
2137   set_nfsphys_modtime,
2138 };
2139
2140 static struct validate unfp_validate = {
2141   anfp_valobj,
2142   6,
2143   "dir",
2144   "mach_id = %d and dir = '%s'",
2145   2,
2146   "nfsphys_id",
2147   0,
2148   0,
2149   set_nfsphys_modtime,
2150 };
2151
2152 static char *ajnf_fields[] = {
2153   "machine", "dir", "adjustment",
2154 };
2155
2156 static struct valobj ajnf_valobj[] = {
2157   {V_ID, 0, MACHINE_TABLE, NAME, "mach_id", MR_MACHINE},
2158   {V_CHAR, 1, NFSPHYS_TABLE, "dir"},
2159   {V_NUM, 2},
2160 };
2161
2162 static struct validate ajnf_validate = {
2163   ajnf_valobj,
2164   3,
2165   "dir",
2166   "mach_id = %d and dir = '%s'",
2167   2,
2168   "nfsphys_id",
2169   0,
2170   0,
2171   set_nfsphys_modtime,
2172 };
2173
2174 static char *dnfp_fields[] = {
2175   "machine", "dir",
2176 };
2177
2178 static struct validate dnfp_validate = {
2179   anfp_valobj,
2180   2,
2181   "dir",
2182   "mach_id = %d and dir = '%s'",
2183   2,
2184   "nfsphys_id",
2185   0,
2186   setup_dnfp,
2187   set_nfsphys_modtime,
2188 };
2189
2190 static char *gqot_fields[] = {
2191   "filesys", "type", "name",
2192   "filesys", "type", "name", "quota", "dir", "machine",
2193   "modtime", "modby", "modwith",
2194 };
2195
2196 static struct valobj gqot_valobj[] = {
2197   {V_TYPE, 1, 0, "quota_type", 0, MR_TYPE},
2198   {V_TYPEDATA, 2, 0, 0, 0, MR_ACE},
2199 };
2200
2201 static struct validate gqot_validate = {
2202   gqot_valobj,
2203   2,
2204   0,
2205   0,
2206   0,
2207   0,
2208   0,
2209   0,
2210   followup_gqot,
2211 };
2212
2213 static char *gqbf_fields[] = {
2214   "filesys",
2215   "filesys", "type", "name", "quota", "dir", "machine",
2216   "modtime", "modby", "modwith",
2217 };
2218
2219 static struct validate gqbf_validate = {
2220   0,
2221   0,
2222   0,
2223   0,
2224   0,
2225   0,
2226   access_filesys,
2227   0,
2228   followup_gqot,
2229 };
2230
2231 static char *aqot_fields[] = {
2232   "filesys", "type", "name", "quota",
2233 };
2234
2235 static struct valobj aqot_valobj[] = {
2236   {V_ID, 0, FILESYS_TABLE, "label", "filsys_id", MR_FILESYS},
2237   {V_TYPE, 1, 0, "quota_type", 0, MR_TYPE},
2238   {V_TYPEDATA, 2, 0, 0, 0, MR_ACE},
2239   {V_NUM, 3},
2240 };
2241
2242 static struct validate aqot_validate = {
2243   aqot_valobj,
2244   4,
2245   "filsys_id",
2246   "filsys_id = %d and type = '%s' and entity_id = %d",
2247   3,
2248   0,
2249   0,
2250   prefetch_filesys,
2251   followup_aqot,
2252 };
2253
2254 static struct validate uqot_validate = {
2255   aqot_valobj,
2256   4,
2257   "filsys_id",
2258   "filsys_id = %d AND type = '%s' AND entity_id = %d",
2259   3,
2260   0,
2261   0,
2262   setup_dqot,
2263   followup_aqot,
2264 };
2265
2266 static struct validate dqot_validate = {
2267   aqot_valobj,
2268   3,
2269   "filsys_id",
2270   "filsys_id = %d AND type = '%s' AND entity_id = %d",
2271   3,
2272   0,
2273   0,
2274   setup_dqot,
2275   followup_dqot,
2276 };
2277
2278 static char *gnfq_fields[] = {
2279   "filesys", "login",
2280   "filesys", "login", "quota", "dir", "machine",
2281   "modtime", "modby", "modwith",
2282 };
2283
2284 static struct validate gnfq_validate = {
2285   0,
2286   0,
2287   0,
2288   0,
2289   0,
2290   0,
2291   access_filesys,
2292   0,
2293   followup_gqot,
2294 };
2295
2296 static char *gnqp_fields[] = {
2297   "machine", "dir",
2298   "filesys", "login", "quota", "dir", "machine",
2299   "modtime", "modby", "modwith",
2300 };
2301
2302 static char *anfq_fields[] = {
2303   "filesys", "login", "quota",
2304 };
2305
2306 static struct valobj anfq_valobj[] = {
2307   {V_ID, 0, FILESYS_TABLE, "label", "filsys_id", MR_FILESYS},
2308   {V_ID, 1, USERS_TABLE, "login", "users_id", MR_USER},
2309   {V_NUM, 2},
2310 };
2311
2312 static struct validate anfq_validate = {
2313   anfq_valobj,
2314   3,
2315   "filsys_id",
2316   "filsys_id = %d AND type = 'USER' AND entity_id = %d",
2317   2,
2318   0, /* object ? */
2319   0,
2320   prefetch_filesys,
2321   followup_aqot,
2322 };
2323
2324 static struct validate unfq_validate = {
2325   anfq_valobj,
2326   3,
2327   "filsys_id",
2328   "filsys_id = %d AND type = 'USER' AND entity_id = %d",
2329   2,
2330   0,
2331   0,
2332   setup_dqot,
2333   followup_aqot,
2334 };
2335
2336 static struct validate dnfq_validate = {
2337   anfq_valobj,
2338   3,
2339   "filsys_id",
2340   "filsys_id = %d AND entity_id = %d",
2341   2,
2342   0,
2343   0,
2344   setup_dqot,
2345   followup_dqot,
2346 };
2347
2348 static char *gzcl2_fields[] = {
2349   "class",
2350   "class", "xmt_type", "xmt_name", "sub_type", "sub_name",
2351   "iws_type", "iws_name", "iui_type", "iui_name",
2352   "modtime", "modby", "modwith",
2353 };
2354
2355 static char *gzcl_fields[] = {
2356   "class",
2357   "class", "xmt_type", "xmt_name", "sub_type", "sub_name",
2358   "iws_type", "iws_name", "iui_type", "iui_name", "owner_type",
2359   "owner_id", "modtime", "modby", "modwith",
2360 };
2361
2362 static struct validate gzcl_validate = {
2363   0,
2364   0,
2365   0,
2366   0,
2367   0,
2368   0,
2369   access_zephyr,
2370   0,
2371   followup_gzcl,
2372 };
2373
2374 static char *azcl2_fields[] = {
2375   "class", "xmt_type", "xmt_name", "sub_type", "sub_name",
2376   "iws_type", "iws_name", "iui_type", "iui_name",
2377 };  
2378
2379 static struct valobj azcl2_valobj[] = {
2380   {V_CHAR, 0, ZEPHYR_TABLE, "class"},
2381   {V_TYPE, 1, 0, "zace_type", 0, MR_ACE},
2382   {V_TYPEDATA, 2, 0, 0, "list_id", MR_ACE},
2383   {V_TYPE, 3, 0, "zace_type", 0, MR_ACE},
2384   {V_TYPEDATA, 4, 0, 0, "list_id", MR_ACE},
2385   {V_TYPE, 5, 0, "zace_type", 0, MR_ACE},
2386   {V_TYPEDATA, 6, 0, 0, "list_id", MR_ACE},
2387   {V_TYPE, 7, 0, "zace_type", 0, MR_ACE},
2388   {V_TYPEDATA, 8, 0, 0, "list_id", MR_ACE},
2389 };
2390
2391 static struct validate azcl2_validate = {
2392   azcl2_valobj,
2393   9,
2394   "class",
2395   "class = '%s'",
2396   1,
2397   0,
2398   0,
2399   0,
2400   set_zephyr_modtime,
2401 };
2402
2403 static char *azcl_fields[] = {
2404   "class", "xmt_type", "xmt_name", "sub_type", "sub_name",
2405   "iws_type", "iws_name", "iui_type", "iui_name", "owner_type", 
2406   "owner_id",
2407 };
2408
2409 static struct valobj azcl_valobj[] = {
2410   {V_CHAR, 0, ZEPHYR_TABLE, "class"},
2411   {V_TYPE, 1, 0, "zace_type", 0, MR_ACE},
2412   {V_TYPEDATA, 2, 0, 0, "list_id", MR_ACE},
2413   {V_TYPE, 3, 0, "zace_type", 0, MR_ACE},
2414   {V_TYPEDATA, 4, 0, 0, "list_id", MR_ACE},
2415   {V_TYPE, 5, 0, "zace_type", 0, MR_ACE},
2416   {V_TYPEDATA, 6, 0, 0, "list_id", MR_ACE},
2417   {V_TYPE, 7, 0, "zace_type", 0, MR_ACE},
2418   {V_TYPEDATA, 8, 0, 0, "list_id", MR_ACE},
2419   {V_TYPE, 9, 0, "ace_type", 0, MR_ACE},
2420   {V_TYPEDATA, 10, 0, 0, "list_id", MR_ACE},
2421 };
2422
2423 static struct validate azcl_validate = {
2424   azcl_valobj,
2425   11,
2426   "class",
2427   "class = '%s'",
2428   1,
2429   0,
2430   0,
2431   0,
2432   set_zephyr_modtime,
2433 };
2434
2435 static char *uzcl2_fields[] = {
2436   "class", "newclass", "xmt_type", "xmt_name", "sub_type", "sub_name",
2437   "iws_type", "iws_name", "iui_type", "iui_name",
2438 };
2439
2440 static struct valobj uzcl2_valobj[] = {
2441   {V_NAME, 0, ZEPHYR_TABLE, "class", 0, MR_BAD_CLASS},
2442   {V_RENAME, 1, ZEPHYR_TABLE, "class", 0, MR_NOT_UNIQUE},
2443   {V_TYPE, 2, 0, "zace_type", 0, MR_ACE},
2444   {V_TYPEDATA, 3, 0, 0, "list_id", MR_ACE},
2445   {V_TYPE, 4, 0, "zace_type", 0, MR_ACE},
2446   {V_TYPEDATA, 5, 0, 0, "list_id", MR_ACE},
2447   {V_TYPE, 6, 0, "zace_type", 0, MR_ACE},
2448   {V_TYPEDATA, 7, 0, 0, "list_id", MR_ACE},
2449   {V_TYPE, 8, 0, "zace_type", 0, MR_ACE},
2450   {V_TYPEDATA, 9, 0, 0, "list_id", MR_ACE},
2451 };
2452
2453 static struct validate uzcl2_validate = {
2454   uzcl2_valobj,
2455   10,
2456   "class",
2457   "class = '%s'",
2458   1,
2459   0,
2460   access_zephyr,
2461   0,
2462   set_zephyr_modtime,
2463 };
2464
2465 static char *uzcl_fields[] = {
2466   "class", "newclass", "xmt_type", "xmt_name", "sub_type", "sub_name",
2467   "iws_type", "iws_name", "iui_type", "iui_name", "owner_type", "owner_id",
2468 };
2469
2470 static struct valobj uzcl_valobj[] = {
2471   {V_NAME, 0, ZEPHYR_TABLE, "class", 0, MR_BAD_CLASS},
2472   {V_RENAME, 1, ZEPHYR_TABLE, "class", 0, MR_NOT_UNIQUE},
2473   {V_TYPE, 2, 0, "zace_type", 0, MR_ACE},
2474   {V_TYPEDATA, 3, 0, 0, "list_id", MR_ACE},
2475   {V_TYPE, 4, 0, "zace_type", 0, MR_ACE},
2476   {V_TYPEDATA, 5, 0, 0, "list_id", MR_ACE},
2477   {V_TYPE, 6, 0, "zace_type", 0, MR_ACE},
2478   {V_TYPEDATA, 7, 0, 0, "list_id", MR_ACE},
2479   {V_TYPE, 8, 0, "zace_type", 0, MR_ACE},
2480   {V_TYPEDATA, 9, 0, 0, "list_id", MR_ACE},
2481   {V_TYPE, 10, 0, "ace_type", 0, MR_ACE},
2482   {V_TYPEDATA, 11, 0, 0, "list_id", MR_ACE},
2483 };
2484
2485 static struct validate uzcl_validate = {
2486   uzcl_valobj,
2487   12,
2488   "class",
2489   "class = '%s'",
2490   1,
2491   0,
2492   access_zephyr,
2493   0,
2494   set_zephyr_modtime,
2495 };
2496
2497 static struct validate dzcl_validate = {
2498   0,
2499   0,
2500   "class",
2501   "class = '%s'",
2502   1,
2503   0,
2504   0,
2505   0,
2506   0,
2507 };
2508
2509 static char *gsha_fields[] = {
2510   "machine",
2511   "machine", "ace_type", "ace_name", "modtime", "modby", "modwith",
2512 };
2513
2514 static struct validate gsha_validate =
2515 {
2516   0,
2517   0,
2518   0,
2519   0,
2520   0,
2521   0,
2522   0,
2523   0,
2524   followup_gsha,
2525 };
2526
2527 static char *asha_fields[] = {
2528   "machine", "ace_type", "ace_name",
2529 };
2530
2531 static struct valobj asha_valobj[] = {
2532   {V_ID, 0, MACHINE_TABLE, "name", "mach_id", MR_MACHINE},
2533   {V_TYPE, 1, 0, "ace_type", 0, MR_ACE},
2534   {V_TYPEDATA, 2, 0, 0, 0, MR_ACE},
2535 };
2536
2537 static struct validate asha_validate =
2538 {
2539   asha_valobj,
2540   3,
2541   "mach_id",
2542   "mach_id = %d",
2543   1,
2544   "mach_id",
2545   0,
2546   0,
2547   set_modtime_by_id,
2548 };
2549
2550 static char *gacl_fields[] = {
2551   "machine", "target",
2552   "machine", "target", "kind", "list",
2553 };
2554
2555 static char *aacl_fields[] = {
2556   "machine", "target", "kind", "list",
2557 };
2558
2559 static char *dacl_fields[] = {
2560   "machine", "target",
2561 };
2562
2563 static struct valobj aacl_valobj[] = {
2564   {V_ID, 0, MACHINE_TABLE, "name", "mach_id", MR_MACHINE},
2565   {V_CHAR, 1, ACL_TABLE, "target"},
2566   {V_TYPE, 2, 0, "acl_kind", 0, MR_TYPE},
2567   {V_ID, 3, LIST_TABLE, "name", "list_id", MR_LIST},
2568 };
2569
2570 static struct validate gacl_validate =
2571 {
2572   aacl_valobj,
2573   1,
2574   NULL,
2575   NULL,
2576   0,
2577   "mach_id",
2578   /* access_acl */ 0,
2579   0,
2580   0,
2581 };
2582
2583 static struct validate aacl_validate =
2584 {
2585   aacl_valobj,
2586   4,
2587   "mach_id",
2588   "mach_id = %d AND target = '%s'",
2589   2,
2590   "mach_id",
2591   /* access_acl */ 0,
2592   0,
2593   0,
2594 };
2595
2596 static char *gsvc_fields[] = {
2597   "service", "protocol",
2598   "service", "protocol", "port", "description", "modtime", "modby", "modwith",
2599 };
2600
2601 static char *asvc_fields[] = {
2602   "service", "protocol", "port", "description",
2603 };
2604
2605 static char *dsvc_fields[] = {
2606   "service", "protocol",
2607 };
2608
2609 static struct valobj asvc_valobj[] = {
2610   {V_CHAR, 0, SERVICES_TABLE, "name"},
2611   {V_CHAR, 1, SERVICES_TABLE, "protocol"},
2612   {V_NUM, 2},
2613   {V_CHAR, 3, SERVICES_TABLE, "description"},
2614 };
2615
2616 static struct validate asvc_validate = {
2617   asvc_valobj,
2618   4,
2619   "name",
2620   "name = '%s' AND protocol = '%s'",
2621   2,
2622   0,
2623   0,
2624   0,
2625   set_service_modtime,
2626 };
2627
2628 static struct validate dsvc_validate = {
2629   asvc_valobj,
2630   2,
2631   "name",
2632   "name = '%s' AND protocol = '%s'",
2633   2,
2634   0,
2635   0,
2636   0,
2637   0,
2638 };
2639
2640 static char *gprn_fields[] = {
2641   "name",
2642   "name", "type", "hwtype", "duplexname", "hostname",
2643   "loghost", "rm", "rp", "rq", "ka", "pc", "ac", "lpc_acl",
2644   "banner", "location", "contact", "modtime", "modby", "modwith"
2645 };
2646
2647 static char *gpbd_fields[] = {
2648   "duplexname",
2649   "name", "type", "hwtype", "duplexname", "hostname",
2650   "loghost", "rm", "rp", "rq", "ka", "pc", "ac", "lpc_acl",
2651   "banner", "location", "contact", "modtime", "modby", "modwith"
2652 };
2653
2654 static char *gpbe_fields[] = {
2655   "hwaddr",
2656   "name", "type", "hwtype", "duplexname", "hostname",
2657   "loghost", "rm", "rp", "rq", "ka", "pc", "ac", "lpc_acl",
2658   "banner", "location", "contact", "modtime", "modby", "modwith"
2659 };
2660
2661 static char *gpbh_fields[] = {
2662   "hostname",
2663   "name", "type", "hwtype", "duplexname", "hostname",
2664   "loghost", "rm", "rp", "rq", "ka", "pc", "ac", "lpc_acl",
2665   "banner", "location", "contact", "modtime", "modby", "modwith"
2666 };
2667
2668 static char *gpbr_fields[] = {
2669   "rm",
2670   "name", "type", "hwtype", "duplexname", "hostname",
2671   "loghost", "rm", "rp", "rq", "ka", "pc", "ac", "lpc_acl",
2672   "banner", "location", "contact", "modtime", "modby", "modwith"
2673 };
2674
2675 static char *gpbl_fields[] = {
2676   "location",
2677   "name", "type", "hwtype", "duplexname", "hostname",
2678   "loghost", "rm", "rp", "rq", "ka", "pc", "ac", "lpc_acl",
2679   "banner", "location", "contact", "modtime", "modby", "modwith"
2680 };
2681
2682 static char *gpbc_fields[] = {
2683   "contact",
2684   "name", "type", "hwtype", "duplexname", "hostname",
2685   "loghost", "rm", "rp", "rq", "ka", "pc", "ac", "lpc_acl",
2686   "banner", "location", "contact", "modtime", "modby", "modwith"
2687 };
2688
2689 static char *aprn_fields[] = {
2690   "printer", "type", "hwtype", "duplexname", "hostname",
2691   "loghost", "rm", "rp", "rq", "ka", "pc", "ac", "lpc_acl",
2692   "banner", "location", "contact",
2693 };
2694
2695 static struct valobj aprn_valobj[] = {
2696   {V_CHAR, 0, PRINTERS_TABLE, "name"},
2697   {V_TYPE, 1, 0, "printertype", 0, MR_TYPE},
2698   {V_TYPE, 2, 0, "printerhwtype", 0, MR_TYPE},
2699   {V_CHAR, 3, PRINTERS_TABLE, "duplexname"},
2700   {V_ID, 4, MACHINE_TABLE, "name", "mach_id", MR_MACHINE},
2701   {V_ID, 5, MACHINE_TABLE, "name", "mach_id", MR_MACHINE},
2702   {V_ID, 6, MACHINE_TABLE, "name", "mach_id", MR_MACHINE},
2703   {V_CHAR, 7, PRINTERS_TABLE, "rp"},
2704   {V_ID, 8, MACHINE_TABLE, "name", "mach_id", MR_MACHINE},
2705   {V_NUM, 9},
2706   {V_NUM, 10},
2707   {V_ID, 11, LIST_TABLE, "name", "list_id", MR_LIST},
2708   {V_ID, 12, LIST_TABLE, "name", "list_id", MR_LIST},
2709   {V_NUM, 13},
2710   {V_CHAR, 14, PRINTERS_TABLE, "location"},
2711   {V_CHAR, 15, PRINTERS_TABLE, "contact"},
2712 };
2713
2714 static struct validate aprn_validate = {
2715   aprn_valobj,
2716   16,
2717   "name",
2718   "name = '%s'",
2719   1,
2720   0,
2721   access_printer,
2722   setup_aprn,
2723   set_modtime,
2724 };
2725
2726 static char *uprn_fields[] = {
2727   "printer",
2728   "printer", "type", "hwtype", "duplexname", "hostname",
2729   "loghost", "rm", "rp", "rq", "ka", "pc", "ac", "lpc_acl",
2730   "banner", "location", "contact",
2731 };
2732
2733 static struct valobj uprn_valobj[] = {
2734   {V_CHAR, 0, PRINTERS_TABLE, "name"},
2735   {V_CHAR, 1, PRINTERS_TABLE, "name"},
2736   {V_TYPE, 2, 0, "printertype", 0, MR_TYPE},
2737   {V_TYPE, 3, 0, "printerhwtype", 0, MR_TYPE},
2738   {V_CHAR, 4, PRINTERS_TABLE, "duplexname"},
2739   {V_ID, 5, MACHINE_TABLE, "name", "mach_id", MR_MACHINE},
2740   {V_ID, 6, MACHINE_TABLE, "name", "mach_id", MR_MACHINE},
2741   {V_ID, 7, MACHINE_TABLE, "name", "mach_id", MR_MACHINE},
2742   {V_CHAR, 8, PRINTERS_TABLE, "rp"},
2743   {V_ID, 9, MACHINE_TABLE, "name", "mach_id", MR_MACHINE},
2744   {V_NUM, 10},
2745   {V_NUM, 11},
2746   {V_ID, 12, LIST_TABLE, "name", "list_id", MR_LIST},
2747   {V_ID, 13, LIST_TABLE, "name", "list_id", MR_LIST},
2748   {V_NUM, 14},
2749   {V_CHAR, 15, PRINTERS_TABLE, "location"},
2750   {V_CHAR, 16, PRINTERS_TABLE, "contact"},
2751 };
2752
2753 static struct validate uprn_validate = {
2754   uprn_valobj,
2755   16,
2756   "name",
2757   "name = '%s'",
2758   1,
2759   0,
2760   access_printer,
2761   setup_aprn,
2762   set_modtime,
2763 };
2764
2765 static struct validate dprn_validate = {
2766   0,
2767   0,
2768   "name",
2769   "name = '%s'",
2770   1,
2771   0,
2772   access_printer,
2773   0,
2774   0,
2775 };
2776
2777 static char *gpsv_fields[] = {
2778   "host",
2779   "host", "kind", "printer_types", "owner_type", "owner_name",
2780   "lpc_acl", "modtime", "modby", "modwith"
2781 };
2782
2783 static struct valobj gpsv_valobj[] = {
2784   {V_ID, 0, MACHINE_TABLE, "name", "mach_id", MR_MACHINE},
2785 };
2786
2787 static struct validate gpsv_validate = {
2788   gpsv_valobj,
2789   1,
2790   0,
2791   0,
2792   0,
2793   0,
2794   0,
2795   0,
2796   followup_gpsv,
2797 };
2798
2799 static char *apsv_fields[] = {
2800   "host", "kind", "printer_types", "owner_type", "owner_name", "lpc_acl"
2801 };
2802
2803 static struct valobj apsv_valobj[] = {
2804   {V_ID, 0, MACHINE_TABLE, "name", "mach_id", MR_MACHINE},
2805   {V_TYPE, 1, 0, "lpd_kind", 0, MR_TYPE},
2806   {V_ID, 2, STRINGS_TABLE, "string", "string_id", MR_STRING},
2807   {V_TYPE, 3, 0, "ace_type", 0, MR_ACE},
2808   {V_TYPEDATA, 4, 0, 0, 0, MR_ACE},
2809   {V_ID, 5, LIST_TABLE, "name", "list_id", MR_LIST},
2810 };
2811
2812 static struct validate apsv_validate = {
2813   apsv_valobj,
2814   6,
2815   "mach_id",
2816   "mach_id = %d",
2817   1,
2818   "mach_id",
2819   0,
2820   0,
2821   set_modtime_by_id,
2822 };
2823
2824 static char *dpsv_fields[] = {
2825   "host",
2826 };
2827
2828 static struct validate dpsv_validate = {
2829   gpsv_valobj,
2830   1,
2831   "mach_id",
2832   "mach_id = %d",
2833   1,
2834   0,
2835   0,
2836   setup_dpsv,
2837   0,
2838 };  
2839
2840 static char *gali_fields[] = {
2841   "name", "type", "trans",
2842   "name", "type", "trans",
2843 };
2844
2845 static char *aali_fields[] = {
2846   "name", "type", "trans",
2847 };
2848
2849 static struct valobj aali_valobj[] = {
2850   {V_CHAR, 0, ALIAS_TABLE, "name"},
2851   {V_TYPE, 1, 0, "alias", 0, MR_TYPE},
2852   {V_CHAR, 2, ALIAS_TABLE, "trans"},
2853 };
2854
2855 static struct validate aali_validate = {
2856   aali_valobj,
2857   3,
2858   "trans",
2859   "name = '%s' and type = '%s' and trans = '%s'",
2860   3,
2861   0,
2862   0,
2863   0,
2864   0,
2865 };
2866
2867 static struct validate dali_validate =  /* DELETE_ALIAS */
2868 {
2869   0,
2870   0,
2871   "trans",
2872   "name = '%s' and type = '%s' and trans = '%s'",
2873   3,
2874   0,
2875   0,
2876   0,
2877   0,
2878 };
2879
2880 static char *gval_fields[] = {
2881   "name", "value",
2882 };
2883
2884 static struct valobj gval_valobj[] = {
2885   {V_NAME, 0, NUMVALUES_TABLE, "name", 0, MR_NO_MATCH},
2886 };
2887
2888 static struct validate gval_validate = {
2889   gval_valobj,
2890   1,
2891   0,
2892   0,
2893   0,
2894   0,
2895   0,
2896   0,
2897   0,
2898 };
2899
2900 static char *aval_fields[] = {
2901   "name", "value",
2902 };
2903
2904 static struct valobj aval_valobj[] = {
2905   {V_CHAR, 0, NUMVALUES_TABLE, "name"},
2906   {V_NUM, 1},
2907 };
2908
2909 static struct validate aval_validate =  /* for aval, uval, and dval */
2910 {
2911   aval_valobj,
2912   2,
2913   "name",
2914   "name = '%s'",
2915   1,
2916   0,
2917   0,
2918   0,
2919   0,
2920 };
2921
2922 static char *dval_fields[] = {
2923   "name",
2924 };
2925
2926 static char *gats_fields[] = {
2927   "table_name", "appends", "updates", "deletes",
2928   "modtime", "modby", "modwith",
2929 };
2930
2931 static char *_sdl_fields[] = {
2932   "level",
2933 };
2934
2935 static struct validate _sdl_validate =
2936 {
2937   VOnum0,
2938   1,
2939   NULL,
2940   NULL,
2941   0,
2942   0,
2943   0,
2944   0,
2945   _sdl_followup,
2946 };
2947
2948
2949 \f
2950 /* Generalized Query Definitions */
2951
2952 /* Multiple versions of the same query MUST be listed in ascending
2953  * order.
2954  */
2955
2956 /* Note: For any query which uses prefetch_value, the vcnt should be
2957  * one less than the number of %-format specifiers in the tlist.
2958  */
2959
2960 struct query Queries[] = {
2961   {
2962     /* Q_GALO - GET_ALL_LOGINS, v2 */
2963     "get_all_logins",
2964     "galo",
2965     2,
2966     RETRIEVE,
2967     "u",
2968     USERS_TABLE,
2969     "u.login, u.unix_uid, u.shell, u.last, u.first, u.middle FROM users u",
2970     galo2_fields,
2971     6,
2972     "u.users_id != 0",
2973     0,
2974     "u.login",
2975     0,
2976   },
2977
2978   {
2979     /* Q_GALO - GET_ALL_LOGINS, v3 */
2980     "get_all_logins",
2981     "galo",
2982     3,
2983     RETRIEVE,
2984     "u",
2985     USERS_TABLE,
2986     "u.login, u.unix_uid, u.shell, u.winconsoleshell, u.last, u.first, u.middle FROM users u",
2987     galo_fields,
2988     7,
2989     "u.users_id != 0",
2990     0,
2991     "u.login",
2992     0,
2993   },
2994
2995   {
2996     /* Q_GAAL - GET_ALL_ACTIVE_LOGINS, v2 */
2997     "get_all_active_logins",
2998     "gaal",
2999     2,
3000     RETRIEVE,
3001     "u",
3002     USERS_TABLE,
3003     "u.login, u.unix_uid, u.shell, u.last, u.first, u.middle FROM users u",
3004     galo2_fields,
3005     6,
3006     "u.status = 1",
3007     0,
3008     "u.login",
3009     0,
3010   },
3011
3012   {
3013     /* Q_GAAL - GET_ALL_ACTIVE_LOGINS, v3 */
3014     "get_all_active_logins",
3015     "gaal",
3016     3,
3017     RETRIEVE,
3018     "u",
3019     USERS_TABLE,
3020     "u.login, u.unix_uid, u.shell, u.winconsoleshell, u.last, u.first, u.middle FROM users u",
3021     galo_fields,
3022     7,
3023     "u.status = 1",
3024     0,
3025     "u.login",
3026     0,
3027   },
3028
3029   {
3030     /* Q_GUAL - GET_USER_ACCOUNT_BY_LOGIN, v2 */
3031     "get_user_account_by_login",
3032     "gual",
3033     2,
3034     RETRIEVE,
3035     "u",
3036     USERS_TABLE,
3037     "u.login, u.unix_uid, u.shell, u.last, u.first, u.middle, u.status, u.clearid, u.type, str.string, CHR(0), u.secure, TO_CHAR(u.modtime, 'DD-mon-YYYY HH24:MI:SS'), u.modby, u.modwith FROM users u, strings str",
3038     gual2_fields,
3039     15,
3040     "u.login LIKE '%s' AND u.users_id != 0 AND u.comments = str.string_id",
3041     1,
3042     "u.login",
3043     &gubl_validate,
3044   },
3045
3046   {
3047     /* Q_GUAL - GET_USER_ACCOUNT_BY_LOGIN, v3 */
3048     "get_user_account_by_login",
3049     "gual",
3050     3,
3051     RETRIEVE,
3052     "u",
3053     USERS_TABLE,
3054     "u.login, u.unix_uid, u.shell, u.winconsoleshell, u.last, u.first, u.middle, u.status, u.clearid, u.type, str.string, CHR(0), u.secure, TO_CHAR(u.modtime, 'DD-mon-YYYY HH24:MI:SS'), u.modby, u.modwith FROM users u, strings str",
3055     gual_fields,
3056     16,
3057     "u.login LIKE '%s' AND u.users_id != 0 AND u.comments = str.string_id",
3058     1,
3059     "u.login",
3060     &gubl_validate,
3061   },
3062
3063   {
3064     /* Q_GUAU - GET_USER_ACCOUNT_BY_UID, v2 */
3065     "get_user_account_by_uid",
3066     "guau",
3067     2,
3068     RETRIEVE,
3069     "u",
3070     USERS_TABLE,
3071     "u.login, u.unix_uid, u.shell, u.last, u.first, u.middle, u.status, u.clearid, u.type, str.string, CHR(0), u.secure, TO_CHAR(u.modtime, 'DD-mon-YYYY HH24:MI:SS'), u.modby, u.modwith FROM users u, strings str",
3072     guau2_fields,
3073     15,
3074     "u.unix_uid = %s AND u.users_id != 0 AND u.comments = str.string_id",
3075     1,
3076     "u.login",
3077     &gubu_validate,
3078   },
3079
3080   {
3081     /* Q_GUAU - GET_USER_ACCOUNT_BY_UID, v3 */
3082     "get_user_account_by_uid",
3083     "guau",
3084     3,
3085     RETRIEVE,
3086     "u",
3087     USERS_TABLE,
3088     "u.login, u.unix_uid, u.shell, u.winconsoleshell, u.last, u.first, u.middle, u.status, u.clearid, u.type, str.string, CHR(0), u.secure, TO_CHAR(u.modtime, 'DD-mon-YYYY HH24:MI:SS'), u.modby, u.modwith FROM users u, strings str",
3089     guau_fields,
3090     16,
3091     "u.unix_uid = %s AND u.users_id != 0 AND u.comments = str.string_id",
3092     1,
3093     "u.login",
3094     &gubu_validate,
3095   },
3096
3097   {
3098     /* Q_GUAN - GET_USER_ACCOUNT_BY_NAME, v2 */
3099     "get_user_account_by_name",
3100     "guan",
3101     2,
3102     RETRIEVE,
3103     "u",
3104     USERS_TABLE,
3105     "u.login, u.unix_uid, u.shell, u.last, u.first, u.middle, u.status, u.clearid, u.type, str.string, CHR(0), u.secure, TO_CHAR(u.modtime, 'DD-mon-YYYY HH24:MI:SS'), u.modby, u.modwith FROM users u, strings str",
3106     guan2_fields,
3107     15,
3108     "u.first LIKE '%s' AND u.last LIKE '%s' AND u.users_id != 0 and u.comments = str.string_id",
3109     2,
3110     "u.login",
3111     &guan_validate,
3112   },
3113
3114   {
3115     /* Q_GUAN - GET_USER_ACCOUNT_BY_NAME, v3 */
3116     "get_user_account_by_name",
3117     "guan",
3118     3,
3119     RETRIEVE,
3120     "u",
3121     USERS_TABLE,
3122     "u.login, u.unix_uid, u.shell, u.winconsoleshell, u.last, u.first, u.middle, u.status, u.clearid, u.type, str.string, CHR(0), u.secure, TO_CHAR(u.modtime, 'DD-mon-YYYY HH24:MI:SS'), u.modby, u.modwith FROM users u, strings str",
3123     guan_fields,
3124     16,
3125     "u.first LIKE '%s' AND u.last LIKE '%s' AND u.users_id != 0 and u.comments = str.string_id",
3126     2,
3127     "u.login",
3128     &guan_validate,
3129   },
3130
3131   {
3132     /* Q_GUAC - GET_USER_ACCOUNT_BY_CLASS, v2 */
3133     "get_user_account_by_class",
3134     "guac",
3135     2,
3136     RETRIEVE,
3137     "u",
3138     USERS_TABLE,
3139     "u.login, u.unix_uid, u.shell, u.last, u.first, u.middle, u.status, u.clearid, u.type, str.string, CHR(0), u.secure, TO_CHAR(u.modtime, 'DD-mon-YYYY HH24:MI:SS'), u.modby, u.modwith FROM users u, strings str",
3140     guac2_fields,
3141     15,
3142     "u.type = UPPER('%s') AND u.users_id != 0 AND u.comments = str.string_id",
3143     1,
3144     "u.login",
3145     &VDfix_modby,
3146   },
3147
3148   {
3149     /* Q_GUAC - GET_USER_ACCOUNT_BY_CLASS, v3 */
3150     "get_user_account_by_class",
3151     "guac",
3152     3,
3153     RETRIEVE,
3154     "u",
3155     USERS_TABLE,
3156     "u.login, u.unix_uid, u.shell, u.winconsoleshell, u.last, u.first, u.middle, u.status, u.clearid, u.type, str.string, CHR(0), u.secure, TO_CHAR(u.modtime, 'DD-mon-YYYY HH24:MI:SS'), u.modby, u.modwith FROM users u, strings str",
3157     guac_fields,
3158     16,
3159     "u.type = UPPER('%s') AND u.users_id != 0 AND u.comments = str.string_id",
3160     1,
3161     "u.login",
3162     &VDfix_modby,
3163   },
3164
3165   {
3166     /* Q_GUAM - GET_USER_ACCOUNT_BY_MITID, v2 */
3167     "get_user_account_by_id",
3168     "guai",
3169     2,
3170     RETRIEVE,
3171     "u",
3172     USERS_TABLE,
3173     "u.login, u.unix_uid, u.shell, u.last, u.first, u.middle, u.status, u.clearid, u.type, str.string, CHR(0), u.secure, TO_CHAR(u.modtime, 'DD-mon-YYYY HH24:MI:SS'), u.modby, u.modwith FROM users u, strings str",
3174     guam2_fields,
3175     15,
3176     "u.clearid LIKE '%s' AND u.users_id != 0 AND u.comments = str.string_id",
3177     1,
3178     "u.login",
3179     &VDfix_modby,
3180   },
3181
3182   {
3183     /* Q_GUAM - GET_USER_ACCOUNT_BY_MITID, v3 */
3184     "get_user_account_by_id",
3185     "guai",
3186     3,
3187     RETRIEVE,
3188     "u",
3189     USERS_TABLE,
3190     "u.login, u.unix_uid, u.shell, u.winconsoleshell, u.last, u.first, u.middle, u.status, u.clearid, u.type, str.string, CHR(0), u.secure, TO_CHAR(u.modtime, 'DD-mon-YYYY HH24:MI:SS'), u.modby, u.modwith FROM users u, strings str",
3191     guam_fields,
3192     16,
3193     "u.clearid LIKE '%s' AND u.users_id != 0 AND u.comments = str.string_id",
3194     1,
3195     "u.login",
3196     &VDfix_modby,
3197   },
3198
3199   {
3200     /* Q_GUBL - GET_USER_BY_LOGIN, v2 */
3201     "get_user_by_login",
3202     "gubl",
3203     2,
3204     RETRIEVE,
3205     "u",
3206     USERS_TABLE,
3207     "u.login, u.unix_uid, u.shell, u.last, u.first, u.middle, u.status, u.clearid, u.type, TO_CHAR(u.modtime, 'DD-mon-YYYY HH24:MI:SS'), u.modby, u.modwith FROM users u",
3208     gubl2_fields,
3209     12,
3210     "u.login LIKE '%s' AND u.users_id != 0",
3211     1,
3212     "u.login",
3213     &gubl_validate,
3214   },
3215
3216   {
3217     /* Q_GUBL - GET_USER_BY_LOGIN, v3 */
3218     "get_user_by_login",
3219     "gubl",
3220     3,
3221     RETRIEVE,
3222     "u",
3223     USERS_TABLE,
3224     "u.login, u.unix_uid, u.shell, u.winconsoleshell, u.last, u.first, u.middle, u.status, u.clearid, u.type, TO_CHAR(u.modtime, 'DD-mon-YYYY HH24:MI:SS'), u.modby, u.modwith FROM users u",
3225     gubl_fields,
3226     13,
3227     "u.login LIKE '%s' AND u.users_id != 0",
3228     1,
3229     "u.login",
3230     &gubl_validate,
3231   },
3232
3233   {
3234     /* Q_GUBU - GET_USER_BY_UID, v2 */
3235     "get_user_by_uid",
3236     "gubu",
3237     2,
3238     RETRIEVE,
3239     "u",
3240     USERS_TABLE,
3241     "u.login, u.unix_uid, u.shell, u.last, u.first, u.middle, u.status, u.clearid, u.type, TO_CHAR(u.modtime, 'DD-mon-YYYY HH24:MI:SS'), u.modby, u.modwith FROM users u",
3242     gubu2_fields,
3243     12,
3244     "u.unix_uid = %s AND u.users_id != 0",
3245     1,
3246     "u.login",
3247     &gubu_validate,
3248   },
3249
3250   {
3251     /* Q_GUBU - GET_USER_BY_UID, v3 */
3252     "get_user_by_uid",
3253     "gubu",
3254     3,
3255     RETRIEVE,
3256     "u",
3257     USERS_TABLE,
3258     "u.login, u.unix_uid, u.shell, u.winconsoleshell, u.last, u.first, u.middle, u.status, u.clearid, u.type, TO_CHAR(u.modtime, 'DD-mon-YYYY HH24:MI:SS'), u.modby, u.modwith FROM users u",
3259     gubu_fields,
3260     13,
3261     "u.unix_uid = %s AND u.users_id != 0",
3262     1,
3263     "u.login",
3264     &gubu_validate,
3265   },
3266
3267   {
3268     /* Q_GUBN - GET_USER_BY_NAME, v2 */
3269     "get_user_by_name",
3270     "gubn",
3271     2,
3272     RETRIEVE,
3273     "u",
3274     USERS_TABLE,
3275     "u.login, u.unix_uid, u.shell, u.last, u.first, u.middle, u.status, u.clearid, u.type, TO_CHAR(u.modtime, 'DD-mon-YYYY HH24:MI:SS'), u.modby, u.modwith FROM users u",
3276     gubn2_fields,
3277     12,
3278     "u.first LIKE '%s' AND u.last LIKE '%s' AND u.users_id != 0",
3279     2,
3280     "u.login",
3281     &gubn_validate,
3282   },
3283
3284   {
3285     /* Q_GUBN - GET_USER_BY_NAME, v3 */
3286     "get_user_by_name",
3287     "gubn",
3288     3,
3289     RETRIEVE,
3290     "u",
3291     USERS_TABLE,
3292     "u.login, u.unix_uid, u.shell, u.winconsoleshell, u.last, u.first, u.middle, u.status, u.clearid, u.type, TO_CHAR(u.modtime, 'DD-mon-YYYY HH24:MI:SS'), u.modby, u.modwith FROM users u",
3293     gubn_fields,
3294     13,
3295     "u.first LIKE '%s' AND u.last LIKE '%s' AND u.users_id != 0",
3296     2,
3297     "u.login",
3298     &gubn_validate,
3299   },
3300
3301   {
3302     /* Q_GUBC - GET_USER_BY_CLASS, v2 */
3303     "get_user_by_class",
3304     "gubc",
3305     2,
3306     RETRIEVE,
3307     "u",
3308     USERS_TABLE,
3309     "u.login, u.unix_uid, u.shell, u.last, u.first, u.middle, u.status, u.clearid, u.type, TO_CHAR(u.modtime, 'DD-mon-YYYY HH24:MI:SS'), u.modby, u.modwith FROM users u",
3310     gubc2_fields,
3311     12,
3312     "u.type = UPPER('%s') AND u.users_id != 0",
3313     1,
3314     "u.login",
3315     &VDfix_modby,
3316   },
3317
3318   {
3319     /* Q_GUBC - GET_USER_BY_CLASS, v3 */
3320     "get_user_by_class",
3321     "gubc",
3322     3,
3323     RETRIEVE,
3324     "u",
3325     USERS_TABLE,
3326     "u.login, u.unix_uid, u.shell, u.winconsoleshell, u.last, u.first, u.middle, u.status, u.clearid, u.type, TO_CHAR(u.modtime, 'DD-mon-YYYY HH24:MI:SS'), u.modby, u.modwith FROM users u",
3327     gubc_fields,
3328     13,
3329     "u.type = UPPER('%s') AND u.users_id != 0",
3330     1,
3331     "u.login",
3332     &VDfix_modby,
3333   },
3334
3335   {
3336     /* Q_GUBM - GET_USER_BY_MITID, v2 */
3337     "get_user_by_mitid",
3338     "gubm",
3339     2,
3340     RETRIEVE,
3341     "u",
3342     USERS_TABLE,
3343     "u.login, u.unix_uid, u.shell, u.last, u.first, u.middle, u.status, u.clearid, u.type, TO_CHAR(u.modtime, 'DD-mon-YYYY HH24:MI:SS'), u.modby, u.modwith FROM users u",
3344     gubm2_fields,
3345     12,
3346     "u.clearid LIKE '%s' AND u.users_id != 0",
3347     1,
3348     "u.login",
3349     &VDfix_modby,
3350   },
3351
3352   {
3353     /* Q_GUBM - GET_USER_BY_MITID, v3 */
3354     "get_user_by_mitid",
3355     "gubm",
3356     3,
3357     RETRIEVE,
3358     "u",
3359     USERS_TABLE,
3360     "u.login, u.unix_uid, u.shell, u.winconsoleshell, u.last, u.first, u.middle, u.status, u.clearid, u.type, TO_CHAR(u.modtime, 'DD-mon-YYYY HH24:MI:SS'), u.modby, u.modwith FROM users u",
3361     gubm_fields,
3362     13,
3363     "u.clearid LIKE '%s' AND u.users_id != 0",
3364     1,
3365     "u.login",
3366     &VDfix_modby,
3367   },
3368
3369   {
3370     /* Q_AUAC - ADD_USER_ACCOUNT, v2 */  /* uses prefetch_value() for users_id */
3371     "add_user_account",
3372     "auac",
3373     2,
3374     APPEND,
3375     "u",
3376     USERS_TABLE,
3377     /* We set signature to "NVL(CHR(0), '%s')", which is to say, "CHR(0)",
3378      * but using up one argv element.
3379      */
3380     "INTO users (login, unix_uid, shell, last, first, middle, status, clearid, type, comments, signature, secure, users_id) VALUES ('%s', %s, '%s', NVL('%s', CHR(0)), NVL('%s', CHR(0)), NVL('%s', CHR(0)), %s, NVL('%s', CHR(0)), '%s', %d, NVL(CHR(0), '%s'), %s, %s)",
3381     auac2_fields,
3382     12,
3383     NULL,
3384     0,
3385     NULL,
3386     &auac2_validate,
3387   },
3388
3389   {
3390     /* Q_AUAC - ADD_USER_ACCOUNT, v3 */  /* uses prefetch_value() for users_id */
3391     "add_user_account",
3392     "auac",
3393     3,
3394     APPEND,
3395     "u",
3396     USERS_TABLE,
3397     /* We set signature to "NVL(CHR(0), '%s')", which is to say, "CHR(0)",
3398      * but using up one argv element.
3399      */
3400     "INTO users (login, unix_uid, shell, winconsoleshell, last, first, middle, status, clearid, type, comments, signature, secure, users_id) VALUES ('%s', %s, '%s', NVL('%s', CHR(0)), NVL('%s', CHR(0)), NVL('%s', CHR(0)), NVL('%s', CHR(0)), %s, NVL('%s', CHR(0)), '%s', %d, NVL(CHR(0), '%s'), %s, %s)",
3401     auac_fields,
3402     13,
3403     NULL,
3404     0,
3405     NULL,
3406     &auac_validate,
3407   },
3408
3409   {
3410     /* Q_AUSR - ADD_USER, v2 */  /* uses prefetch_value() for users_id */
3411     "add_user",
3412     "ausr",
3413     2,
3414     APPEND,
3415     "u",
3416     USERS_TABLE,
3417     "INTO users (login, unix_uid, shell, last, first, middle, status, clearid, type, comments, signature, secure, users_id) VALUES ('%s', %s, '%s', NVL('%s', CHR(0)), NVL('%s', CHR(0)), NVL('%s', CHR(0)), %s, NVL('%s', CHR(0)), '%s', 0, CHR(0), 0, %s)",
3418     auac2_fields,
3419     9,
3420     0,
3421     0,
3422     NULL,
3423     &ausr2_validate,
3424   },
3425
3426   {
3427     /* Q_AUSR - ADD_USER, v3 */  /* uses prefetch_value() for users_id */
3428     "add_user",
3429     "ausr",
3430     3,
3431     APPEND,
3432     "u",
3433     USERS_TABLE,
3434     "INTO users (login, unix_uid, shell, winconsoleshell, last, first, middle, status, clearid, type, comments, signature, secure, users_id) VALUES ('%s', %s, '%s', NVL('%s', CHR(0)), NVL('%s', CHR(0)), NVL('%s', CHR(0)), %s, NVL('%s', CHR(0)), '%s', 0, CHR(0), 0, %s)",
3435     auac_fields,
3436     10,
3437     0,
3438     0,
3439     NULL,
3440     &ausr_validate,
3441   },
3442
3443   {
3444     /* Q_RUSR - REGISTER_USER */
3445     "register_user",
3446     "rusr",
3447     2,
3448     APPEND,
3449     0,
3450     0,
3451     0,
3452     rusr_fields,
3453     3,
3454     0,
3455     0,
3456     NULL,
3457     &rusr_validate,
3458   },
3459
3460   {
3461     /* Q_UUAC - UPDATE_USER_ACCOUNT, v2 */
3462     "update_user_account",
3463     "uuac",
3464     2,
3465     UPDATE,
3466     "u",
3467     USERS_TABLE,
3468     /* See comment in auac about signature. */
3469     "users SET login = '%s', unix_uid = %s, shell = '%s', last = NVL('%s', CHR(0)), first = NVL('%s', CHR(0)), middle = NVL('%s', CHR(0)), status = %s, clearid = NVL('%s', CHR(0)), type = '%s', comments = %d, signature = NVL(CHR(0), '%s'), secure = %s",
3470     uuac2_fields,
3471     12,
3472     "users_id = %d",
3473     1,
3474     NULL,
3475     &uuac2_validate,
3476   },
3477
3478   {
3479     /* Q_UUAC - UPDATE_USER_ACCOUNT, v3 */
3480     "update_user_account",
3481     "uuac",
3482     3,
3483     UPDATE,
3484     "u",
3485     USERS_TABLE,
3486     /* See comment in auac about signature. */
3487     "users SET login = '%s', unix_uid = %s, shell = '%s', winconsoleshell = '%s', last = NVL('%s', CHR(0)), first = NVL('%s', CHR(0)), middle = NVL('%s', CHR(0)), status = %s, clearid = NVL('%s', CHR(0)), type = '%s', comments = %d, signature = NVL(CHR(0), '%s'), secure = %s",
3488     uuac_fields,
3489     13,
3490     "users_id = %d",
3491     1,
3492     NULL,
3493     &uuac_validate,
3494   },
3495
3496   {
3497     /* Q_UUSR - UPDATE_USER, v2 */
3498     "update_user",
3499     "uusr",
3500     2,
3501     UPDATE,
3502     "u",
3503     USERS_TABLE,
3504     "users SET login = '%s', unix_uid = %s, shell = '%s', last = NVL('%s', CHR(0)), first = NVL('%s', CHR(0)), middle = NVL('%s', CHR(0)), status = %s, clearid = NVL('%s', CHR(0)),  type = '%s'",
3505     uuac2_fields,
3506     9,
3507     "users_id = %d",
3508     1,
3509     NULL,
3510     &uusr2_validate,
3511   },
3512
3513   {
3514     /* Q_UUSR - UPDATE_USER, v3 */
3515     "update_user",
3516     "uusr",
3517     3,
3518     UPDATE,
3519     "u",
3520     USERS_TABLE,
3521     "users SET login = '%s', unix_uid = %s, shell = '%s', winconsoleshell = '%s', last = NVL('%s', CHR(0)), first = NVL('%s', CHR(0)), middle = NVL('%s', CHR(0)), status = %s, clearid = NVL('%s', CHR(0)),  type = '%s'",
3522     uuac_fields,
3523     10,
3524     "users_id = %d",
3525     1,
3526     NULL,
3527     &uusr_validate,
3528   },
3529
3530   {
3531     /* Q_UUSH - UPDATE_USER_SHELL */
3532     "update_user_shell",
3533     "uush",
3534     2,
3535     UPDATE,
3536     "u",
3537     USERS_TABLE,
3538     "users SET shell = '%s'",
3539     uush_fields,
3540     1,
3541     "users_id = %d",
3542     1,
3543     NULL,
3544     &uush_validate,
3545   },
3546
3547   {
3548     /* Q_UUWS - UPDATE_USER_WINDOWS_SHELL */
3549     "update_user_windows_shell",
3550     "uuws",
3551     2,
3552     UPDATE,
3553     "u",
3554     USERS_TABLE,
3555     "users SET winconsoleshell = '%s'",
3556     uuws_fields,
3557     1,
3558     "users_id = %d",
3559     1,
3560     NULL,
3561     &uuws_validate,
3562   },
3563
3564   {
3565     /* Q_UUST - UPDATE_USER_STATUS */
3566     "update_user_status",
3567     "uust",
3568     2,
3569     UPDATE,
3570     "u",
3571     USERS_TABLE,
3572     "users SET status = %s",
3573     uust_fields,
3574     1,
3575     "users_id = %d",
3576     1,
3577     NULL,
3578     &uust_validate,
3579   },
3580
3581   {
3582     /* Q_UUSS - UPDATE_USER_SECURITY_STATUS */
3583     "update_user_security_status",
3584     "uuss",
3585     2,
3586     UPDATE,
3587     "u",
3588     USERS_TABLE,
3589     "users SET secure = %s",
3590     uuss_fields,
3591     1,
3592     "users_id = %d",
3593     1,
3594     NULL,
3595     &uust_validate,
3596   },
3597
3598   {
3599     /* Q_DUSR - DELETE_USER */
3600     "delete_user",
3601     "dusr",
3602     2,
3603     DELETE,
3604     "u",
3605     USERS_TABLE,
3606     NULL,
3607     dusr_fields,
3608     0,
3609     "users_id = %d",
3610     1,
3611     NULL,
3612     &dusr_validate,
3613   },
3614
3615   {
3616     /* Q_AURV - ADD_USER_RESERVATION */
3617     "add_user_reservation",
3618     "aurv",
3619     2,
3620     UPDATE,
3621     0,
3622     USERS_TABLE,
3623     0,
3624     aurv_fields,
3625     2,
3626     0,
3627     0,
3628     NULL,
3629     &aurv_validate,
3630   },
3631
3632   {
3633     /* Q_GURV - GET_USER_RESERVATIONS */
3634     "get_user_reservations",
3635     "gurv",
3636     2,
3637     RETRIEVE,
3638     0,
3639     USERS_TABLE,
3640     0,
3641     gurv_fields,
3642     2,
3643     0,
3644     1,
3645     NULL,
3646     &gurv_validate,
3647   },
3648
3649   {
3650     /* Q_GUBR - GET_USER_BY_RESERVATION */
3651     "get_user_by_reservation",
3652     "gubr",
3653     2,
3654     RETRIEVE,
3655     0,
3656     USERS_TABLE,
3657     0,
3658     gubr_fields,
3659     1,
3660     0,
3661     1,
3662     NULL,
3663     &gubr_validate,
3664   },
3665
3666   {
3667     /* Q_DURV - DELETE_USER_RESERVATION */
3668     "delete_user_reservation",
3669     "durv",
3670     2,
3671     UPDATE,
3672     0,
3673     USERS_TABLE,
3674     0,
3675     aurv_fields,
3676     2,
3677     0,
3678     0,
3679     NULL,
3680     &aurv_validate,
3681   },
3682
3683   {
3684     /* Q_GKUM - GET_KERBEROS_USER_MAP */
3685     "get_kerberos_user_map",
3686     "gkum",
3687     2,
3688     RETRIEVE,
3689     "k",
3690     KRBMAP_TABLE,
3691     "u.login, str.string FROM krbmap km, users u, strings str",
3692     gkum_fields,
3693     2,
3694     "u.login LIKE '%s' AND str.string LIKE '%s' AND km.users_id = u.users_id AND km.string_id = str.string_id",
3695     2,
3696     "u.login, str.string",
3697     NULL,
3698   },
3699
3700   {
3701     /* Q_AKUM - ADD_KERBEROS_USER_MAP */
3702     "add_kerberos_user_map",
3703     "akum",
3704     2,
3705     APPEND,
3706     "k",
3707     KRBMAP_TABLE,
3708     "INTO krbmap (users_id, string_id) VALUES (%d, %d)",
3709     akum_fields,
3710     2,
3711     0,
3712     0,
3713     NULL,
3714     &akum_validate,
3715   },
3716
3717   {
3718     /* Q_DKUM - DELETE_KERBEROS_USER_MAP */
3719     "delete_kerberos_user_map",
3720     "dkum",
3721     2,
3722     DELETE,
3723     "k",
3724     KRBMAP_TABLE,
3725     0,
3726     akum_fields,
3727     0,
3728     "users_id = %d AND string_id = %d",
3729     2,
3730     NULL,
3731     &dkum_validate,
3732   },
3733
3734   {
3735     /* Q_GFBL - GET_FINGER_BY_LOGIN */
3736     "get_finger_by_login",
3737     "gfbl",
3738     2,
3739     RETRIEVE,
3740     "u",
3741     USERS_TABLE,
3742     "login, fullname, nickname, home_addr, home_phone, office_addr, office_phone, department, affiliation, TO_CHAR(fmodtime, 'DD-mon-YYYY HH24:MI:SS'), fmodby, fmodwith FROM users",
3743     gfbl_fields,
3744     12,
3745     "users_id = %d",
3746     1,
3747     "login",
3748     &gfbl_validate,
3749   },
3750
3751   {
3752     /* Q_UFBL - UPDATE_FINGER_BY_LOGIN */
3753     "update_finger_by_login",
3754     "ufbl",
3755     2,
3756     UPDATE,
3757     "u",
3758     USERS_TABLE,
3759     "users SET fullname= NVL('%s', CHR(0)), nickname= NVL('%s', CHR(0)), home_addr= NVL('%s', CHR(0)), home_phone= NVL('%s', CHR(0)), office_addr= NVL('%s', CHR(0)), office_phone= NVL('%s', CHR(0)), department= NVL('%s', CHR(0)), affiliation= NVL('%s', CHR(0))",
3760     ufbl_fields,
3761     8,
3762     "users_id = %d",
3763     1,
3764     NULL,
3765     &ufbl_validate,
3766   },
3767
3768   {
3769     /* Q_GPOB - GET_POBOX */
3770     "get_pobox",
3771     "gpob",
3772     2,
3773     RETRIEVE,
3774     "u",
3775     USERS_TABLE,
3776     "login, potype, users_id, CHR(0), TO_CHAR(pmodtime, 'DD-mon-YYYY HH24:MI:SS'), pmodby, pmodwith FROM users",
3777     gpob_fields,
3778     7,
3779     "users_id = %d",
3780     1,
3781     "login",
3782     &gpob_validate,
3783   },
3784
3785   {
3786     /* Q_GAPO - GET_ALL_POBOXES */
3787     "get_all_poboxes",
3788     "gapo",
3789     2,
3790     RETRIEVE,
3791     "u",
3792     USERS_TABLE,
3793     "login, potype, pop_id || ':' || box_id FROM users",
3794     gpox_fields,
3795     3,
3796     "potype != 'NONE'",
3797     0,
3798     "login",
3799     &gpox_validate,
3800   },
3801
3802   {
3803     /* Q_GPOP - GET_POBOXES_POP */
3804     "get_poboxes_pop",
3805     "gpop",
3806     2,
3807     RETRIEVE,
3808     "u",
3809     USERS_TABLE,
3810     "login, potype, users_id FROM users",
3811     gpox_fields,
3812     3,
3813     "potype = 'POP'",
3814     0,
3815     "login",
3816     &gpox_validate
3817   },
3818
3819   {
3820     /* Q_GPOF - GET_POBOXES_SMTP */
3821     "get_poboxes_smtp",
3822     "gpos",
3823     2,
3824     RETRIEVE,
3825     "u",
3826     USERS_TABLE,
3827     "login, potype, users_id FROM users",
3828     gpox_fields,
3829     3,
3830     "potype = 'SMTP'",
3831     0,
3832     "login",
3833     &gpox_validate
3834   },
3835
3836   {
3837     /* Q_SPOB - SET_POBOX */
3838     "set_pobox",
3839     "spob",
3840     2,
3841     UPDATE,
3842     0,
3843     USERS_TABLE,
3844     0,
3845     spob_fields,
3846     3,
3847     NULL,
3848     0,
3849     NULL,
3850     &spob_validate,
3851   },
3852
3853   {
3854     /* Q_SPOP - SET_POBOX_POP */
3855     "set_pobox_pop",
3856     "spop",
3857     2,
3858     UPDATE,
3859     0,
3860     USERS_TABLE,
3861     0,
3862     spob_fields,
3863     1,
3864     NULL,
3865     0,
3866     NULL,
3867     &spop_validate,
3868   },
3869
3870   {
3871     /* Q_DPOB - DELETE_POBOX */
3872     "delete_pobox",
3873     "dpob",
3874     2,
3875     UPDATE,
3876     "u",
3877     USERS_TABLE,
3878     "users SET potype = 'NONE'",
3879     spob_fields,
3880     0,
3881     "users_id = %d",
3882     1,
3883     NULL,
3884     &dpob_validate,
3885   },
3886
3887   {
3888     /* Q_GHST - GET_HOST */
3889     "get_host",
3890     "ghst",
3891     2,
3892     RETRIEVE,
3893     "m",
3894     MACHINE_TABLE,
3895     "m.name, m.vendor, m.model, m.os, m.location, m.contact, m.use, m.status, TO_CHAR(m.statuschange, 'DD-mon-YYYY HH24:MI:SS'), s.name, m.address, m.owner_type, m.owner_id, m.acomment, m.ocomment, TO_CHAR(m.created, 'DD-mon-YYYY HH24:MI:SS'), m.creator, TO_CHAR(m.inuse, 'DD-mon-YYYY HH24:MI:SS'), TO_CHAR(m.modtime, 'DD-mon-YYYY HH24:MI:SS'), m.modby, m.modwith FROM machine m, subnet s",
3896     ghst_fields,
3897     21,
3898     "m.name LIKE UPPER('%s') AND m.address LIKE '%s' AND m.location LIKE UPPER('%s') AND s.name LIKE UPPER('%s') AND m.mach_id != 0 AND s.snet_id = m.snet_id",
3899     4,
3900     "m.name",
3901     &ghst_validate,
3902   },
3903
3904   {
3905     /* Q_GHBH - GET_HOST_BY_HWADDR */
3906     "get_host_by_hwaddr",
3907     "ghbh",
3908     2,
3909     RETRIEVE,
3910     "m",
3911     MACHINE_TABLE,
3912     "m.name, m.vendor, m.model, m.os, m.location, m.contact, m.use, m.status, TO_CHAR(m.statuschange, 'DD-mon-YYYY HH24:MI:SS'), s.name, m.address, m.owner_type, m.owner_id, m.acomment, m.ocomment, TO_CHAR(m.created, 'DD-mon-YYYY HH24:MI:SS'), m.creator, TO_CHAR(m.inuse, 'DD-mon-YYYY HH24:MI:SS'), TO_CHAR(m.modtime, 'DD-mon-YYYY HH24:MI:SS'), m.modby, m.modwith FROM machine m, subnet s",
3913     ghbh_fields,
3914     21,
3915     "m.hwaddr LIKE LOWER('%s') AND m.mach_id != 0 AND s.snet_id = m.snet_id",
3916     1,
3917     "m.name",
3918     &ghst_validate,
3919   },
3920
3921   {
3922     /* Q_GHHA - GET_HOST_HWADDR */
3923     "get_host_hwaddr",
3924     "ghha",
3925     2,
3926     RETRIEVE,
3927     "m",
3928     MACHINE_TABLE,
3929     "m.hwaddr FROM machine m",
3930     ghha_fields,
3931     1,
3932     "m.name LIKE UPPER('%s')",
3933     1,
3934     NULL,
3935     NULL,
3936   },
3937
3938   {
3939     /* Q_AHST - ADD_HOST */ /* uses prefetch_value() for mach_id */
3940     "add_host",
3941     "ahst",
3942     2,
3943     APPEND,
3944     "m",
3945     MACHINE_TABLE,
3946     "INTO machine (name, vendor, model, os, location, contact, use, status, statuschange, snet_id, address, owner_type, owner_id, acomment, ocomment, created, inuse, mach_id, creator) VALUES (UPPER('%s'), NVL(UPPER('%s'), CHR(0)), NVL(UPPER('%s'), CHR(0)), NVL(UPPER('%s'), CHR(0)), NVL(UPPER('%s'), CHR(0)), NVL('%s', CHR(0)), %s, %s, SYSDATE, %d, '%s', '%s', %d, %d, %d, SYSDATE, SYSDATE, %s, %s)",
3947     ahst_fields,
3948     14,
3949     0,
3950     0,
3951     NULL,
3952     &ahst_validate,
3953   },
3954
3955   {
3956     /* Q_UHST - UPDATE_HOST */
3957     "update_host",
3958     "uhst",
3959     2,
3960     UPDATE,
3961     "m",
3962     MACHINE_TABLE,
3963     "machine SET name = NVL(UPPER('%s'), CHR(0)), vendor = NVL(UPPER('%s'), CHR(0)), model = NVL(UPPER('%s'), CHR(0)), os = NVL(UPPER('%s'), CHR(0)), location = NVL(UPPER('%s'), CHR(0)), contact = NVL('%s', CHR(0)), use = %s, status = %s, snet_id = %d, address = '%s', owner_type = '%s', owner_id = %d, acomment = %d, ocomment = %d",
3964     uhst_fields,
3965     14,
3966     "mach_id = %d",
3967     1,
3968     NULL,
3969     &uhst_validate,
3970   },
3971
3972   {
3973     /* Q_UHHA - UPDATE_HOST_HWADDR */
3974     "update_host_hwaddr",
3975     "uhha",
3976     2,
3977     UPDATE,
3978     "m",
3979     MACHINE_TABLE,
3980     "machine SET hwaddr = NVL('%s', CHR(0))",
3981     uhha_fields,
3982     1,
3983     "mach_id = %d",
3984     1,
3985     NULL,
3986     &uhha_validate,
3987   },
3988
3989   {
3990     /* Q_DHST - DELETE_HOST */
3991     "delete_host",
3992     "dhst",
3993     2,
3994     DELETE,
3995     "m",
3996     MACHINE_TABLE,
3997     NULL,
3998     dhst_fields,
3999     0,
4000     "mach_id = %d",
4001     1,
4002     NULL,
4003     &dhst_validate,
4004   },
4005
4006   {
4007     /* Q_GMAC - GET_MACHINE */
4008     "get_machine",
4009     "gmac",
4010     2,
4011     RETRIEVE,
4012     "m",
4013     MACHINE_TABLE,
4014     "name, vendor, TO_CHAR(modtime, 'DD-mon-YYYY HH24:MI:SS'), modby, modwith FROM machine",
4015     gmac_fields,
4016     5,
4017     "name LIKE UPPER('%s') AND mach_id != 0",
4018     1,
4019     "name",
4020     &VDfix_modby,
4021   },
4022
4023   {
4024     /* Q_GHAL - GET_HOSTALIAS */
4025     "get_hostalias",
4026     "ghal",
4027     2,
4028     RETRIEVE,
4029     "a",
4030     HOSTALIAS_TABLE,
4031     "a.name, m.name FROM hostalias a, machine m",
4032     ghal_fields,
4033     2,
4034     "m.mach_id = a.mach_id and a.name LIKE UPPER('%s') AND m.name LIKE UPPER('%s')",
4035     2,
4036     "a.name",
4037     &ghal_validate,
4038   },
4039
4040   {
4041     /* Q_AHAL - ADD_HOSTALIAS */
4042     "add_hostalias",
4043     "ahal",
4044     2,
4045     APPEND,
4046     "a",
4047     HOSTALIAS_TABLE,
4048     "INTO hostalias (name, mach_id) VALUES (UPPER('%s'), %d)",
4049     ghal_fields,
4050     2,
4051     0,
4052     0,
4053     NULL,
4054     &ahal_validate,
4055   },
4056
4057   {
4058     /* Q_DHAL - DELETE_HOSTALIAS */
4059     "delete_hostalias",
4060     "dhal",
4061     2,
4062     DELETE,
4063     "a",
4064     HOSTALIAS_TABLE,
4065     NULL,
4066     ghal_fields,
4067     0,
4068     "name = UPPER('%s') AND mach_id = %d",
4069     2,
4070     NULL,
4071     &dhal_validate,
4072   },
4073
4074   {
4075     /* Q_GSNT - GET_SUBNET */
4076     "get_subnet",
4077     "gsnt",
4078     2,
4079     RETRIEVE,
4080     "s",
4081     SUBNET_TABLE,
4082     "name, description, saddr, mask, low, high, prefix, owner_type, owner_id, TO_CHAR(modtime, 'DD-mon-YYYY HH24:MI:SS'), modby, modwith FROM subnet",
4083     gsnt_fields,
4084     12,
4085     "name LIKE UPPER('%s')",
4086     1,
4087     "name",
4088     &gsnt_validate,
4089   },
4090
4091   {
4092     /* Q_ASNT - ADD_SUBNET */
4093     "add_subnet",
4094     "asnt",
4095     2,
4096     APPEND,
4097     "s",
4098     SUBNET_TABLE,
4099     "INTO subnet (name, description, saddr, mask, low, high, prefix, owner_type, owner_id, snet_id) VALUES (UPPER('%s'), NVL('%s', CHR(0)), %s, %s, %s, %s, NVL('%s', CHR(0)), '%s', %d, %s)",
4100     asnt_fields,
4101     9,
4102     0,
4103     0,
4104     NULL,
4105     &asnt_validate,
4106   },
4107
4108   {
4109     /* Q_USNT - UPDATE_SUBNET */
4110     "update_subnet",
4111     "usnt",
4112     2,
4113     UPDATE,
4114     "s",
4115     SUBNET_TABLE,
4116     "subnet SET name = UPPER('%s'), description = NVL('%s', CHR(0)), saddr = %s, mask = %s, low = %s, high = %s, prefix = NVL('%s', CHR(0)), owner_type = '%s', owner_id = %d",
4117     usnt_fields,
4118     9,
4119     "snet_id = %d",
4120     1,
4121     NULL,
4122     &usnt_validate,
4123   },
4124
4125   {
4126     /* Q_DSNT - DELETE_SUBNET */
4127     "delete_subnet",
4128     "dsnt",
4129     2,
4130     DELETE,
4131     "s",
4132     SUBNET_TABLE,
4133     NULL,
4134     dsnt_fields,
4135     0,
4136     "snet_id = %d",
4137     1,
4138     NULL,
4139     &dsnt_validate,
4140   },
4141
4142   {
4143     /* Q_GCLU - GET_CLUSTER */
4144     "get_cluster",
4145     "gclu",
4146     2,
4147     RETRIEVE,
4148     "c",
4149     CLUSTERS_TABLE,
4150     "name, description, location, TO_CHAR(modtime, 'DD-mon-YYYY HH24:MI:SS'), modby, modwith FROM clusters",
4151     gclu_fields,
4152     6,
4153     "name LIKE '%s' AND clu_id != 0",
4154     1,
4155     "name",
4156     &VDfix_modby,
4157   },
4158
4159   {
4160     /* Q_ACLU - ADD_CLUSTER */ /* uses prefetch_value() for clu_id */
4161     "add_cluster",
4162     "aclu",
4163     2,
4164     APPEND,
4165     "c",
4166     CLUSTERS_TABLE,
4167     "INTO clusters (name, description, location, clu_id) VALUES ('%s', NVL('%s', CHR(0)), NVL('%s', CHR(0)), %s)",
4168     aclu_fields,
4169     3,
4170     0,
4171     0,
4172     NULL,
4173     &aclu_validate,
4174   },
4175
4176   {
4177     /* Q_UCLU - UPDATE_CLUSTER */
4178     "update_cluster",
4179     "uclu",
4180     2,
4181     UPDATE,
4182     "c",
4183     CLUSTERS_TABLE,
4184     "clusters SET name = '%s', description = NVL('%s', CHR(0)), location = NVL('%s', CHR(0))",
4185     uclu_fields,
4186     3,
4187     "clu_id = %d",
4188     1,
4189     NULL,
4190     &uclu_validate,
4191   },
4192
4193   {
4194     /* Q_DCLU - DELETE_CLUSTER */
4195     "delete_cluster",
4196     "dclu",
4197     2,
4198     DELETE,
4199     "c",
4200     CLUSTERS_TABLE,
4201     NULL,
4202     dclu_fields,
4203     0,
4204     "clu_id = %d",
4205     1,
4206     NULL,
4207     &dclu_validate,
4208   },
4209
4210   {
4211     /* Q_GMCM - GET_MACHINE_TO_CLUSTER_MAP */
4212     "get_machine_to_cluster_map",
4213     "gmcm",
4214     2,
4215     RETRIEVE,
4216     "mcm",
4217     MCMAP_TABLE,
4218     "m.name, c.name FROM machine m, clusters c, mcmap mcm",
4219     gmcm_fields,
4220     2,
4221     "m.name LIKE UPPER('%s') AND c.name LIKE '%s' AND mcm.clu_id = c.clu_id AND mcm.mach_id = m.mach_id",
4222     2,
4223     "m.name",
4224     NULL,
4225   },
4226
4227   {
4228     /* Q_AMTC - ADD_MACHINE_TO_CLUSTER */
4229     "add_machine_to_cluster",
4230     "amtc",
4231     2,
4232     APPEND,
4233     "mcm",
4234     MCMAP_TABLE,
4235     "INTO mcmap (mach_id, clu_id) VALUES (%d, %d)",
4236     gmcm_fields,
4237     2,
4238     0,
4239     0,
4240     NULL,
4241     &amtc_validate,
4242   },
4243
4244   {
4245     /* Q_DMFC - DELETE_MACHINE_FROM_CLUSTER */
4246     "delete_machine_from_cluster",
4247     "dmfc",
4248     2,
4249     DELETE,
4250     "mcm",
4251     MCMAP_TABLE,
4252     0,
4253     gmcm_fields,
4254     0,
4255     "mach_id = %d AND clu_id = %d",
4256     2,
4257     NULL,
4258     &amtc_validate,
4259   },
4260
4261   {
4262     /* Q_GCLD - GET_CLUSTER_DATA */
4263     "get_cluster_data",
4264     "gcld",
4265     2,
4266     RETRIEVE,
4267     "svc",
4268     SVC_TABLE,
4269     "c.name, svc.serv_label, svc.serv_cluster FROM svc svc, clusters c",
4270     gcld_fields,
4271     3,
4272     "c.clu_id = svc.clu_id AND c.name LIKE '%s' AND svc.serv_label LIKE '%s'",
4273     2,
4274     "c.name, svc.serv_label",
4275     NULL,
4276   },
4277
4278   {
4279     /* Q_ACLD - ADD_CLUSTER_DATA */
4280     "add_cluster_data",
4281     "acld",
4282     2,
4283     APPEND,
4284     "svc",
4285     SVC_TABLE,
4286     "INTO svc (clu_id, serv_label, serv_cluster) VALUES (%d, '%s', '%s')",
4287     acld_fields,
4288     3,
4289     NULL,
4290     0,
4291     NULL,
4292     &acld_validate,
4293   },
4294
4295   {
4296     /* Q_DCLD - DELETE_CLUSTER_DATA */
4297     "delete_cluster_data",
4298     "dcld",
4299     2,
4300     DELETE,
4301     "svc",
4302     SVC_TABLE,
4303     NULL,
4304     acld_fields,
4305     0,
4306     "clu_id = %d AND serv_label = '%s' AND serv_cluster = '%s'",
4307     3,
4308     NULL,
4309     &dcld_validate,
4310   },
4311
4312   {
4313     /* Q_GLIN - GET_LIST_INFO, v2 */
4314     "get_list_info",
4315     "glin",
4316     2,
4317     RETRIEVE,
4318     "l",
4319     LIST_TABLE,
4320     "name, active, publicflg, hidden, maillist, grouplist, gid, acl_type, acl_id, description, TO_CHAR(modtime, 'DD-mon-YYYY HH24:MI:SS'), modby, modwith FROM list",
4321     glin2_fields,
4322     13,
4323     "name LIKE '%s'",
4324     1,
4325     "name",
4326     &glin_validate,
4327   },
4328
4329   {
4330     /* Q_GLIN - GET_LIST_INFO, v3 */
4331     "get_list_info",
4332     "glin",
4333     3,
4334     RETRIEVE,
4335     "l",
4336     LIST_TABLE,
4337     "name, active, publicflg, hidden, maillist, grouplist, gid, nfsgroup, acl_type, acl_id, description, TO_CHAR(modtime, 'DD-mon-YYYY HH24:MI:SS'), modby, modwith FROM list",
4338     glin3_fields,
4339     14,
4340     "name LIKE '%s'",
4341     1,
4342     "name",
4343     &glin_validate,
4344   },
4345
4346   {
4347     /* Q_GLIN - GET_LIST_INFO, v4 */
4348     "get_list_info",
4349     "glin",
4350     4,
4351     RETRIEVE,
4352     "l",
4353     LIST_TABLE,
4354     "name, active, publicflg, hidden, maillist, grouplist, gid, nfsgroup, acl_type, acl_id, memacl_type, memacl_id, description, TO_CHAR(modtime, 'DD-mon-YYYY HH24:MI:SS'), modby, modwith FROM list",
4355     glin_fields,
4356     16,
4357     "name LIKE '%s'",
4358     1,
4359     "name",
4360     &glin_validate,
4361   },
4362
4363   {
4364     /* Q_EXLN - EXPAND_LIST_NAMES */
4365     "expand_list_names",
4366     "exln",
4367     2,
4368     RETRIEVE,
4369     "l",
4370     LIST_TABLE,
4371     "name FROM list",
4372     glin_fields,
4373     1,
4374     "name LIKE '%s' AND list_id != 0",
4375     1,
4376     "name",
4377     NULL,
4378   },
4379
4380   {
4381     /* Q_ALIS - ADD_LIST, v2 */ /* uses prefetch_value() for list_id */
4382     "add_list",
4383     "alis",
4384     2,
4385     APPEND,
4386     "l",
4387     LIST_TABLE,
4388     "INTO list (name, active, publicflg, hidden, maillist, grouplist, gid, acl_type, acl_id, description, list_id) VALUES ('%s', %s, %s, %s, %s, %s, %s, '%s', %d, NVL('%s', CHR(0)), %s)",
4389     alis2_fields,
4390     10,
4391     0,
4392     0,
4393     NULL,
4394     &alis2_validate,
4395   },
4396
4397   {
4398     /* Q_ALIS - ADD_LIST, v3 */ /* uses prefetch_value() for list_id */
4399     "add_list",
4400     "alis",
4401     3,
4402     APPEND,
4403     "l",
4404     LIST_TABLE,
4405     "INTO list (name, active, publicflg, hidden, maillist, grouplist, gid, nfsgroup, acl_type, acl_id, description, list_id) VALUES ('%s', %s, %s, %s, %s, %s, %s, %s, '%s', %d, NVL('%s', CHR(0)), %s)", 
4406     alis3_fields,
4407     11,
4408     0,
4409     0,
4410     NULL,
4411     &alis3_validate,
4412   },
4413
4414   {
4415     /* Q_ALIS - ADD_LIST, v4 */ /* uses prefetch_value() for list_id */
4416     "add_list",
4417     "alis",
4418     4,
4419     APPEND,
4420     "l",
4421     LIST_TABLE,
4422     "INTO list (name, active, publicflg, hidden, maillist, grouplist, gid, nfsgroup, acl_type, acl_id, memacl_type, memacl_id, description, list_id) VALUES ('%s', %s, %s, %s, %s, %s, %s, %s, '%s', %d, '%s', %d, NVL('%s', CHR(0)), %s)",
4423     alis_fields,
4424     13,
4425     0,
4426     0,
4427     NULL,
4428     &alis_validate,
4429   },
4430
4431   {
4432     /* Q_ULIS - UPDATE_LIST, v2 */
4433     "update_list",
4434     "ulis",
4435     2,
4436     UPDATE,
4437     "l",
4438     LIST_TABLE,
4439     "list SET name = '%s', active = %s, publicflg = %s, hidden = %s, maillist = %s, grouplist = %s, gid = %s, acl_type = '%s', acl_id = %d, description = NVL('%s', CHR(0))",
4440     ulis2_fields,
4441     10,
4442     "list_id = %d",
4443     1,
4444     NULL,
4445     &ulis2_validate,
4446   },
4447
4448   {
4449     /* Q_ULIS - UPDATE_LIST, v3 */
4450     "update_list",
4451     "ulis",
4452     3,
4453     UPDATE,
4454     "l",
4455     LIST_TABLE,
4456     "list SET name = '%s', active = %s, publicflg = %s, hidden = %s, maillist = %s, grouplist = %s, gid = %s, nfsgroup = %s, acl_type = '%s', acl_id = %d, description = NVL('%s', CHR(0))",
4457     ulis3_fields,
4458     11,
4459     "list_id = %d",
4460     1,
4461     NULL,
4462     &ulis3_validate,
4463   },
4464
4465   {
4466     /* Q_ULIS, UPDATE_LIST, v4 */
4467     "update_list",
4468     "ulis",
4469     4,
4470     UPDATE,
4471     "l",
4472     LIST_TABLE,
4473     "list SET name = '%s', active = %s, publicflg = %s, hidden = %s, maillist = %s, grouplist = %s, gid = %s, nfsgroup = %s, acl_type = '%s', acl_id = %d, memacl_type = '%s', memacl_id = %d, description = NVL('%s', CHR(0))",
4474     ulis_fields,
4475     13,
4476     "list_id = %d",
4477     1,
4478     NULL,
4479     &ulis_validate,
4480   },
4481
4482   {
4483     /* Q_DLIS - DELETE_LIST */
4484     "delete_list",
4485     "dlis",
4486     2,
4487     DELETE,
4488     "l",
4489     LIST_TABLE,
4490     NULL,
4491     dlis_fields,
4492     0,
4493     "list_id = %d",
4494     1,
4495     NULL,
4496     &dlis_validate,
4497   },
4498
4499   {
4500     /* Q_AMTL - ADD_MEMBER_TO_LIST */
4501     "add_member_to_list",
4502     "amtl",
4503     2,
4504     APPEND,
4505     0,
4506     IMEMBERS_TABLE,
4507     0,
4508     amtl_fields,
4509     3,
4510     NULL,
4511     0,
4512     NULL,
4513     &amtl_validate,
4514   },
4515
4516   {
4517     /* Q_ATML - ADD_TAGGED_MEMBER_TO_LIST */
4518     "add_tagged_member_to_list",
4519     "atml",
4520     2,
4521     APPEND,
4522     0,
4523     IMEMBERS_TABLE,
4524     0,
4525     atml_fields,
4526     4,
4527     NULL,
4528     0,
4529     NULL,
4530     &atml_validate,
4531   },
4532
4533   {
4534     /* Q_TMOL - TAG_MEMBER_OF_LIST */
4535     "tag_member_of_list",
4536     "tmol",
4537     2,
4538     UPDATE,
4539     0,
4540     IMEMBERS_TABLE,
4541     0,
4542     atml_fields,
4543     1,
4544     0,
4545     3,
4546     NULL,
4547     &tmol_validate,
4548   },
4549
4550   {
4551     /* Q_DMFL - DELETE_MEMBER_FROM_LIST */
4552     "delete_member_from_list",
4553     "dmfl",
4554     2,
4555     DELETE,
4556     0,
4557     IMEMBERS_TABLE,
4558     NULL,
4559     amtl_fields,
4560     0,
4561     0,
4562     3,
4563     NULL,
4564     &dmfl_validate,
4565   },
4566
4567   {
4568     /* Q_GAUS - GET_ACE_USE */
4569     "get_ace_use",
4570     "gaus",
4571     2,
4572     RETRIEVE,
4573     0,
4574     0,
4575     0,
4576     gaus_fields,
4577     2,
4578     0,
4579     2,
4580     NULL,
4581     &gaus_validate,
4582   },
4583
4584   {
4585     /* Q_GHBO - GET_HOST_BY_OWNER */
4586     "get_host_by_owner",
4587     "ghbo",
4588     2,
4589     RETRIEVE,
4590     0,
4591     0,
4592     0,
4593     ghbo_fields,
4594     1,
4595     0,
4596     2,
4597     NULL,
4598     &ghbo_validate,
4599   },
4600
4601   {
4602     /* Q_QGLI - QUALIFIED_GET_LISTS */
4603     "qualified_get_lists",
4604     "qgli",
4605     2,
4606     RETRIEVE,
4607     0,
4608     LIST_TABLE,
4609     0,
4610     qgli_fields,
4611     1,
4612     0,
4613     5,
4614     NULL,
4615     &qgli_validate,
4616   },
4617
4618   {
4619     /* Q_GMOL - GET_MEMBERS_OF_LIST */
4620     "get_members_of_list",
4621     "gmol",
4622     2,
4623     RETRIEVE,
4624     NULL,
4625     IMEMBERS_TABLE,
4626     NULL,
4627     gmol_fields,
4628     2,
4629     NULL,
4630     1,
4631     NULL,
4632     &gmol_validate,
4633   },
4634
4635   {
4636     /* Q_GEML - GET_END_MEMBERS_OF_LIST */
4637     "get_end_members_of_list",
4638     "geml",
4639     2,
4640     RETRIEVE,
4641     NULL,
4642     IMEMBERS_TABLE,
4643     NULL,
4644     gmol_fields,
4645     2,
4646     NULL,
4647     1,
4648     NULL,
4649     &gmol_validate,
4650   },
4651
4652   {
4653     /* Q_GTML - GET_TAGGED_MEMBERS_OF_LIST */
4654     "get_tagged_members_of_list",
4655     "gtml",
4656     2,
4657     RETRIEVE,
4658     NULL,
4659     IMEMBERS_TABLE,
4660     NULL,
4661     gtml_fields,
4662     3,
4663     NULL,
4664     1,
4665     NULL,
4666     &gmol_validate,
4667   },
4668
4669   {
4670     /* Q_GLOM - GET_LISTS_OF_MEMBER */
4671     "get_lists_of_member",
4672     "glom",
4673     2,
4674     RETRIEVE,
4675     0,
4676     IMEMBERS_TABLE,
4677     0,
4678     glom_fields,
4679     6,
4680     0,
4681     2,
4682     NULL,
4683     &glom_validate,
4684   },
4685
4686   {
4687     /* Q_CMOL - COUNT_MEMBERS_OF_LIST */
4688     "count_members_of_list",
4689     "cmol",
4690     2,
4691     RETRIEVE,
4692     0,
4693     IMEMBERS_TABLE,
4694     0,
4695     cmol_fields,
4696     1,
4697     0,
4698     1,
4699     NULL,
4700     &cmol_validate,
4701   },
4702
4703   {
4704     /* Q_GSIN - GET_SERVER_INFO */
4705     "get_server_info",
4706     "gsin",
4707     2,
4708     RETRIEVE,
4709     "s",
4710     SERVERS_TABLE,
4711     "name, update_int, target_file, script, dfgen, dfcheck, type, enable, inprogress, harderror, errmsg, acl_type, acl_id, TO_CHAR(modtime, 'DD-mon-YYYY HH24:MI:SS'), modby, modwith FROM servers",
4712     gsin_fields,
4713     16,
4714     "name LIKE UPPER('%s')",
4715     1,
4716     "name",
4717     &gsin_validate,
4718   },
4719
4720   {
4721     /* Q_QGSV - QUALIFIED_GET_SERVER */
4722     "qualified_get_server",
4723     "qgsv",
4724     2,
4725     RETRIEVE,
4726     0,
4727     SERVERS_TABLE,
4728     0,
4729     qgsv_fields,
4730     1,
4731     0,
4732     3,
4733     NULL,
4734     &qgsv_validate,
4735   },
4736
4737   {
4738     /* Q_ASIN - ADD_SERVER_INFO */
4739     "add_server_info",
4740     "asin",
4741     2,
4742     APPEND,
4743     "s",
4744     SERVERS_TABLE,
4745     "INTO servers (name, update_int, target_file, script, type, enable, acl_type, acl_id) VALUES (UPPER('%s'), %s, '%s', '%s', '%s', %s, '%s', %d)",
4746     asin_fields,
4747     8,
4748     NULL,
4749     0,
4750     NULL,
4751     &asin_validate,
4752   },
4753
4754   {
4755     /* Q_USIN - UPDATE_SERVER_INFO */
4756     "update_server_info",
4757     "usin",
4758     2,
4759     UPDATE,
4760     "s",
4761     SERVERS_TABLE,
4762     "servers SET update_int = %s, target_file = '%s', script = '%s', type = '%s', enable = %s, acl_type = '%s', acl_id = %d",
4763     asin_fields,
4764     7,
4765     "name = UPPER('%s')",
4766     1,
4767     NULL,
4768     &asin_validate,
4769   },
4770
4771   {
4772     /* Q_RSVE - RESET_SERVER_ERROR */
4773     "reset_server_error",
4774     "rsve",
4775     2,
4776     UPDATE,
4777     "s",
4778     SERVERS_TABLE,
4779     "servers SET harderror = 0, dfcheck = dfgen",
4780     dsin_fields,
4781     0,
4782     "name = UPPER('%s')",
4783     1,
4784     NULL,
4785     &rsve_validate,
4786   },
4787
4788   {
4789     /* Q_SSIF - SET_SERVER_INTERNAL_FLAGS */
4790     "set_server_internal_flags",
4791     "ssif",
4792     2,
4793     UPDATE,
4794     "s",
4795     SERVERS_TABLE,
4796     "servers SET dfgen = %s, dfcheck = %s, inprogress = %s, harderror = %s, errmsg = NVL('%s', CHR(0))",
4797     ssif_fields,
4798     5,
4799     "name = UPPER('%s')",
4800     1,
4801     NULL,
4802     &ssif_validate,
4803   },
4804
4805   {
4806     /* Q_DSIN - DELETE_SERVER_INFO */
4807     "delete_server_info",
4808     "dsin",
4809     2,
4810     DELETE,
4811     "s",
4812     SERVERS_TABLE,
4813     NULL,
4814     dsin_fields,
4815     0,
4816     "name = UPPER('%s')",
4817     1,
4818     NULL,
4819     &dsin_validate,
4820   },
4821
4822   {
4823     /* Q_GSHI - GET_SERVER_HOST_INFO */
4824     "get_server_host_info",
4825     "gshi",
4826     2,
4827     RETRIEVE,
4828     "sh",
4829     SERVERHOSTS_TABLE,
4830     "sh.service, m.name, sh.enable, sh.override, sh.success, sh.inprogress, sh.hosterror, sh.hosterrmsg, sh.ltt, sh.lts, sh.value1, sh.value2, sh.value3, TO_CHAR(sh.modtime, 'DD-mon-YYYY HH24:MI:SS'), sh.modby, sh.modwith FROM serverhosts sh, machine m",
4831     gshi_fields,
4832     16,
4833     "sh.service LIKE UPPER('%s') AND m.name LIKE UPPER('%s') AND m.mach_id = sh.mach_id",
4834     2,
4835     "sh.service, m.name",
4836     &gshi_validate,
4837   },
4838
4839   {
4840     /* Q_QGSH - QUALIFIED_GET_SERVER_HOST */
4841     "qualified_get_server_host",
4842     "qgsh",
4843     2,
4844     RETRIEVE,
4845     0,
4846     SERVERHOSTS_TABLE,
4847     0,
4848     qgsh_fields,
4849     2,
4850     0,
4851     6,
4852     NULL,
4853     &qgsh_validate,
4854   },
4855
4856   {
4857     /* Q_ASHI - ADD_SERVER_HOST_INFO */
4858     "add_server_host_info",
4859     "ashi",
4860     2,
4861     APPEND,
4862     "sh",
4863     SERVERHOSTS_TABLE,
4864     "INTO serverhosts (service, mach_id, enable, value1, value2, value3) VALUES (UPPER('%s'), %d, %s, %s, %s, NVL('%s', CHR(0)))",
4865     ashi_fields,
4866     6,
4867     NULL,
4868     0,
4869     NULL,
4870     &ashi_validate,
4871   },
4872
4873   {
4874     /* Q_USHI - UPDATE_SERVER_HOST_INFO */
4875     "update_server_host_info",
4876     "ushi",
4877     2,
4878     UPDATE,
4879     "sh",
4880     SERVERHOSTS_TABLE,
4881     "serverhosts SET enable = %s, value1 = %s, value2 = %s, value3 = NVL('%s', CHR(0))",
4882     ashi_fields,
4883     4,
4884     "service = UPPER('%s') AND mach_id = %d",
4885     2,
4886     NULL,
4887     &ashi_validate,
4888   },
4889
4890   {
4891     /* Q_RSHE - RESET_SERVER_HOST_ERROR */
4892     "reset_server_host_error",
4893     "rshe",
4894     2,
4895     UPDATE,
4896     "sh",
4897     SERVERHOSTS_TABLE,
4898     "serverhosts SET hosterror = 0",
4899     dshi_fields,
4900     0,
4901     "service = UPPER('%s') AND mach_id = %d",
4902     2,
4903     NULL,
4904     &rshe_validate,
4905   },
4906
4907   {
4908     /* Q_SSHO - SET_SERVER_HOST_OVERRIDE */
4909     "set_server_host_override",
4910     "ssho",
4911     2,
4912     UPDATE,
4913     "sh",
4914     SERVERHOSTS_TABLE,
4915     "serverhosts SET override = 1",
4916     dshi_fields,
4917     0,
4918     "service = UPPER('%s') AND mach_id = %d",
4919     2,
4920     NULL,
4921     &ssho_validate,
4922   },
4923
4924   {
4925     /* Q_SSHI - SET_SERVER_HOST_INTERNAL */
4926     "set_server_host_internal",
4927     "sshi",
4928     2,
4929     UPDATE,
4930     "s",
4931     SERVERHOSTS_TABLE,
4932     "serverhosts SET override = %s, success = %s, inprogress = %s, hosterror = %s, hosterrmsg = NVL('%s', CHR(0)), ltt = %s, lts = %s",
4933     sshi_fields,
4934     7,
4935     "service = UPPER('%s') AND mach_id = %d",
4936     2,
4937     NULL,
4938     &sshi_validate,
4939   },
4940
4941   {
4942     /* Q_DSHI - DELETE_SERVER_HOST_INFO */
4943     "delete_server_host_info",
4944     "dshi",
4945     2,
4946     DELETE,
4947     "sh",
4948     SERVERHOSTS_TABLE,
4949     NULL,
4950     dshi_fields,
4951     0,
4952     "service = UPPER('%s') AND mach_id = %d",
4953     2,
4954     NULL,
4955     &dshi_validate,
4956   },
4957
4958   {
4959     /* Q_GSLO - GET_SERVER_LOCATIONS */
4960     "get_server_locations",
4961     "gslo",
4962     2,
4963     RETRIEVE,
4964     "sh",
4965     SERVERHOSTS_TABLE,
4966     "sh.service, m.name FROM serverhosts sh, machine m",
4967     gslo_fields,
4968     2,
4969     "sh.service LIKE UPPER('%s') AND sh.mach_id = m.mach_id",
4970     1,
4971     "sh.service, m.name",
4972     NULL,
4973   },
4974
4975   {
4976     /* Q_GFSL - GET_FILESYS_BY_LABEL */
4977     "get_filesys_by_label",
4978     "gfsl",
4979     2,
4980     RETRIEVE,
4981     "fs",
4982     FILESYS_TABLE,
4983     "fs.label, fs.type, m.name, fs.name, fs.mount, fs.rwaccess, fs.comments, u.login, l.name, fs.createflg, fs.lockertype, TO_CHAR(fs.modtime, 'DD-mon-YYYY HH24:MI:SS'), fs.modby, fs.modwith FROM filesys fs, machine m, users u, list l",
4984     gfsl_fields,
4985     14,
4986     "fs.label LIKE '%s' AND fs.mach_id = m.mach_id AND fs.owner = u.users_id AND fs.owners = l.list_id",
4987     1,
4988     "fs.label",
4989     &gfsl_validate,
4990   },
4991
4992   {
4993     /* Q_GFSM - GET_FILESYS_BY_MACHINE */
4994     "get_filesys_by_machine",
4995     "gfsm",
4996     2,
4997     RETRIEVE,
4998     "fs",
4999     FILESYS_TABLE,
5000     "fs.label, fs.type, m.name, fs.name, fs.mount, fs.rwaccess, fs.comments, u.login, l.name, fs.createflg, fs.lockertype, TO_CHAR(fs.modtime, 'DD-mon-YYYY HH24:MI:SS'), fs.modby, fs.modwith FROM filesys fs, machine m, users u, list l",
5001     gfsm_fields,
5002     14,
5003     "fs.mach_id = %d AND m.mach_id = fs.mach_id AND fs.owner = u.users_id AND fs.owners = l.list_id",
5004     1,
5005     "fs.label",
5006     &gfsm_validate,
5007   },
5008
5009   {
5010     /* Q_GFSN - GET_FILESYS_BY_NFSPHYS */
5011     "get_filesys_by_nfsphys",
5012     "gfsn",
5013     2,
5014     RETRIEVE,
5015     "fs",
5016     FILESYS_TABLE,
5017     "fs.label, fs.type, m.name, fs.name, fs.mount, fs.rwaccess, fs.comments, u.login, l.name, fs.createflg, fs.lockertype, TO_CHAR(fs.modtime, 'DD-mon-YYYY HH24:MI:SS'), fs.modby, fs.modwith FROM filesys fs, machine m, users u, list l, nfsphys np",
5018     gfsn_fields,
5019     14,
5020     "fs.mach_id = %d AND m.mach_id = fs.mach_id AND fs.owner = u.users_id AND fs.owners = l.list_id AND np.nfsphys_id = fs.phys_id AND np.dir LIKE '%s'",
5021     2,
5022     "fs.label",
5023     &gfsn_validate,
5024   },
5025
5026   {
5027     /* Q_GFSG - GET_FILESYS_BY_GROUP */
5028     "get_filesys_by_group",
5029     "gfsg",
5030     2,
5031     RETRIEVE,
5032     "fs",
5033     FILESYS_TABLE,
5034     "fs.label, fs.type, m.name, fs.name, fs.mount, fs.rwaccess, fs.comments, u.login, l.name, fs.createflg, fs.lockertype, TO_CHAR(fs.modtime, 'DD-mon-YYYY HH24:MI:SS'), fs.modby, fs.modwith FROM filesys fs, machine m, users u, list l",
5035     gfsg_fields,
5036     14,
5037     "fs.owners = %d AND m.mach_id = fs.mach_id AND fs.owner = u.users_id AND fs.owners = l.list_id",
5038     1,
5039     "fs.label",
5040     &gfsg_validate,
5041   },
5042
5043   {
5044     /* Q_GFSP - GET_FILESYS_BY_PATH */
5045     "get_filesys_by_path",
5046     "gfsp",
5047     2,
5048     RETRIEVE,
5049     "fs",
5050     FILESYS_TABLE,
5051     "fs.label, fs.type, m.name, fs.name, fs.mount, fs.rwaccess, fs.comments, u.login, l.name, fs.createflg, fs.lockertype, TO_CHAR(fs.modtime, 'DD-mon-YYYY HH24:MI:SS'), fs.modby, fs.modwith FROM filesys fs, machine m, users u, list l",
5052     gfsp_fields,
5053     14,
5054     "fs.name LIKE '%s' AND m.mach_id = fs.mach_id AND fs.owner = u.users_id AND fs.owners = list_id",
5055     1,
5056     "fs.label",
5057     &VDfix_modby,
5058   },
5059
5060   {
5061     /* Q_AFIL - ADD_FILESYS */ /* uses prefetch_value() for filsys_id */
5062     "add_filesys",
5063     "afil",
5064     2,
5065     APPEND,
5066     "fs",
5067     FILESYS_TABLE,
5068     "INTO filesys (label, type, mach_id, name, mount, rwaccess, comments, owner, owners, createflg, lockertype, filsys_id) VALUES ('%s', '%s', %d, NVL('%s', CHR(0)), NVL('%s', CHR(0)), '%s', NVL('%s', CHR(0)), %d, %d, %s, '%s', %s)",
5069     afil_fields,
5070     11,
5071     0,
5072     0,
5073     NULL,
5074     &afil_validate,
5075   },
5076
5077   {
5078     /* Q_UFIL - UPDATE_FILESYS */
5079     "update_filesys",
5080     "ufil",
5081     2,
5082     UPDATE,
5083     "fs",
5084     FILESYS_TABLE,
5085     "filesys SET label = '%s', type = '%s', mach_id = %d, name = NVL('%s', CHR(0)), mount = NVL('%s', CHR(0)), rwaccess = '%s', comments = NVL('%s', CHR(0)), owner = %d, owners = %d, createflg = %s, lockertype = '%s'",
5086     ufil_fields,
5087     11,
5088     "filsys_id = %d",
5089     1,
5090     NULL,
5091     &ufil_validate,
5092   },
5093
5094   {
5095     /* Q_DFIL - DELETE_FILESYS */
5096     "delete_filesys",
5097     "dfil",
5098     2,
5099     DELETE,
5100     "fs",
5101     FILESYS_TABLE,
5102     NULL,
5103     dfil_fields,
5104     0,
5105     "filsys_id = %d",
5106     1,
5107     NULL,
5108     &dfil_validate,
5109   },
5110
5111   {
5112     /* Q_GFGM - GET_FSGROUP_MEMBERS */
5113     "get_fsgroup_members",
5114     "gfgm",
5115     2,
5116     RETRIEVE,
5117     "fg",
5118     FSGROUP_TABLE,
5119     "fs.label, fg.key FROM fsgroup fg, filesys fs",
5120     gfgm_fields,
5121     2,
5122     "fg.group_id = %d AND fs.filsys_id = fg.filsys_id",
5123     1,
5124     "fs.label, fg.key",
5125     &gfgm_validate,
5126   },
5127
5128   {
5129     /* Q_AFTG - ADD_FILESYS_TO_FSGROUP */
5130     "add_filesys_to_fsgroup",
5131     "aftg",
5132     2,
5133     APPEND,
5134     "fg",
5135     FSGROUP_TABLE,
5136     "INTO fsgroup (group_id, filsys_id, key) VALUES (%d, %d, '%s')",
5137     gfgm_fields,
5138     3,
5139     NULL,
5140     0,
5141     NULL,
5142     &aftg_validate,
5143   },
5144
5145   {
5146     /* Q_RFFG - REMOVE_FILESYS_FROM_FSGROUP */
5147     "remove_filesys_from_fsgroup",
5148     "rffg",
5149     2,
5150     DELETE,
5151     "fg",
5152     FSGROUP_TABLE,
5153     NULL,
5154     gfgm_fields,
5155     0,
5156     "group_id = %d AND filsys_id = %d",
5157     2,
5158     NULL,
5159     &aftg_validate,
5160   },
5161
5162   {
5163     /* Q_GANF - GET_ALL_NFSPHYS */
5164     "get_all_nfsphys",
5165     "ganf",
5166     2,
5167     RETRIEVE,
5168     "np",
5169     NFSPHYS_TABLE,
5170     "m.name, np.dir, np.device, np.status, np.allocated, np.partsize, TO_CHAR(np.modtime, 'DD-mon-YYYY HH24:MI:SS'), np.modby, np.modwith FROM nfsphys np, machine m",
5171     ganf_fields,
5172     9,
5173     "m.mach_id = np.mach_id",
5174     0,
5175     "m.name, np.dir",
5176     &VDfix_modby,
5177   },
5178
5179   {
5180     /* Q_GNFP - GET_NFSPHYS */
5181     "get_nfsphys",
5182     "gnfp",
5183     2,
5184     RETRIEVE,
5185     "np",
5186     NFSPHYS_TABLE,
5187     "m.name, np.dir, np.device, np.status, np.allocated, np.partsize, TO_CHAR(np.modtime, 'DD-mon-YYYY HH24:MI:SS'), np.modby, np.modwith FROM nfsphys np, machine m",
5188     gnfp_fields,
5189     9,
5190     "np.mach_id = %d AND np.dir LIKE '%s' AND m.mach_id = np.mach_id",
5191     2,
5192     "m.name, np.dir",
5193     &gnfp_validate,
5194   },
5195
5196   {
5197     /* Q_ANFP - ADD_NFSPHYS */ /* uses prefetch_value() for nfsphys_id */
5198     "add_nfsphys",
5199     "anfp",
5200     2,
5201     APPEND,
5202     "np",
5203     NFSPHYS_TABLE,
5204     "INTO nfsphys (mach_id, dir, device, status, allocated, partsize, nfsphys_id) VALUES (%d, '%s', NVL('%s', CHR(0)), %s, %s, %s, %s)",
5205     ganf_fields,
5206     6,
5207     0,
5208     0,
5209     NULL,
5210     &anfp_validate,
5211   },
5212
5213   {
5214     /* Q_UNFP - UPDATE_NFSPHYS */
5215     "update_nfsphys",
5216     "unfp",
5217     2,
5218     UPDATE,
5219     "np",
5220     NFSPHYS_TABLE,
5221     "nfsphys SET device = NVL('%s', CHR(0)), status = %s, allocated = %s, partsize = %s",
5222     ganf_fields,
5223     4,
5224     "mach_id = %d AND dir = '%s'",
5225     2,
5226     NULL,
5227     &unfp_validate,
5228   },
5229
5230   {
5231     /* Q_AJNF - ADJUST_NFSPHYS_ALLOCATION */
5232     "adjust_nfsphys_allocation",
5233     "ajnf",
5234     2,
5235     UPDATE,
5236     "np",
5237     NFSPHYS_TABLE,
5238     "nfsphys SET allocated = allocated + %s",
5239     ajnf_fields,
5240     1,
5241     "mach_id = %d AND dir = '%s'",
5242     2,
5243     NULL,
5244     &ajnf_validate,
5245   },
5246
5247   {
5248     /* Q_DNFP - DELETE_NFSPHYS */
5249     "delete_nfsphys",
5250     "dnfp",
5251     2,
5252     DELETE,
5253     "np",
5254     NFSPHYS_TABLE,
5255     NULL,
5256     dnfp_fields,
5257     0,
5258     "mach_id = %d AND dir = '%s'",
5259     2,
5260     NULL,
5261     &dnfp_validate,
5262   },
5263
5264   {
5265     /* Q_GQOT - GET_QUOTA */
5266     "get_quota",
5267     "gqot",
5268     2,
5269     RETRIEVE,
5270     "q",
5271     QUOTA_TABLE,
5272     "fs.label, q.type, q.entity_id, q.quota, q.phys_id, m.name, TO_CHAR(q.modtime, 'DD-mon-YYYY HH24:MI:SS'), q.modby, q.modwith FROM quota q, filesys fs, machine m",
5273     gqot_fields,
5274     9,
5275     "fs.label LIKE '%s' AND q.type = '%s' AND q.entity_id = %d AND fs.filsys_id = q.filsys_id AND m.mach_id = fs.mach_id",
5276     3,
5277     NULL,
5278     &gqot_validate,
5279   },
5280
5281   {
5282     /* Q_GQBF - GET_QUOTA_BY_FILESYS */
5283     "get_quota_by_filesys",
5284     "gqbf",
5285     2,
5286     RETRIEVE,
5287     "q",
5288     QUOTA_TABLE,
5289     "fs.label, q.type, q.entity_id, q.quota, q.phys_id, m.name, TO_CHAR(q.modtime, 'DD-mon-YYYY HH24:MI:SS'), q.modby, q.modwith FROM quota q, filesys fs, machine m",
5290     gqbf_fields,
5291     9,
5292     "fs.label LIKE '%s' AND fs.filsys_id = q.filsys_id AND m.mach_id = fs.mach_id",
5293     1,
5294     "fs.label, q.type",
5295     &gqbf_validate,
5296   },
5297
5298   {
5299     /* Q_AQOT - ADD_QUOTA */ /* prefetch_filsys() gets last 1 value */
5300     "add_quota",
5301     "aqot",
5302     2,
5303     APPEND,
5304     0,
5305     QUOTA_TABLE,
5306     "INTO quota (filsys_id, type, entity_id, quota, phys_id) VALUES ('%s', %d, %d, %s, %s)",
5307     aqot_fields,
5308     4,
5309     NULL,
5310     0,
5311     NULL,
5312     &aqot_validate,
5313   },
5314
5315   {
5316     /* Q_UQOT - UPDATE_QUOTA */
5317     "update_quota",
5318     "uqot",
5319     2,
5320     UPDATE,
5321     0,
5322     QUOTA_TABLE,
5323     "quota SET quota = %s",
5324     aqot_fields,
5325     1,
5326     0,
5327     3,
5328     NULL,
5329     &uqot_validate,
5330   },
5331
5332   {
5333     /* Q_DQOT - DELETE_QUOTA */
5334     "delete_quota",
5335     "dqot",
5336     2,
5337     DELETE,
5338     0,
5339     QUOTA_TABLE,
5340     NULL,
5341     aqot_fields,
5342     0,
5343     0,
5344     3,
5345     NULL,
5346     &dqot_validate,
5347   },
5348
5349   {
5350     /* Q_GNFQ - GET_NFS_QUOTAS */
5351     "get_nfs_quota",
5352     "gnfq",
5353     2,
5354     RETRIEVE,
5355     "q",
5356     QUOTA_TABLE,
5357     "fs.label, u.login, q.quota, q.phys_id, m.name, TO_CHAR(q.modtime, 'DD-mon-YYYY HH24:MI:SS'), q.modby, q.modwith FROM quota q, filesys fs, users u, machine m",
5358     gnfq_fields,
5359     8,
5360     "fs.label LIKE '%s' AND q.type = 'USER' AND q.entity_id = u.users_id AND fs.filsys_id = q.filsys_id AND m.mach_id = fs.mach_id AND u.login = '%s'",
5361     2,
5362     "fs.label, u.login",
5363     &gnfq_validate,
5364   },
5365
5366   {
5367     /* Q_GNQP - GET_NFS_QUOTAS_BY_PARTITION */
5368     "get_nfs_quotas_by_partition",
5369     "gnqp",
5370     2,
5371     RETRIEVE,
5372     "q",
5373     QUOTA_TABLE,
5374     "fs.label, u.login, q.quota, np.dir, m.name FROM quota q, filesys fs, users u, nfsphys np, machine m",
5375     gnqp_fields,
5376     5,
5377     "np.mach_id = %d AND np.dir LIKE '%s' AND q.phys_id = np.nfsphys_id AND fs.filsys_id = q.filsys_id AND q.type = 'USER' AND u.users_id = q.entity_id AND m.mach_id = np.mach_id",
5378     2,
5379     "fs.label",
5380     NULL,
5381   },
5382
5383   {
5384     /* Q_ANFQ - ADD_NFS_QUOTA */ /* prefetch_filsys() gets last 1 value */
5385     "add_nfs_quota",
5386     "anfq",
5387     2,
5388     APPEND,
5389     0,
5390     QUOTA_TABLE,
5391     "INTO quota (type, filsys_id, entity_id, quota, phys_id ) VALUES ('USER', %d, %d, %s, %s)",
5392     anfq_fields,
5393     3,
5394     NULL,
5395     0,
5396     NULL,
5397     &anfq_validate,
5398   },
5399
5400   {
5401     /* Q_UNFQ - UPDATE_NFS_QUOTA */
5402     "update_nfs_quota",
5403     "unfq",
5404     2,
5405     UPDATE,
5406     0,
5407     QUOTA_TABLE,
5408     "quota SET quota = %s",
5409     anfq_fields,
5410     1,
5411     0,
5412     2,
5413     NULL,
5414     &unfq_validate,
5415   },
5416
5417   {
5418     /* Q_DNFQ - DELETE_NFS_QUOTA */
5419     "delete_nfs_quota",
5420     "dnfq",
5421     2,
5422     DELETE,
5423     0,
5424     QUOTA_TABLE,
5425     NULL,
5426     anfq_fields,
5427     0,
5428     0,
5429     2,
5430     NULL,
5431     &dnfq_validate,
5432   },
5433
5434   {
5435     /* Q_GZCL - GET_ZEPHYR_CLASS, v2 */
5436     "get_zephyr_class",
5437     "gzcl",
5438     2,
5439     RETRIEVE,
5440     "z",
5441     ZEPHYR_TABLE,
5442     "class, xmt_type, xmt_id, sub_type, sub_id, iws_type, iws_id, iui_type, iui_id, TO_CHAR(modtime, 'DD-mon-YYYY HH24:MI:SS'), modby, modwith FROM zephyr",
5443     gzcl2_fields,
5444     12,
5445     "class LIKE '%s'",
5446     1,
5447     "class",
5448     &gzcl_validate,
5449   },
5450
5451   {
5452     /* Q_GZCL - GET_ZEPHYR_CLASS, v5 */
5453     "get_zephyr_class",
5454     "gzcl",
5455     5,
5456     RETRIEVE,
5457     "z",
5458     ZEPHYR_TABLE,
5459     "class, xmt_type, xmt_id, sub_type, sub_id, iws_type, iws_id, iui_type, iui_id, owner_type, owner_id, TO_CHAR(modtime, 'DD-mon-YYYY HH24:MI:SS'), modby, modwith FROM zephyr",
5460     gzcl_fields,
5461     14,
5462     "class LIKE '%s'",
5463     1,
5464     "class",
5465     &gzcl_validate,
5466   },
5467
5468   {
5469     /* Q_AZCL - ADD_ZEPHYR_CLASS, v2 */
5470     "add_zephyr_class",
5471     "azcl",
5472     2,
5473     APPEND,
5474     "z",
5475     ZEPHYR_TABLE,
5476     "INTO zephyr (class, xmt_type, xmt_id, sub_type, sub_id, iws_type, iws_id, iui_type, iui_id) VALUES ('%s', '%s', %d, '%s', %d, '%s', %d, '%s', %d)",
5477     azcl2_fields,
5478     9,
5479     0,
5480     0,
5481     NULL,
5482     &azcl2_validate,
5483   },
5484
5485   {
5486     /* Q_AZCL - ADD_ZEPHYR_CLASS, v5 */
5487     "add_zephyr_class",
5488     "azcl",
5489     5,
5490     APPEND,
5491     "z",
5492     ZEPHYR_TABLE,
5493     "INTO zephyr (class, xmt_type, xmt_id, sub_type, sub_id, iws_type, iws_id, iui_type, iui_id, owner_type, owner_id) VALUES ('%s', '%s', %d, '%s', %d, '%s', %d, '%s', %d, '%s', %d)",
5494     azcl_fields,
5495     11,
5496     0,
5497     0,
5498     NULL,
5499     &azcl_validate,
5500   },
5501
5502   {
5503     /* Q_UZCL - UPDATE_ZEPHYR_CLASS, v2 */
5504     "update_zephyr_class",
5505     "uzcl",
5506     2,
5507     UPDATE,
5508     "z",
5509     ZEPHYR_TABLE,
5510     "zephyr SET class = '%s', xmt_type = '%s', xmt_id = %d, sub_type = '%s', sub_id = %d, iws_type = '%s', iws_id = %d, iui_type = '%s', iui_id = %d",
5511     uzcl2_fields,
5512     9,
5513     "class = '%s'",
5514     1,
5515     NULL,
5516     &uzcl2_validate,
5517   },
5518
5519   {
5520     /* Q_UZCL - UPDATE_ZEPHYR_CLASS, v5 */
5521     "update_zephyr_class",
5522     "uzcl",
5523     5,
5524     UPDATE,
5525     "z",
5526     ZEPHYR_TABLE,
5527     "zephyr SET class = '%s', xmt_type = '%s', xmt_id = %d, sub_type = '%s', sub_id = %d, iws_type = '%s', iws_id = %d, iui_type = '%s', iui_id = %d, owner_type = '%s', owner_id = %d",
5528     uzcl_fields,
5529     11,
5530     "class = '%s'",
5531     1,
5532     NULL,
5533     &uzcl_validate,
5534   },
5535
5536   {
5537     /* Q_DZCL - DELETE_ZEPHYR_CLASS */
5538     "delete_zephyr_class",
5539     "dzcl",
5540     2,
5541     DELETE,
5542     "z",
5543     ZEPHYR_TABLE,
5544     0,
5545     uzcl_fields,
5546     0,
5547     "class = '%s'",
5548     1,
5549     NULL,
5550     &dzcl_validate,
5551   },
5552
5553   {
5554     /* Q_GSHA - GET_SERVER_HOST_ACCESS */
5555     "get_server_host_access",
5556     "gsha",
5557     2,
5558     RETRIEVE,
5559     "ha",
5560     HOSTACCESS_TABLE,
5561     "m.name, ha.acl_type, ha.acl_id, TO_CHAR(ha.modtime, 'DD-mon-YYYY HH24:MI:SS'), ha.modby, ha.modwith FROM hostaccess ha, machine m",
5562     gsha_fields,
5563     6,
5564     "m.name LIKE UPPER('%s') AND ha.mach_id = m.mach_id",
5565     1,
5566     "m.name",
5567     &gsha_validate,
5568   },
5569
5570   {
5571     /* Q_ASHA - ADD_SERVER_HOST_ACCESS */
5572     "add_server_host_access",
5573     "asha",
5574     2,
5575     APPEND,
5576     "ha",
5577     HOSTACCESS_TABLE,
5578     "INTO hostaccess (mach_id, acl_type, acl_id) VALUES (%d, '%s', %d)",
5579     asha_fields,
5580     3,
5581     0,
5582     0,
5583     NULL,
5584     &asha_validate,
5585   },
5586
5587   {
5588     /* Q_USHA - UPDATE_SERVER_HOST_ACCESS */
5589     "update_server_host_access",
5590     "usha",
5591     2,
5592     UPDATE,
5593     "ha",
5594     HOSTACCESS_TABLE,
5595     "hostaccess SET acl_type = '%s', acl_id = %d",
5596     asha_fields,
5597     2,
5598     "mach_id = %d",
5599     1,
5600     NULL,
5601     &asha_validate,
5602   },
5603
5604   {
5605     /* Q_DSHA - DELETE_SERVER_HOST_ACCESS */
5606     "delete_server_host_access",
5607     "dsha",
5608     2,
5609     DELETE,
5610     "ha",
5611     HOSTACCESS_TABLE,
5612     0,
5613     asha_fields,
5614     0,
5615     "mach_id = %d",
5616     1,
5617     NULL,
5618     &VDmach,
5619   },
5620
5621   {
5622     /* Q_GACL - GET_ACL */
5623     "get_acl",
5624     "gacl",
5625     2,
5626     RETRIEVE,
5627     "ac",
5628     ACL_TABLE,
5629     "m.name, ac.target, ac.kind, l.name FROM acl ac, machine m, list l",
5630     gacl_fields,
5631     4,
5632     "m.mach_id = %d AND m.mach_id = ac.mach_id AND ac.target LIKE '%s' AND l.list_id = ac.list_id",
5633     2,
5634     "m.name, ac.target, ac.kind",
5635     &gacl_validate,
5636   },
5637
5638   {
5639     /* Q_AACL - ADD_ACL */
5640     "add_acl",
5641     "aacl",
5642     2,
5643     APPEND,
5644     "ac",
5645     ACL_TABLE,
5646     "INTO acl (mach_id, target, kind, list_id) VALUES (%d, '%s', '%s', %d)",
5647     aacl_fields,
5648     4,
5649     0,
5650     0,
5651     NULL,
5652     &aacl_validate,
5653   },
5654
5655   {
5656     /* Q_DACL - DELETE_ACL */
5657     "delete_acl",
5658     "dacl",
5659     2,
5660     DELETE,
5661     "ac",
5662     ACL_TABLE,
5663     0,
5664     dacl_fields,
5665     0,
5666     "mach_id = %d AND target = '%s'",
5667     2,
5668     NULL,
5669     &gacl_validate,
5670   },
5671
5672   {
5673     /* Q_GSVC - GET_SERVICE */
5674     "get_service",
5675     "gsvc",
5676     2,
5677     RETRIEVE,
5678     "ss",
5679     SERVICES_TABLE,
5680     "name, protocol, port, description, TO_CHAR(modtime, 'DD-mon-YYYY HH24:MI:SS'), modby, modwith FROM services",
5681     gsvc_fields,
5682     7,
5683     "name LIKE '%s' AND protocol LIKE '%s'",
5684     2,
5685     "name",
5686     &VDfix_modby,
5687   },
5688
5689   {
5690     /* Q_ASVC - ADD_SERVICE */
5691     "add_service",
5692     "asvc",
5693     2,
5694     APPEND,
5695     "ss",
5696     SERVICES_TABLE,
5697     "INTO services (name, protocol, port, description) VALUES ('%s', '%s', %s, NVL('%s', CHR(0)))",
5698     asvc_fields,
5699     4,
5700     NULL,
5701     0,
5702     NULL,
5703     &asvc_validate,
5704   },
5705
5706   {
5707     /* Q_DSVC - DELETE_SERVICE */
5708     "delete_service",
5709     "dsvc",
5710     2,
5711     DELETE,
5712     "ss",
5713     SERVICES_TABLE,
5714     0,
5715     dsvc_fields,
5716     0,
5717     "name = '%s' AND protocol = '%s'",
5718     2,
5719     NULL,
5720     &dsvc_validate,
5721   },
5722
5723   {
5724     /* Q_GPRN - GET_PRINTER */
5725     "get_printer",
5726     "gprn",
5727     2,
5728     RETRIEVE,
5729     "pr",
5730     PRINTERS_TABLE,
5731     "pr.name, pr.type, pr.hwtype, pr.duplexname, m1.name, m2.name, m3.name, pr.rp, m4.name, pr.ka, pr.pc, l1.name, l2.name, pr.banner, pr.location, pr.contact, TO_CHAR(pr.modtime, 'DD-mon-YYYY HH24:MI:SS'), pr.modby, pr.modwith FROM printers pr, machine m1, machine m2, machine m3, machine m4, list l1, list l2",
5732     gprn_fields,
5733     19,
5734     "pr.name LIKE '%s' AND m1.mach_id = pr.mach_id AND m2.mach_id = pr.loghost AND m3.mach_id = pr.rm AND m4.mach_id = pr.rq AND l1.list_id = pr.ac AND l2.list_id = pr.lpc_acl",
5735     1,
5736     "pr.name",
5737     &VDfix_modby,
5738   },
5739
5740   {
5741     /* Q_GPBD - GET_PRINTER_BY_DUPLEXNAME */
5742     "get_printer_by_duplexname",
5743     "gpbd",
5744     2,
5745     RETRIEVE,
5746     "pr",
5747     PRINTERS_TABLE,
5748     "pr.name, pr.type, pr.hwtype, pr.duplexname, m1.name, m2.name, m3.name, pr.rp, m4.name, pr.ka, pr.pc, l1.name, l2.name, pr.banner, pr.location, pr.contact, TO_CHAR(pr.modtime, 'DD-mon-YYYY HH24:MI:SS'), pr.modby, pr.modwith FROM printers pr, machine m1, machine m2, machine m3, machine m4, list l1, list l2",
5749     gpbd_fields,
5750     19,
5751     "pr.duplexname LIKE '%s' AND m1.mach_id = pr.mach_id AND m2.mach_id = pr.loghost AND m3.mach_id = pr.rm AND m4.mach_id = pr.rq AND l1.list_id = pr.ac AND l2.list_id = pr.lpc_acl",
5752     1,
5753     "pr.name",
5754     &VDfix_modby,
5755   },
5756
5757   {
5758     /* Q_GPBE - GET_PRINTER_BY_ETHERNET */
5759     "get_printer_by_ethernet",
5760     "gpbe",
5761     2,
5762     RETRIEVE,
5763     "pr",
5764     PRINTERS_TABLE,
5765     "pr.name, pr.type, pr.hwtype, pr.duplexname, m1.name, m2.name, m3.name, pr.rp, m4.name, pr.ka, pr.pc, l1.name, l2.name, pr.banner, pr.location, pr.contact, TO_CHAR(pr.modtime, 'DD-mon-YYYY HH24:MI:SS'), pr.modby, pr.modwith FROM printers pr, machine m1, machine m2, machine m3, machine m4, list l1, list l2",
5766     gpbd_fields,
5767     19,
5768     "m1.hwaddr LIKE LOWER('%s') AND m1.mach_id = pr.mach_id AND m2.mach_id = pr.loghost AND m3.mach_id = pr.rm AND m4.mach_id = pr.rq AND l1.list_id = pr.ac AND l2.list_id = pr.lpc_acl",
5769     1,
5770     "pr.name",
5771     &VDfix_modby,
5772   },
5773
5774   {
5775     /* Q_GPBH - GET_PRINTER_BY_HOSTNAME */
5776     "get_printer_by_hostname",
5777     "gpbh",
5778     2,
5779     RETRIEVE,
5780     "pr",
5781     PRINTERS_TABLE,
5782     "pr.name, pr.type, pr.hwtype, pr.duplexname, m1.name, m2.name, m3.name, pr.rp, m4.name, pr.ka, pr.pc, l1.name, l2.name, pr.banner, pr.location, pr.contact, TO_CHAR(pr.modtime, 'DD-mon-YYYY HH24:MI:SS'), pr.modby, pr.modwith FROM printers pr, machine m1, machine m2, machine m3, machine m4, list l1, list l2",
5783     gpbh_fields,
5784     19,
5785     "m1.name LIKE UPPER('%s') AND m1.mach_id = pr.mach_id AND m2.mach_id = pr.loghost AND m3.mach_id = pr.rm AND m4.mach_id = pr.rq AND l1.list_id = pr.ac AND l2.list_id = pr.lpc_acl",
5786     1,
5787     "pr.name",
5788     &VDfix_modby,
5789   },
5790
5791   {
5792     /* Q_GPBR - GET_PRINTER_BY_RM */
5793     "get_printer_by_rm",
5794     "gpbr",
5795     2,
5796     RETRIEVE,
5797     "pr",
5798     PRINTERS_TABLE,
5799     "pr.name, pr.type, pr.hwtype, pr.duplexname, m1.name, m2.name, m3.name, pr.rp, m4.name, pr.ka, pr.pc, l1.name, l2.name, pr.banner, pr.location, pr.contact, TO_CHAR(pr.modtime, 'DD-mon-YYYY HH24:MI:SS'), pr.modby, pr.modwith FROM printers pr, machine m1, machine m2, machine m3, machine m4, list l1, list l2",
5800     gpbr_fields,
5801     19,
5802     "m3.name LIKE UPPER('%s') AND m1.mach_id = pr.mach_id AND m2.mach_id = pr.loghost AND m3.mach_id = pr.rm AND m4.mach_id = pr.rq AND l1.list_id = pr.ac AND l2.list_id = pr.lpc_acl",
5803     1,
5804     "pr.name",
5805     &VDfix_modby,
5806   },
5807
5808   {
5809     /* Q_GPBL - GET_PRINTER_BY_LOCATION */
5810     "get_printer_by_location",
5811     "gpbl",
5812     2,
5813     RETRIEVE,
5814     "pr",
5815     PRINTERS_TABLE,
5816     "pr.name, pr.type, pr.hwtype, pr.duplexname, m1.name, m2.name, m3.name, pr.rp, m4.name, pr.ka, pr.pc, l1.name, l2.name, pr.banner, pr.location, pr.contact, TO_CHAR(pr.modtime, 'DD-mon-YYYY HH24:MI:SS'), pr.modby, pr.modwith FROM printers pr, machine m1, machine m2, machine m3, machine m4, list l1, list l2",
5817     gpbl_fields,
5818     19,
5819     "UPPER(pr.location) LIKE UPPER('%s') AND m1.mach_id = pr.mach_id AND m2.mach_id = pr.loghost AND m3.mach_id = pr.rm AND m4.mach_id = pr.rq AND l1.list_id = pr.ac AND l2.list_id = pr.lpc_acl",
5820     1,
5821     "pr.name",
5822     &VDfix_modby,
5823   },
5824
5825   {
5826     /* Q_GPBC - GET_PRINTER_BY_CONTACT */
5827     "get_printer_by_contact",
5828     "gpbc",
5829     2,
5830     RETRIEVE,
5831     "pr",
5832     PRINTERS_TABLE,
5833     "pr.name, pr.type, pr.hwtype, pr.duplexname, m1.name, m2.name, m3.name, pr.rp, m4.name, pr.ka, pr.pc, l1.name, l2.name, pr.banner, pr.location, pr.contact, TO_CHAR(pr.modtime, 'DD-mon-YYYY HH24:MI:SS'), pr.modby, pr.modwith FROM printers pr, machine m1, machine m2, machine m3, machine m4, list l1, list l2",
5834     gpbc_fields,
5835     19,
5836     "UPPER(pr.contact) LIKE UPPER('%s') AND m1.mach_id = pr.mach_id AND m2.mach_id = pr.loghost AND m3.mach_id = pr.rm AND m4.mach_id = pr.rq AND l1.list_id = pr.ac AND l2.list_id = pr.lpc_acl",
5837     1,
5838     "pr.name",
5839     &VDfix_modby,
5840   },
5841
5842   {
5843     /* Q_APRN - ADD_PRINTER */
5844     "add_printer",
5845     "aprn",
5846     2,
5847     APPEND,
5848     "pr",
5849     PRINTERS_TABLE,
5850     "INTO printers (name, type, hwtype, duplexname, mach_id, loghost, rm, rp, rq, ka, pc, ac, lpc_acl, banner, location, contact) VALUES ('%s', '%s', '%s', NVL('%s', CHR(0)), %d, %d, %d, NVL('%s', CHR(0)), %d, %s, %s, %d, %d, %s, NVL('%s', CHR(0)), NVL('%s', CHR(0)))",
5851     aprn_fields,
5852     16,
5853     0,
5854     0,
5855     NULL,
5856     &aprn_validate,
5857   },
5858
5859   {
5860     /* Q_UPRN - UPDATE_PRINTER */
5861     "update_printer",
5862     "uprn",
5863     2,
5864     UPDATE,
5865     "pr",
5866     PRINTERS_TABLE,
5867     "printers SET name = '%s', type = '%s', hwtype = '%s', duplexname = NVL('%s', CHR(0)), mach_id = %d, loghost = %d, rm = %d, rp = NVL('%s', CHR(0)), rq = %d, ka = %d, pc = %d, ac = %d, lpc_acl = %d, banner = %d, location = NVL('%s', CHR(0)), contact = NVL('%s', CHR(0))",
5868     uprn_fields,
5869     16,
5870     0,
5871     0,
5872     NULL,
5873     &uprn_validate,
5874   },
5875
5876   {
5877     /* Q_DPRN - DELETE_PRINTER */
5878     "delete_printer",
5879     "dprn",
5880     2,
5881     DELETE,
5882     "pr",
5883     PRINTERS_TABLE,
5884     0,
5885     aprn_fields,
5886     0,
5887     "name = '%s'",
5888     1,
5889     NULL,
5890     &dprn_validate,
5891   },
5892
5893   {
5894     /* Q_GPSV - GET_PRINT_SERVER */
5895     "get_print_server",
5896     "gpsv",
5897     2,
5898     RETRIEVE,
5899     "ps",
5900     PRINTSERVERS_TABLE,
5901     "m.name, ps.kind, s.string, ps.owner_type, ps.owner_id, l.name, TO_CHAR(ps.modtime, 'DD-mon-YYYY HH24:MI:SS'), ps.modby, ps.modwith FROM printservers ps, machine m, strings s, list l",
5902     gpsv_fields,
5903     9,
5904     "ps.mach_id = %d AND m.mach_id = ps.mach_id AND s.string_id = ps.printer_types AND l.list_id = ps.lpc_acl",
5905     1,
5906     NULL,
5907     &gpsv_validate,
5908   },
5909
5910   {
5911     /* Q_APSV - ADD_PRINT_SERVER */
5912     "add_print_server",
5913     "apsv",
5914     2,
5915     APPEND,
5916     "ps",
5917     PRINTSERVERS_TABLE,
5918     "INTO printservers (mach_id, kind, printer_types, owner_type, owner_id, lpc_acl) VALUES (%d, '%s', %d, '%s', %d, %d)",
5919     apsv_fields,
5920     6,
5921     0,
5922     0,
5923     NULL,
5924     &apsv_validate,
5925   },
5926
5927   {
5928     /* Q_UPSV - UPDATE_PRINT_SERVER */
5929     "update_print_server",
5930     "upsv",
5931     2,
5932     UPDATE,
5933     "ps",
5934     PRINTSERVERS_TABLE,
5935     "printservers SET kind = '%s', printer_types = %d, owner_type = '%s', owner_id = %d, lpc_acl = %d",
5936     apsv_fields,
5937     5,
5938     "mach_id = %d",
5939     1,
5940     NULL,
5941     &apsv_validate,
5942   },
5943
5944   {
5945     /* Q_DPSV - DELETE_PRINT_SERVER */
5946     "delete_print_server",
5947     "dpsv",
5948     2,
5949     DELETE,
5950     "ps",
5951     PRINTSERVERS_TABLE,
5952     0,
5953     dpsv_fields,
5954     0,
5955     "mach_id = %d",
5956     1,
5957     NULL,
5958     &dpsv_validate,
5959   },
5960
5961   {
5962     /* Q_GALI - GET_ALIAS */
5963     "get_alias",
5964     "gali",
5965     2,
5966     RETRIEVE,
5967     "a",
5968     ALIAS_TABLE,
5969     "name, type, trans FROM alias",
5970     gali_fields,
5971     3,
5972     "name LIKE '%s' AND type LIKE '%s' AND trans LIKE '%s'",
5973     3,
5974     "type, name, trans",
5975     NULL,
5976   },
5977
5978   {
5979     /* Q_AALI - ADD_ALIAS */
5980     "add_alias",
5981     "aali",
5982     2,
5983     APPEND,
5984     "a",
5985     ALIAS_TABLE,
5986     "INTO alias (name, type, trans) VALUES ('%s', '%s', '%s')",
5987     aali_fields,
5988     3,
5989     NULL,
5990     0,
5991     NULL,
5992     &aali_validate,
5993   },
5994
5995   {
5996     /* Q_DALI - DELETE_ALIAS */
5997     "delete_alias",
5998     "dali",
5999     2,
6000     DELETE,
6001     "a",
6002     ALIAS_TABLE,
6003     NULL,
6004     aali_fields,
6005     0,
6006     "name = '%s' AND type = '%s' AND  trans = '%s'",
6007     3,
6008     NULL,
6009     &dali_validate,
6010   },
6011
6012   {
6013     /* Q_GVAL - GET_VALUE */
6014     "get_value",
6015     "gval",
6016     2,
6017     RETRIEVE,
6018     "val",
6019     NUMVALUES_TABLE,
6020     "value FROM numvalues",
6021     gval_fields,
6022     1,
6023     "name = '%s'",
6024     1,
6025     NULL,
6026     &gval_validate,
6027   },
6028
6029   {
6030     /* Q_AVAL - ADD_VALUE */
6031     "add_value",
6032     "aval",
6033     2,
6034     APPEND,
6035     "val",
6036     NUMVALUES_TABLE,
6037     "INTO numvalues (name, value) VALUES ('%s', %s)",
6038     aval_fields,
6039     2,
6040     NULL,
6041     0,
6042     NULL,
6043     &aval_validate,
6044   },
6045
6046   {
6047     /* Q_UVAL - UPDATE_VALUE */
6048     "update_value",
6049     "uval",
6050     2,
6051     UPDATE,
6052     "val",
6053     NUMVALUES_TABLE,
6054     "numvalues SET value = %s",
6055     aval_fields,
6056     1,
6057     "name = '%s'",
6058     1,
6059     NULL,
6060     &aval_validate,
6061   },
6062
6063   {
6064     /* Q_DVAL - DELETE_VALUE */
6065     "delete_value",
6066     "dval",
6067     2,
6068     DELETE,
6069     "val",
6070     NUMVALUES_TABLE,
6071     NULL,
6072     dval_fields,
6073     0,
6074     "name = '%s'",
6075     1,
6076     NULL,
6077     &aval_validate,
6078   },
6079
6080   {
6081     /* Q_GATS - GET_ALL_TABLE_STATS */
6082     "get_all_table_stats",
6083     "gats",
6084     2,
6085     RETRIEVE,
6086     "tbs",
6087     TBLSTATS_TABLE,
6088     "table_name, appends, updates, deletes, TO_CHAR(modtime, 'DD-mon-YYYY HH24:MI:SS') FROM tblstats",
6089     gats_fields,
6090     5,
6091     NULL,
6092     0,
6093     "table_name",
6094     0,
6095   },
6096
6097   {
6098     /* Q__SDL - _SET_DEBUG_LEVEL */
6099     "_set_debug_level",
6100     "_sdl",
6101     2,
6102     UPDATE,
6103     NULL,
6104     0,
6105     NULL,
6106     _sdl_fields,
6107     1,
6108     NULL,
6109     0,
6110     NULL,
6111     &_sdl_validate,
6112   },
6113
6114 };
6115
6116 int QueryCount = (sizeof(Queries) / sizeof(struct query));
This page took 0.539816 seconds and 3 git commands to generate.