VirtualBox

source: vbox/trunk/src/VBox/ValidationKit/testmanager/db/TestManagerDatabaseComments.pgsql

Last change on this file was 106061, checked in by vboxsync, 8 weeks ago

Copyright year updates by scm.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 45.6 KB
Line 
1-- $Id: TestManagerDatabaseComments.pgsql 106061 2024-09-16 14:03:52Z vboxsync $
2--- @file
3-- Autogenerated from TestManagerDatabaseInit.pgsql. Do not edit!
4--
5
6--
7-- Copyright (C) 2012-2024 Oracle and/or its affiliates.
8--
9-- This file is part of VirtualBox base platform packages, as
10-- available from https://www.virtualbox.org.
11--
12-- This program is free software; you can redistribute it and/or
13-- modify it under the terms of the GNU General Public License
14-- as published by the Free Software Foundation, in version 3 of the
15-- License.
16--
17-- This program is distributed in the hope that it will be useful, but
18-- WITHOUT ANY WARRANTY; without even the implied warranty of
19-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
20-- General Public License for more details.
21--
22-- You should have received a copy of the GNU General Public License
23-- along with this program; if not, see <https://www.gnu.org/licenses>.
24--
25-- The contents of this file may alternatively be used under the terms
26-- of the Common Development and Distribution License Version 1.0
27-- (CDDL), a copy of it is provided in the "COPYING.CDDL" file included
28-- in the VirtualBox distribution, in which case the provisions of the
29-- CDDL are applicable instead of those of the GPL.
30--
31-- You may elect to license modified versions of this file under the
32-- terms and conditions of either the GPL or the CDDL or both.
33--
34-- SPDX-License-Identifier: GPL-3.0-only OR CDDL-1.0
35--
36
37
38COMMENT ON COLUMN SystemLog.tsCreated IS
39 'When this was logged.';
40
41COMMENT ON COLUMN SystemLog.sEvent IS
42 'The event type.
43This is a 8 character string identifier so that we don''t need to change
44some enum type everytime we introduce a new event type.';
45
46COMMENT ON COLUMN SystemLog.sLogText IS
47 'The log text.';
48
49COMMENT ON TABLE Users IS
50 'Test manager users.
51
52This is mainly for doing simple access checks before permitting access to
53the test manager. This needs to be coordinated with
54apache/ldap/Oracle-Single-Sign-On.
55
56The main purpose, though, is for tracing who changed the test config and
57analysis data.
58
59@remarks This table stores history. Never update or delete anything. The
60 equivalent of deleting is done by setting the ''tsExpire'' field to
61 current_timestamp.';
62
63COMMENT ON COLUMN Users.tsEffective IS
64 'When this row starts taking effect (inclusive).';
65
66COMMENT ON COLUMN Users.tsExpire IS
67 'When this row stops being tsEffective (exclusive).';
68
69COMMENT ON COLUMN Users.uidAuthor IS
70 'The user id of the one who created/modified this entry.
71Non-unique foreign key: Users(uid)';
72
73COMMENT ON COLUMN Users.sUsername IS
74 'User name.';
75
76COMMENT ON COLUMN Users.sEmail IS
77 'The email address of the user.';
78
79COMMENT ON COLUMN Users.sFullName IS
80 'The full name.';
81
82COMMENT ON COLUMN Users.sLoginName IS
83 'The login name used by apache.';
84
85COMMENT ON COLUMN Users.fReadOnly IS
86 'Read access only.';
87
88COMMENT ON TABLE GlobalResources IS
89 'Global resource configuration.
90
91For example an iSCSI target.
92
93@remarks This table stores history. Never update or delete anything. The
94 equivalent of deleting is done by setting the ''tsExpire'' field to
95 current_timestamp.';
96
97COMMENT ON COLUMN GlobalResources.tsEffective IS
98 'When this row starts taking effect (inclusive).';
99
100COMMENT ON COLUMN GlobalResources.tsExpire IS
101 'When this row stops being tsEffective (exclusive).';
102
103COMMENT ON COLUMN GlobalResources.uidAuthor IS
104 'The user id of the one who created/modified this entry.
105Non-unique foreign key: Users(uid)';
106
107COMMENT ON COLUMN GlobalResources.sName IS
108 'The name of the resource.';
109
110COMMENT ON COLUMN GlobalResources.sDescription IS
111 'Optional resource description.';
112
113COMMENT ON COLUMN GlobalResources.fEnabled IS
114 'Indicates whether this resource is currently enabled (online).';
115
116COMMENT ON TABLE BuildSources IS
117 'Build sources.
118
119This is used by a scheduling group to select builds and the default
120Validation Kit from the Builds table.
121
122@remarks This table stores history. Never update or delete anything. The
123 equivalent of deleting is done by setting the ''tsExpire'' field to
124 current_timestamp.
125
126@todo Any better way of representing this so we could more easily
127 join/whatever when searching for builds?';
128
129COMMENT ON COLUMN BuildSources.tsEffective IS
130 'When this row starts taking effect (inclusive).';
131
132COMMENT ON COLUMN BuildSources.tsExpire IS
133 'When this row stops being tsEffective (exclusive).';
134
135COMMENT ON COLUMN BuildSources.uidAuthor IS
136 'The user id of the one who created/modified this entry.
137Non-unique foreign key: Users(uid)';
138
139COMMENT ON COLUMN BuildSources.sName IS
140 'The name of the build source.';
141
142COMMENT ON COLUMN BuildSources.sDescription IS
143 'Description.';
144
145COMMENT ON COLUMN BuildSources.sProduct IS
146 'Which product.
147ASSUME that it is okay to limit a build source to a single product.';
148
149COMMENT ON COLUMN BuildSources.sBranch IS
150 'Which branch.
151ASSUME that it is okay to limit a build source to a branch.';
152
153COMMENT ON COLUMN BuildSources.asTypes IS
154 'Build types to include, all matches if NULL.
155@todo Weighting the types would be nice in a later version.';
156
157COMMENT ON COLUMN BuildSources.asOsArches IS
158 'Array of the ''sOs.sCpuArch'' to match, all matches if NULL.
159See KBUILD_OSES in kBuild for a list of standard target OSes, and
160KBUILD_ARCHES for a list of standard architectures.
161
162@remarks See marks on ''os-agnostic'' and ''noarch'' in BuildCategories.';
163
164COMMENT ON COLUMN BuildSources.iFirstRevision IS
165 'The first subversion tree revision to match, no lower limit if NULL.';
166
167COMMENT ON COLUMN BuildSources.iLastRevision IS
168 'The last subversion tree revision to match, no upper limit if NULL.';
169
170COMMENT ON COLUMN BuildSources.cSecMaxAge IS
171 'The maximum age of the builds in seconds, unlimited if NULL.';
172
173COMMENT ON TABLE TestCases IS
174 'Test case configuration.
175
176@remarks This table stores history. Never update or delete anything. The
177 equivalent of deleting is done by setting the ''tsExpire'' field to
178 current_timestamp.';
179
180COMMENT ON COLUMN TestCases.tsEffective IS
181 'When this row starts taking effect (inclusive).';
182
183COMMENT ON COLUMN TestCases.tsExpire IS
184 'When this row stops being tsEffective (exclusive).';
185
186COMMENT ON COLUMN TestCases.uidAuthor IS
187 'The user id of the one who created/modified this entry.
188Non-unique foreign key: Users(uid)';
189
190COMMENT ON COLUMN TestCases.sName IS
191 'The name of the test case.';
192
193COMMENT ON COLUMN TestCases.sDescription IS
194 'Optional test case description.';
195
196COMMENT ON COLUMN TestCases.fEnabled IS
197 'Indicates whether this test case is currently enabled.';
198
199COMMENT ON COLUMN TestCases.cSecTimeout IS
200 'Default test case timeout given in seconds.';
201
202COMMENT ON COLUMN TestCases.sTestBoxReqExpr IS
203 'Default TestBox requirement expression (python boolean expression).
204All the scheduler properties are available for use with the same names
205as in that table.
206If NULL everything matches.';
207
208COMMENT ON COLUMN TestCases.sBuildReqExpr IS
209 'Default build requirement expression (python boolean expression).
210The following build properties are available: sProduct, sBranch,
211sType, asOsArches, sVersion, iRevision, uidAuthor and idBuild.
212If NULL everything matches.';
213
214COMMENT ON COLUMN TestCases.sBaseCmd IS
215 'The base command.
216String suitable for executing in bourne shell with space as separator
217(IFS). References to @BUILD_BINARIES@ will be replaced WITH the content
218of the Builds(sBinaries) field.';
219
220COMMENT ON COLUMN TestCases.sTestSuiteZips IS
221 'Comma separated list of test suite zips (or tars) that the testbox will
222need to download and expand prior to testing.
223If NULL the current test suite of the scheduling group will be used (the
224scheduling group will have an optional test suite build queue associated
225with it). The current test suite can also be referenced by
226@VALIDATIONKIT_ZIP@ in case more downloads are required. Files may also be
227uploaded to the test manager download area, in which case the
228@DOWNLOAD_BASE_URL@ prefix can be used to refer to this area.';
229
230COMMENT ON TABLE TestCaseArgs IS
231 'Test case argument list variations.
232
233For example, we have a test case that does a set of tests on a virtual
234machine. To get better code/feature coverage of this testcase we wish to
235run it with different guest hardware configuration. The test case may do
236the same stuff, but the guest OS as well as the VMM may react differently to
237the hardware configurations and uncover issues in the VMM, device emulation
238or other places.
239
240Typical hardware variations are:
241 - guest memory size (RAM),
242 - guest video memory size (VRAM),
243 - virtual CPUs / cores / threads,
244 - virtual chipset
245 - virtual network interface card (NIC)
246 - USB 1.1, USB 2.0, no USB
247
248The TM web UI will help the user create a reasonable set of permutations
249of these parameters, the user specifies a maximum and the TM uses certain
250rules together with random selection to generate the desired number. The
251UI will also help suggest fitting testbox requirements according to the
252RAM/VRAM sizes and the virtual CPU counts. The user may then make
253adjustments to the suggestions before commit them.
254
255Alternatively, the user may also enter all the permutations without any
256help from the UI.
257
258Note! All test cases has at least one entry in this table, even if it is
259empty, because testbox requirements are specified thru this.
260
261Querying the valid parameter lists for a testase this way:
262 SELECT * ... WHERE idTestCase = TestCases.idTestCase
263 AND tsExpire > <when>
264 AND tsEffective <= <when>;
265
266Querying the valid parameter list for the latest generation can be
267simplified by just checking tsExpire date:
268 SELECT * ... WHERE idTestCase = TestCases.idTestCase
269 AND tsExpire == TIMESTAMP WITH TIME ZONE ''infinity'';
270
271@remarks This table stores history. Never update or delete anything. The
272 equivalent of deleting is done by setting the ''tsExpire'' field to
273 current_timestamp.';
274
275COMMENT ON COLUMN TestCaseArgs.tsEffective IS
276 'When this row starts taking effect (inclusive).';
277
278COMMENT ON COLUMN TestCaseArgs.tsExpire IS
279 'When this row stops being tsEffective (exclusive).';
280
281COMMENT ON COLUMN TestCaseArgs.uidAuthor IS
282 'The user id of the one who created/modified this entry.
283Non-unique foreign key: Users(uid)';
284
285COMMENT ON COLUMN TestCaseArgs.sArgs IS
286 'The additional arguments.
287String suitable for bourne shell style argument parsing with space as
288separator (IFS). References to @BUILD_BINARIES@ will be replaced with
289the content of the Builds(sBinaries) field.';
290
291COMMENT ON COLUMN TestCaseArgs.cSecTimeout IS
292 'Optional test case timeout given in seconds.
293If NULL, the TestCases.cSecTimeout field is used instead.';
294
295COMMENT ON COLUMN TestCaseArgs.sTestBoxReqExpr IS
296 'Additional TestBox requirement expression (python boolean expression).
297All the scheduler properties are available for use with the same names
298as in that table. This is checked after first checking the requirements
299in the TestCases.sTestBoxReqExpr field.';
300
301COMMENT ON COLUMN TestCaseArgs.sBuildReqExpr IS
302 'Additional build requirement expression (python boolean expression).
303The following build properties are available: sProduct, sBranch,
304sType, asOsArches, sVersion, iRevision, uidAuthor and idBuild. This is
305checked after first checking the requirements in the
306TestCases.sBuildReqExpr field.';
307
308COMMENT ON COLUMN TestCaseArgs.cGangMembers IS
309 'Number of testboxes required (gang scheduling).';
310
311COMMENT ON COLUMN TestCaseArgs.sSubName IS
312 'Optional variation sub-name.';
313
314COMMENT ON INDEX TestCaseArgsLookupIdx IS
315 'The arguments are part of the primary key for several reasons.
316No duplicate argument lists (makes no sense - if you want to prioritize
317argument lists, we add that explicitly). This may hopefully enable us
318to more easily check coverage later on, even when the test case is
319reconfigured with more/less permutations.';
320
321COMMENT ON TABLE TestCaseDeps IS
322 'Test case dependencies (N:M)
323
324This effect build selection. The build must have passed all runs of the
325given prerequisite testcase (idTestCasePreReq) and executed at a minimum one
326argument list variation.
327
328This should also affect scheduling order, if possible at least one
329prerequisite testcase variation should be place before the specific testcase
330in the scheduling queue.
331
332@remarks This table stores history. Never update or delete anything. The
333 equivalent of deleting is done by setting the ''tsExpire'' field to
334 current_timestamp. To select the currently valid entries use
335 tsExpire = TIMESTAMP WITH TIME ZONE ''infinity''.';
336
337COMMENT ON COLUMN TestCaseDeps.tsEffective IS
338 'When this row starts taking effect (inclusive).';
339
340COMMENT ON COLUMN TestCaseDeps.tsExpire IS
341 'When this row stops being tsEffective (exclusive).';
342
343COMMENT ON COLUMN TestCaseDeps.uidAuthor IS
344 'The user id of the one who created/modified this entry.
345Non-unique foreign key: Users(uid)';
346
347COMMENT ON TABLE TestCaseGlobalRsrcDeps IS
348 'Test case dependencies on global resources (N:M)
349
350@remarks This table stores history. Never update or delete anything. The
351 equivalent of deleting is done by setting the ''tsExpire'' field to
352 current_timestamp. To select the currently valid entries use
353 tsExpire = TIMESTAMP WITH TIME ZONE ''infinity''.';
354
355COMMENT ON COLUMN TestCaseGlobalRsrcDeps.tsEffective IS
356 'When this row starts taking effect (inclusive).';
357
358COMMENT ON COLUMN TestCaseGlobalRsrcDeps.tsExpire IS
359 'When this row stops being tsEffective (exclusive).';
360
361COMMENT ON COLUMN TestCaseGlobalRsrcDeps.uidAuthor IS
362 'The user id of the one who created/modified this entry.
363Non-unique foreign key: Users(uid)';
364
365COMMENT ON TABLE TestGroups IS
366 'Test Group - A collection of test cases.
367
368This is for simplifying test configuration by working with a few groups
369instead of a herd of individual testcases. It may also be used for creating
370test suites for certain areas (like guest additions) or tasks (like
371performance measurements).
372
373A test case can be member of any number of test groups.
374
375@remarks This table stores history. Never update or delete anything. The
376 equivalent of deleting is done by setting the ''tsExpire'' field to
377 current_timestamp. To select the currently valid entries use
378 tsExpire = TIMESTAMP WITH TIME ZONE ''infinity''.';
379
380COMMENT ON COLUMN TestGroups.tsEffective IS
381 'When this row starts taking effect (inclusive).';
382
383COMMENT ON COLUMN TestGroups.tsExpire IS
384 'When this row stops being tsEffective (exclusive).';
385
386COMMENT ON COLUMN TestGroups.uidAuthor IS
387 'The user id of the one who created/modified this entry.
388Non-unique foreign key: Users(uid)';
389
390COMMENT ON COLUMN TestGroups.sName IS
391 'The name of the scheduling group.';
392
393COMMENT ON COLUMN TestGroups.sDescription IS
394 'Optional group description.';
395
396COMMENT ON TABLE TestGroupMembers IS
397 'The N:M relationship between test case configurations and test groups.
398
399@remarks This table stores history. Never update or delete anything. The
400 equivalent of deleting is done by setting the ''tsExpire'' field to
401 current_timestamp. To select the currently valid entries use
402 tsExpire = TIMESTAMP WITH TIME ZONE ''infinity''.';
403
404COMMENT ON COLUMN TestGroupMembers.tsEffective IS
405 'When this row starts taking effect (inclusive).';
406
407COMMENT ON COLUMN TestGroupMembers.tsExpire IS
408 'When this row stops being tsEffective (exclusive).';
409
410COMMENT ON COLUMN TestGroupMembers.uidAuthor IS
411 'The user id of the one who created/modified this entry.
412Non-unique foreign key: Users(uid)';
413
414COMMENT ON COLUMN TestGroupMembers.iSchedPriority IS
415 'Test case scheduling priority.
416Higher number causes the test case to be run more frequently.
417@sa SchedGroupMembers.iSchedPriority, TestBoxesInSchedGroups.iSchedPriority
418@todo Not sure we want to keep this...';
419
420COMMENT ON TABLE SchedGroups IS
421 'Scheduling group (aka. testbox partitioning) configuration.
422
423A testbox is associated with exactly one scheduling group. This association
424can be changed, of course. If we (want to) retire a group which still has
425testboxes associated with it, these will be moved to the ''default'' group.
426
427The TM web UI will make sure that a testbox is always in a group and that
428the default group cannot be deleted.
429
430A scheduling group combines several things:
431 - A selection of builds to test (via idBuildSrc).
432 - A collection of test groups to test with (via SchedGroupMembers).
433 - A set of testboxes to test on (via TestBoxes.idSchedGroup).
434
435In additions there is an optional source of fresh test suite builds (think
436VBoxTestSuite) as well as scheduling options.
437
438@remarks This table stores history. Never update or delete anything. The
439 equivalent of deleting is done by setting the ''tsExpire'' field to
440 current_timestamp. To select the currently valid entries use
441 tsExpire = TIMESTAMP WITH TIME ZONE ''infinity''.';
442
443COMMENT ON COLUMN SchedGroups.tsEffective IS
444 'When this row starts taking effect (inclusive).';
445
446COMMENT ON COLUMN SchedGroups.tsExpire IS
447 'When this row stops being tsEffective (exclusive).';
448
449COMMENT ON COLUMN SchedGroups.uidAuthor IS
450 'The user id of the one who created/modified this entry.
451Non-unique foreign key: Users(uid)
452@note This is NULL for the default group.';
453
454COMMENT ON COLUMN SchedGroups.sName IS
455 'The name of the scheduling group.';
456
457COMMENT ON COLUMN SchedGroups.sDescription IS
458 'Optional group description.';
459
460COMMENT ON COLUMN SchedGroups.fEnabled IS
461 'Indicates whether this group is currently enabled.';
462
463COMMENT ON COLUMN SchedGroups.enmScheduler IS
464 'The scheduler to use.
465This is for when we later desire different scheduling that the best
466effort stuff provided by the initial implementation.';
467
468COMMENT ON COLUMN SchedGroups.sComment IS
469 'The Validation Kit build source (@VALIDATIONKIT_ZIP@).
470Non-unique foreign key: BuildSources(idBuildSrc)';
471
472COMMENT ON TABLE SchedGroupMembers IS
473 'N:M relationship between scheduling groups and test groups.
474
475Several scheduling parameters are associated with this relationship.
476
477The test group dependency (idTestGroupPreReq) can be used in the same way as
478TestCaseDeps.idTestCasePreReq, only here on test group level. This means it
479affects the build selection. The builds needs to have passed all test runs
480the prerequisite test group and done at least one argument variation of each
481test case in it.
482
483@remarks This table stores history. Never update or delete anything. The
484 equivalent of deleting is done by setting the ''tsExpire'' field to
485 current_timestamp. To select the currently valid entries use
486 tsExpire = TIMESTAMP WITH TIME ZONE ''infinity''.';
487
488COMMENT ON COLUMN SchedGroupMembers.tsEffective IS
489 'When this row starts taking effect (inclusive).';
490
491COMMENT ON COLUMN SchedGroupMembers.tsExpire IS
492 'When this row stops being tsEffective (exclusive).';
493
494COMMENT ON COLUMN SchedGroupMembers.uidAuthor IS
495 'The user id of the one who created/modified this entry.
496Non-unique foreign key: Users(uid)';
497
498COMMENT ON COLUMN SchedGroupMembers.iSchedPriority IS
499 'The scheduling priority of the test group.
500Higher number causes the test case to be run more frequently.
501@sa TestGroupMembers.iSchedPriority, TestBoxesInSchedGroups.iSchedPriority';
502
503COMMENT ON COLUMN SchedGroupMembers.bmHourlySchedule IS
504 'When during the week this group is allowed to start running, NULL means
505there are no constraints.
506Each bit in the bitstring represents one hour, with bit 0 indicating the
507midnight hour on a monday.';
508
509COMMENT ON TABLE TestBoxStrTab IS
510 'String table for the test boxes.
511
512This is a string cache for all string members in TestBoxes except the name.
513The rational is to avoid duplicating large strings like sReport when the
514testbox reports a new cMbScratch value or the box when the test sheriff
515sends a reboot command or similar.
516
517At the time this table was introduced, we had 400558 TestBoxes rows, where
518the SUM(LENGTH(sReport)) was 993MB. There were really just 1066 distinct
519sReport values, with a total length of 0x3 MB.
520
521Nothing is ever deleted from this table.
522
523@note Should use a stored procedure to query/insert a string.
524
525
526TestBox stats prior to conversion:
527 SELECT COUNT(*) FROM TestBoxes: 400558 rows
528 SELECT pg_total_relation_size(''TestBoxes''): 740794368 bytes (706 MB)
529 Average row cost: 740794368 / 400558 = 1849 bytes/row
530
531After conversion:
532 SELECT COUNT(*) FROM TestBoxes: 400558 rows
533 SELECT pg_total_relation_size(''TestBoxes''): 144375808 bytes (138 MB)
534 SELECT COUNT(idStr) FROM TestBoxStrTab: 1292 rows
535 SELECT pg_total_relation_size(''TestBoxStrTab''): 5709824 bytes (5.5 MB)
536 (144375808 + 5709824) / 740794368 = 20 %
537 Average row cost boxes: 144375808 / 400558 = 360 bytes/row
538 Average row cost strings: 5709824 / 1292 = 4420 bytes/row';
539
540COMMENT ON COLUMN TestBoxStrTab.sValue IS
541 'The string value.';
542
543COMMENT ON COLUMN TestBoxStrTab.tsCreated IS
544 'Creation time stamp.';
545
546COMMENT ON TYPE TestBoxCmd_T IS
547 'Testbox commands.';
548
549COMMENT ON TYPE LomKind_T IS
550 'The kind of lights out management on a testbox.';
551
552COMMENT ON TABLE TestBoxes IS
553 'Testbox configurations.
554
555The testboxes are identified by IP and the system UUID if available. Should
556the IP change, the testbox will be refused at sign on and the testbox
557sheriff will have to update it''s IP.
558
559@todo Implement the UUID stuff. Get it from DMI, UEFI or whereever.
560 Mismatching needs to be logged somewhere...
561
562To query the currently valid configuration:
563 SELECT ... WHERE id = idTestBox AND tsExpire = TIMESTAMP WITH TIME ZONE ''infinity'';
564
565@remarks This table stores history. Never update or delete anything. The
566 equivalent of deleting is done by setting the ''tsExpire'' field to
567 current_timestamp. To select the currently valid entries use
568 tsExpire = TIMESTAMP WITH TIME ZONE ''infinity''.';
569
570COMMENT ON COLUMN TestBoxes.tsEffective IS
571 'When this row starts taking effect (inclusive).';
572
573COMMENT ON COLUMN TestBoxes.tsExpire IS
574 'When this row stops being tsEffective (exclusive).';
575
576COMMENT ON COLUMN TestBoxes.uidAuthor IS
577 'The user id of the one who created/modified this entry.
578When modified automatically by the testbox, NULL is used.
579Non-unique foreign key: Users(uid)';
580
581COMMENT ON COLUMN TestBoxes.uuidSystem IS
582 'The system or firmware UUID.
583This uniquely identifies the testbox when talking to the server. After
584SIGNON though, the testbox will also provide idTestBox and ip to
585establish its identity beyond doubt.';
586
587COMMENT ON COLUMN TestBoxes.sName IS
588 'The testbox name.
589Usually similar to the DNS name.';
590
591COMMENT ON COLUMN TestBoxes.fEnabled IS
592 'Indicates whether this testbox is enabled.
593A testbox gets disabled when we''re doing maintenance, debugging a issue
594that happens only on that testbox, or some similar stuff. This is an
595alternative to deleting the testbox.';
596
597COMMENT ON COLUMN TestBoxes.enmLomKind IS
598 'The kind of lights-out-management.';
599
600COMMENT ON COLUMN TestBoxes.lCpuRevision IS
601 'Number identifying the CPU family/model/stepping/whatever.
602For x86 and AMD64 type CPUs, this will on the following format:
603 (EffFamily << 24) | (EffModel << 8) | Stepping.';
604
605COMMENT ON COLUMN TestBoxes.cCpus IS
606 'Number of CPUs, CPU cores and CPU threads.';
607
608COMMENT ON COLUMN TestBoxes.fCpuHwVirt IS
609 'Set if capable of hardware virtualization.';
610
611COMMENT ON COLUMN TestBoxes.fCpuNestedPaging IS
612 'Set if capable of nested paging.';
613
614COMMENT ON COLUMN TestBoxes.fCpu64BitGuest IS
615 'Set if CPU capable of 64-bit (VBox) guests.';
616
617COMMENT ON COLUMN TestBoxes.fChipsetIoMmu IS
618 'Set if chipset with usable IOMMU (VT-d / AMD-Vi).';
619
620COMMENT ON COLUMN TestBoxes.fRawMode IS
621 'Set if the test box does raw-mode tests.';
622
623COMMENT ON COLUMN TestBoxes.fNativeApi IS
624 'Set if the test box does native API (NEM) tests.';
625
626COMMENT ON COLUMN TestBoxes.cMbMemory IS
627 'The (approximate) memory size in megabytes (rounded down to nearest 4 MB).';
628
629COMMENT ON COLUMN TestBoxes.cMbScratch IS
630 'The amount of scratch space in megabytes (rounded down to nearest 64 MB).';
631
632COMMENT ON COLUMN TestBoxes.iTestBoxScriptRev IS
633 'The testbox script revision number, serves the purpose of a version number.
634Probably good to have when scheduling upgrades as well for status purposes.';
635
636COMMENT ON COLUMN TestBoxes.iPythonHexVersion IS
637 'The python sys.hexversion (layed out as of 2.7).
638Good to know which python versions we need to support.';
639
640COMMENT ON COLUMN TestBoxes.enmPendingCmd IS
641 'Pending command.
642@note We put it here instead of in TestBoxStatuses to get history.';
643
644COMMENT ON INDEX TestBoxesUuidIdx IS
645 'Nested paging requires hardware virtualization.';
646
647COMMENT ON TABLE TestBoxesInSchedGroups IS
648 'N:M relationship between test boxes and scheduling groups.
649
650We associate a priority with this relationship.
651
652@remarks This table stores history. Never update or delete anything. The
653 equivalent of deleting is done by setting the ''tsExpire'' field to
654 current_timestamp. To select the currently valid entries use
655 tsExpire = TIMESTAMP WITH TIME ZONE ''infinity''.';
656
657COMMENT ON COLUMN TestBoxesInSchedGroups.tsEffective IS
658 'When this row starts taking effect (inclusive).';
659
660COMMENT ON COLUMN TestBoxesInSchedGroups.tsExpire IS
661 'When this row stops being tsEffective (exclusive).';
662
663COMMENT ON COLUMN TestBoxesInSchedGroups.uidAuthor IS
664 'The user id of the one who created/modified this entry.
665Non-unique foreign key: Users(uid)';
666
667COMMENT ON COLUMN TestBoxesInSchedGroups.iSchedPriority IS
668 'The scheduling priority of the scheduling group for the test box.
669Higher number causes the scheduling group to be serviced more frequently.
670@sa TestGroupMembers.iSchedPriority, SchedGroups.iSchedPriority';
671
672COMMENT ON TABLE FailureCategories IS
673 'Failure categories.
674
675This is for organizing the failure reasons.
676
677@remarks This table stores history. Never update or delete anything. The
678 equivalent of deleting is done by setting the ''tsExpire'' field to
679 current_timestamp. To select the currently valid entries use
680 tsExpire = TIMESTAMP WITH TIME ZONE ''infinity''.';
681
682COMMENT ON COLUMN FailureCategories.tsEffective IS
683 'When this row starts taking effect (inclusive).';
684
685COMMENT ON COLUMN FailureCategories.tsExpire IS
686 'When this row stops being tsEffective (exclusive).';
687
688COMMENT ON COLUMN FailureCategories.uidAuthor IS
689 'The user id of the one who created/modified this entry.
690Non-unique foreign key: Users(uid)';
691
692COMMENT ON COLUMN FailureCategories.sShort IS
693 'The short category description.
694For combo boxes and other selection lists.';
695
696COMMENT ON COLUMN FailureCategories.sFull IS
697 'Full description
698For cursor-over-poppups for instance.';
699
700COMMENT ON TABLE FailureReasons IS
701 'Failure reasons.
702
703When analysing a test failure, the testbox sheriff will try assign a fitting
704reason for the failure. This table is here to help the sheriff in his/hers
705job as well as developers looking checking if their changes affected the
706test results in any way.
707
708@remarks This table stores history. Never update or delete anything. The
709 equivalent of deleting is done by setting the ''tsExpire'' field to
710 current_timestamp. To select the currently valid entries use
711 tsExpire = TIMESTAMP WITH TIME ZONE ''infinity''.';
712
713COMMENT ON COLUMN FailureReasons.tsEffective IS
714 'When this row starts taking effect (inclusive).';
715
716COMMENT ON COLUMN FailureReasons.tsExpire IS
717 'When this row stops being tsEffective (exclusive).';
718
719COMMENT ON COLUMN FailureReasons.uidAuthor IS
720 'The user id of the one who created/modified this entry.
721Non-unique foreign key: Users(uid)';
722
723COMMENT ON COLUMN FailureReasons.sShort IS
724 'The short failure description.
725For combo boxes and other selection lists.';
726
727COMMENT ON COLUMN FailureReasons.sFull IS
728 'Full failure description.';
729
730COMMENT ON COLUMN FailureReasons.iTicket IS
731 'Ticket number in the primary bugtracker.';
732
733COMMENT ON COLUMN FailureReasons.asUrls IS
734 'Other URLs to reports or discussions of the observed symptoms.';
735
736COMMENT ON TABLE TestResultFailures IS
737 'This is for tracking/discussing test result failures.
738
739The rational for putting this is a separate table is that we need history on
740this while TestResults does not.
741
742@remarks This table stores history. Never update or delete anything. The
743 equivalent of deleting is done by setting the ''tsExpire'' field to
744 current_timestamp. To select the currently valid entries use
745 tsExpire = TIMESTAMP WITH TIME ZONE ''infinity''.';
746
747COMMENT ON COLUMN TestResultFailures.tsEffective IS
748 'When this row starts taking effect (inclusive).';
749
750COMMENT ON COLUMN TestResultFailures.tsExpire IS
751 'When this row stops being tsEffective (exclusive).';
752
753COMMENT ON COLUMN TestResultFailures.uidAuthor IS
754 'The user id of the one who created/modified this entry.
755Non-unique foreign key: Users(uid)';
756
757COMMENT ON COLUMN TestResultFailures.sComment IS
758 'Optional comment.';
759
760COMMENT ON TABLE BuildBlacklist IS
761 'Table used to blacklist sets of builds.
762
763The best usage example is a VMM developer realizing that a change causes the
764host to panic, hang, or otherwise misbehave. To prevent the testbox sheriff
765from repeatedly having to reboot testboxes, the builds gets blacklisted
766until there is a working build again. This may mean adding an open ended
767blacklist spec and then updating it with the final revision number once the
768fix has been committed.
769
770@remarks This table stores history. Never update or delete anything. The
771 equivalent of deleting is done by setting the ''tsExpire'' field to
772 current_timestamp. To select the currently valid entries use
773 tsExpire = TIMESTAMP WITH TIME ZONE ''infinity''.
774
775@todo Would be nice if we could replace the text strings below with a set of
776 BuildCategories, or sore it in any other way which would enable us to
777 do a negative join with build category... The way it is specified
778 now, it looks like we have to open a cursor of prospecitve builds and
779 filter then thru this table one by one.
780
781 Any better representation is welcome, but this is low prioirty for
782 now, as it''s relatively easy to change this later one.';
783
784COMMENT ON COLUMN BuildBlacklist.tsEffective IS
785 'When this row starts taking effect (inclusive).';
786
787COMMENT ON COLUMN BuildBlacklist.tsExpire IS
788 'When this row stops being tsEffective (exclusive).';
789
790COMMENT ON COLUMN BuildBlacklist.uidAuthor IS
791 'The user id of the one who created/modified this entry.
792Non-unique foreign key: Users(uid)';
793
794COMMENT ON COLUMN BuildBlacklist.sProduct IS
795 'Which product.
796ASSUME that it is okay to limit a blacklisting to a single product.';
797
798COMMENT ON COLUMN BuildBlacklist.sBranch IS
799 'Which branch.
800ASSUME that it is okay to limit a blacklisting to a branch.';
801
802COMMENT ON COLUMN BuildBlacklist.asTypes IS
803 'Build types to include, all matches if NULL.';
804
805COMMENT ON COLUMN BuildBlacklist.asOsArches IS
806 'Array of the ''sOs.sCpuArch'' to match, all matches if NULL.
807See KBUILD_OSES in kBuild for a list of standard target OSes, and
808KBUILD_ARCHES for a list of standard architectures.
809
810@remarks See marks on ''os-agnostic'' and ''noarch'' in BuildCategories.';
811
812COMMENT ON COLUMN BuildBlacklist.iFirstRevision IS
813 'The first subversion tree revision to blacklist.';
814
815COMMENT ON COLUMN BuildBlacklist.iLastRevision IS
816 'The last subversion tree revision to blacklist, no upper limit if NULL.';
817
818COMMENT ON TABLE BuildCategories IS
819 'Build categories.
820
821The purpose of this table is saving space in the Builds table and hopefully
822speed things up when selecting builds as well (compared to selecting on 4
823text fields in the much larger Builds table).
824
825Insert only table, no update, no delete. History is not needed.';
826
827COMMENT ON COLUMN BuildCategories.sProduct IS
828 'Product.
829The product name. For instance ''VBox'' or ''VBoxTestSuite''.';
830
831COMMENT ON COLUMN BuildCategories.sRepository IS
832 'The version control repository name.';
833
834COMMENT ON COLUMN BuildCategories.sBranch IS
835 'The branch name (in the version control system).';
836
837COMMENT ON COLUMN BuildCategories.sType IS
838 'The build type.
839See KBUILD_BLD_TYPES in kBuild for a list of standard build types.';
840
841COMMENT ON COLUMN BuildCategories.asOsArches IS
842 'Array of the ''sOs.sCpuArch'' supported by the build.
843See KBUILD_OSES in kBuild for a list of standard target OSes, and
844KBUILD_ARCHES for a list of standard architectures.
845
846@remarks ''os-agnostic'' is used if the build doesn''t really target any
847 specific OS or if it targets all applicable OSes.
848 ''noarch'' is used if the build is architecture independent or if
849 all applicable architectures are handled.
850 Thus, ''os-agnostic.noarch'' will run on all build boxes.
851
852@note The array shall be sorted ascendingly to prevent unnecessary duplicates!';
853
854COMMENT ON TABLE Builds IS
855 'The builds table contains builds from the tinderboxes and oaccasionally from
856developers.
857
858The tinderbox side could be fed by a batch job enumerating the build output
859directories every so often, looking for new builds. Or we could query them
860from the tinderbox database. Yet another alternative is making the
861tinderbox server or client side software inform us about all new builds.
862
863The developer builds are entered manually thru the TM web UI. They are used
864for subjecting new code to some larger scale testing before commiting,
865enabling, or merging a private branch.
866
867The builds are being selected from this table by the via the build source
868specification that SchedGroups.idBuildSrc and
869SchedGroups.idBuildSrcTestSuite links to.
870
871@remarks This table stores history. Never update or delete anything. The
872 equivalent of deleting is done by setting the ''tsExpire'' field to
873 current_timestamp. To select the currently valid entries use
874 tsExpire = TIMESTAMP WITH TIME ZONE ''infinity''.';
875
876COMMENT ON COLUMN Builds.tsCreated IS
877 'When this build was created or entered into the database.
878This remains unchanged';
879
880COMMENT ON COLUMN Builds.tsEffective IS
881 'When this row starts taking effect (inclusive).';
882
883COMMENT ON COLUMN Builds.tsExpire IS
884 'When this row stops being tsEffective (exclusive).';
885
886COMMENT ON COLUMN Builds.uidAuthor IS
887 'The user id of the one who created/modified this entry.
888Non-unique foreign key: Users(uid)
889@note This is NULL if added by a batch job / tinderbox.';
890
891COMMENT ON COLUMN Builds.iRevision IS
892 'The subversion tree revision of the build.';
893
894COMMENT ON COLUMN Builds.sVersion IS
895 'The product version number (suitable for RTStrVersionCompare).';
896
897COMMENT ON COLUMN Builds.sLogUrl IS
898 'The link to the tinderbox log of this build.';
899
900COMMENT ON COLUMN Builds.sBinaries IS
901 'Comma separated list of binaries.
902The binaries have paths relative to the TESTBOX_PATH_BUILDS or full URLs.';
903
904COMMENT ON COLUMN Builds.fBinariesDeleted IS
905 'Set when the binaries gets deleted by the build quota script.';
906
907COMMENT ON TABLE VcsRevisions IS
908 'This table is for translating build revisions into commit details.
909
910For graphs and test results, it would be useful to translate revisions into
911dates and maybe provide commit message and the committer.
912
913Data is entered exclusively thru one or more batch jobs, so no internal
914authorship needed. Also, since we''re mirroring data from external sources
915here, the batch job is allowed to update/replace existing records.
916
917@todo We we could collect more info from the version control systems, if we
918 believe it''s useful and can be presented in a reasonable manner.
919 Getting a list of affected files would be simple (requires
920 a separate table with a M:1 relationship to this table), or try
921 associate a commit to a branch.';
922
923COMMENT ON COLUMN VcsRevisions.sRepository IS
924 'The version control tree name.';
925
926COMMENT ON COLUMN VcsRevisions.iRevision IS
927 'The version control tree revision number.';
928
929COMMENT ON COLUMN VcsRevisions.tsCreated IS
930 'When the revision was created (committed).';
931
932COMMENT ON COLUMN VcsRevisions.sAuthor IS
933 'The name of the committer.
934@note Not to be confused with uidAuthor and test manager users.';
935
936COMMENT ON COLUMN VcsRevisions.sMessage IS
937 'The commit message.';
938
939COMMENT ON TABLE VcsBugReferences IS
940 'This is for relating commits to a bug and vice versa.
941
942This feature isn''t so much for the test manager as a cheap way of extending
943bug trackers without VCS integration. We just need to parse the commit
944messages when inserting them into the VcsRevisions table.
945
946Same input, updating and history considerations as VcsRevisions.';
947
948COMMENT ON COLUMN VcsBugReferences.sRepository IS
949 'The version control tree name.';
950
951COMMENT ON COLUMN VcsBugReferences.iRevision IS
952 'The version control tree revision number.';
953
954COMMENT ON COLUMN VcsBugReferences.sBugTracker IS
955 'The bug tracker identifier - see g_kdBugTrackers in config.py.';
956
957COMMENT ON COLUMN VcsBugReferences.lBugNo IS
958 'The bug number in the bug tracker.';
959
960COMMENT ON TABLE TestResultStrTab IS
961 'String table for the test results.
962
963This is a string cache for value names, test names and possible more, that
964is frequently repated in the test results record for each test run. The
965purpose is not only to save space, but to make datamining queries faster by
966giving them integer fields to work on instead of text fields. There may
967possibly be some benefits on INSERT as well as there are only integer
968indexes.
969
970Nothing is ever deleted from this table.
971
972@note Should use a stored procedure to query/insert a string.';
973
974COMMENT ON COLUMN TestResultStrTab.sValue IS
975 'The string value.';
976
977COMMENT ON COLUMN TestResultStrTab.tsCreated IS
978 'Creation time stamp.';
979
980COMMENT ON TYPE TestStatus_T IS
981 'The status of a test (set / result).';
982
983COMMENT ON TABLE TestResults IS
984 'Test results - a recursive bundle of joy!
985
986A test case will be created when the testdriver calls reporter.testStart and
987concluded with reporter.testDone. The testdriver (or it subordinates) can
988use these methods to create nested test results. For IPRT based test cases,
989RTTestCreate, RTTestInitAndCreate and RTTestSub will both create new test
990result records, where as RTTestSubDone, RTTestSummaryAndDestroy and
991RTTestDestroy will conclude records.
992
993By concluding is meant updating the status. When the test driver reports
994success, we check it against reported results. (paranoia strikes again!)
995
996Nothing is ever deleted from this table.
997
998@note As seen below, several other tables associate data with a
999 test result, and the top most test result is referenced by the
1000 test set.';
1001
1002COMMENT ON COLUMN TestResults.tsCreated IS
1003 'Creation time stamp. This may also be the timestamp of when the test started.';
1004
1005COMMENT ON COLUMN TestResults.tsElapsed IS
1006 'The elapsed time for this test.
1007This is either reported by the directly (with some sanity checking) or
1008calculated (current_timestamp - created_ts).
1009@todo maybe use a nanosecond field here, check with what';
1010
1011COMMENT ON COLUMN TestResults.cErrors IS
1012 'The error count.';
1013
1014COMMENT ON COLUMN TestResults.enmStatus IS
1015 'The test status.';
1016
1017COMMENT ON COLUMN TestResults.iNestingDepth IS
1018 'Nesting depth.';
1019
1020COMMENT ON TABLE TestResultValues IS
1021 'Test result values.
1022
1023A testdriver or subordinate may report a test value via
1024reporter.testValue(), while IPRT based test will use RTTestValue and
1025associates.
1026
1027This is an insert only table, no deletes, no updates.';
1028
1029COMMENT ON COLUMN TestResultValues.tsCreated IS
1030 'Creation time stamp.';
1031
1032COMMENT ON COLUMN TestResultValues.lValue IS
1033 'The value.';
1034
1035COMMENT ON COLUMN TestResultValues.iUnit IS
1036 'The unit.
1037@todo This is currently not defined properly. Will fix/correlate this
1038 with the other places we use unit (IPRT/testdriver/VMMDev).';
1039
1040COMMENT ON TABLE TestResultFiles IS
1041 'Test result files.
1042
1043A testdriver or subordinate may report a file by using
1044reporter.addFile() or reporter.addLogFile().
1045
1046The files stored here as well as the primary log file will be processed by a
1047batch job and compressed if considered compressable. Thus, TM will look for
1048files with a .gz/.bz2 suffix first and then without a suffix.
1049
1050This is an insert only table, no deletes, no updates.';
1051
1052COMMENT ON COLUMN TestResultFiles.tsCreated IS
1053 'Creation time stamp.';
1054
1055COMMENT ON INDEX TestResultFilesIdx IS
1056 'The mime type for the file.
1057For instance: ''text/plain'',
1058 ''image/png'',
1059 ''video/webm'',
1060 ''text/xml''';
1061
1062COMMENT ON TABLE TestResultMsgs IS
1063 'Test result message.
1064
1065A testdriver or subordinate may report a message via the sDetails parameter
1066of the reporter.testFailure() method, while IPRT test cases will use
1067RTTestFailed, RTTestPrintf and their friends. For RTTestPrintf, we will
1068ignore the more verbose message levels since these can also be found in one
1069of the logs.
1070
1071This is an insert only table, no deletes, no updates.';
1072
1073COMMENT ON COLUMN TestResultMsgs.tsCreated IS
1074 'Creation time stamp.';
1075
1076COMMENT ON COLUMN TestResultMsgs.enmLevel IS
1077 'The message level.';
1078
1079COMMENT ON TABLE TestSets IS
1080 'Test sets / Test case runs.
1081
1082This is where we collect data about test runs.
1083
1084@todo Not entirely sure where the ''test set'' term came from. Consider
1085 finding something more appropriate.';
1086
1087COMMENT ON COLUMN TestSets.tsConfig IS
1088 'The test config timestamp, used when reading test config.';
1089
1090COMMENT ON COLUMN TestSets.tsCreated IS
1091 'When this test set was scheduled.
1092idGenTestBox is valid at this point.';
1093
1094COMMENT ON COLUMN TestSets.tsDone IS
1095 'When this test completed, i.e. testing stopped. This should only be set once.';
1096
1097COMMENT ON COLUMN TestSets.enmStatus IS
1098 'The current status.';
1099
1100COMMENT ON COLUMN TestSets.sBaseFilename IS
1101 'The base filename used for storing files related to this test set.
1102This is a path relative to wherever TM is dumping log files. In order
1103to not become a file system test case, we will try not to put too many
1104hundred thousand files in a directory. A simple first approach would
1105be to just use the current date (tsCreated) like this:
1106 TM_FILE_DIR/year/month/day/TestSets.idTestSet
1107
1108The primary log file for the test is this name suffixed by ''.log''.
1109
1110The files in the testresultfile table gets their full names like this:
1111 TM_FILE_DIR/sBaseFilename-testresultfile.id-TestResultStrTab(testresultfile.idStrFilename)
1112
1113@remarks We store this explicitly in case we change the directly layout
1114 at some later point.';
1115
1116COMMENT ON COLUMN TestSets.iGangMemberNo IS
1117 'The gang member number number, 0 is the leader.';
1118
1119COMMENT ON INDEX TestSetsGangIdx IS
1120 'The test set of the gang leader, NULL if no gang involved.
1121@note This is set by the gang leader as well, so that we can find all
1122 gang members by WHERE idTestSetGangLeader = :id.';
1123
1124COMMENT ON INDEX TestSetsDoneCreatedBuildCatIdx IS
1125 'The TestSetsDoneCreatedBuildCatIdx is for testbox results, graph options and such.';
1126
1127COMMENT ON INDEX TestSetsGraphBoxIdx IS
1128 'For graphs.';
1129
1130COMMENT ON TYPE TestBoxState_T IS
1131 'TestBox state.
1132
1133@todo Consider drawing a state diagram for this.';
1134
1135COMMENT ON TABLE TestBoxStatuses IS
1136 'Testbox status table.
1137
1138History is not planned on this table.';
1139
1140COMMENT ON COLUMN TestBoxStatuses.tsUpdated IS
1141 'When this status was last updated.
1142This is updated everytime the testbox talks to the test manager, thus it
1143can easily be used to find testboxes which has stopped responding.
1144
1145This is used for timeout calculation during gang-gathering, so in that
1146scenario it won''t be updated until the gang is gathered or we time out.';
1147
1148COMMENT ON COLUMN TestBoxStatuses.enmState IS
1149 'The current state.';
1150
1151COMMENT ON COLUMN TestBoxStatuses.iWorkItem IS
1152 'Interal work item number.
1153This is used to pick and prioritize between multiple scheduling groups.';
1154
1155COMMENT ON TABLE GlobalResourceStatuses IS
1156 'Global resource status, tracks which test set resources are allocated by.
1157
1158History is not planned on this table.';
1159
1160COMMENT ON COLUMN GlobalResourceStatuses.tsAllocated IS
1161 'When the allocation took place.';
1162
1163COMMENT ON TABLE SchedQueues IS
1164 'Scheduler queue.
1165
1166The queues are currently associated with a scheduling group, it could
1167alternative be changed to hook on to a testbox instead. It depends on what
1168kind of scheduling method we prefer. The former method aims at test case
1169thruput, making sacrifices in the hardware distribution area. The latter is
1170more like the old buildbox style testing, making sure that each test case is
1171executed on each testbox.
1172
1173When there are configuration changes, TM will regenerate the scheduling
1174queue for the affected scheduling groups. We do not concern ourselves with
1175trying to continue at the approximately same queue position, we simply take
1176it from the top.
1177
1178When a testbox ask for work, we will open a cursor on the queue and take the
1179first test in the queue that can be executed on that testbox. The test will
1180be moved to the end of the queue (getting a new item_id).
1181
1182If a test is manually changed to the head of the queue, the item will get a
1183item_id which is 1 lower than the head of the queue. Unless someone does
1184this a couple of billion times, we shouldn''t have any trouble running out of
1185number space. :-)
1186
1187Manually moving a test to the end of the queue is easy, just get a new
1188''item_id''.
1189
1190History is not planned on this table.';
1191
1192COMMENT ON COLUMN SchedQueues.bmHourlySchedule IS
1193 'The scheduling time constraints (see SchedGroupMembers.bmHourlySchedule).';
1194
1195COMMENT ON COLUMN SchedQueues.tsConfig IS
1196 'When the queue entry was created and for which config is valid.
1197This is the timestamp that should be used when reading config info.';
1198
1199COMMENT ON COLUMN SchedQueues.tsLastScheduled IS
1200 'When this status was last scheduled.
1201This is set to current_timestamp when moving the entry to the end of the
1202queue. It''s initial value is unix-epoch. Not entirely sure if it''s
1203useful beyond introspection and non-unique foreign key hacking.';
1204
1205COMMENT ON COLUMN SchedQueues.cMissingGangMembers IS
1206 'The number of gang members still missing.
1207
1208This saves calculating the number of missing members via selects like:
1209 SELECT COUNT(*) FROM TestSets WHERE idTestSetGangLeader = :idGang;
1210and
1211 SELECT cGangMembers FROM TestCaseArgs WHERE idGenTestCaseArgs = :idTest;
1212to figure out whether to remain in ''gather-gang''::TestBoxState_T.';
1213
1214COMMENT ON INDEX SchedQueuesItemIdx IS
1215 'The number of times this has been considered for scheduling.
1216cConsidered SMALLINT DEFAULT 0 NOT NULL,';
1217
Note: See TracBrowser for help on using the repository browser.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette