Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
-- --------------------------------------------------------------------------------
-- About
-- migration script
-- postgresql 9.6.7
-- Content
-- structures
-- name
-- data structures level 1
-- data structures level 2
-- data structures level 3
-- data name level 1
-- data name level 2
-- data name level 3
-- index
-- latest
-- foreign key
-- index
-- sequence
-- primary key
-- function
-- Note
-- order of items is important
-- --------------------------------------------------------------------------------
-- --------------------------------------------------------------------------------
-- structures
-- --------------------------------------------------------------------------------
CREATE TABLE systemgroup (
id bigint NOT NULL,
version integer,
uuid character varying(255),
name character varying(255),
mnemonic character varying(255),
mnemonic_equivalence character varying(255),
description character varying(255),
status character varying(255),
latest boolean NOT NULL,
deleted boolean NOT NULL,
requested timestamp without time zone,
requested_by character varying(255),
requested_comment character varying(255),
processed timestamp without time zone,
processed_by character varying(255),
processed_comment character varying(255)
);
CREATE TABLE system (
id bigint NOT NULL,
version integer,
uuid character varying(255),
parent_uuid character varying(255),
name character varying(255),
mnemonic character varying(255),
mnemonic_equivalence character varying(255),
description character varying(255),
status character varying(255),
latest boolean NOT NULL,
deleted boolean NOT NULL,
requested timestamp without time zone,
requested_by character varying(255),
requested_comment character varying(255),
processed timestamp without time zone,
processed_by character varying(255),
processed_comment character varying(255)
);
CREATE TABLE subsystem (
id bigint NOT NULL,
version integer,
uuid character varying(255),
parent_uuid character varying(255),
name character varying(255),
mnemonic character varying(255),
mnemonic_equivalence character varying(255),
description character varying(255),
status character varying(255),
latest boolean NOT NULL,
deleted boolean NOT NULL,
requested timestamp without time zone,
requested_by character varying(255),
requested_comment character varying(255),
processed timestamp without time zone,
processed_by character varying(255),
processed_comment character varying(255)
);
-- --------------------------------------------------------------------------------
CREATE TABLE discipline (
id bigint NOT NULL,
version integer,
uuid character varying(255),
name character varying(255),
mnemonic character varying(255),
mnemonic_equivalence character varying(255),
description character varying(255),
status character varying(255),
latest boolean NOT NULL,
deleted boolean NOT NULL,
requested timestamp without time zone,
requested_by character varying(255),
requested_comment character varying(255),
processed timestamp without time zone,
processed_by character varying(255),
processed_comment character varying(255)
);
CREATE TABLE devicegroup (
id bigint NOT NULL,
version integer,
uuid character varying(255),
parent_uuid character varying(255),
name character varying(255),
mnemonic character varying(255),
mnemonic_equivalence character varying(255),
description character varying(255),
status character varying(255),
latest boolean NOT NULL,
deleted boolean NOT NULL,
requested timestamp without time zone,
requested_by character varying(255),
requested_comment character varying(255),
processed timestamp without time zone,
processed_by character varying(255),
processed_comment character varying(255)
);
CREATE TABLE devicetype (
id bigint NOT NULL,
version integer,
uuid character varying(255),
parent_uuid character varying(255),
name character varying(255),
mnemonic character varying(255),
mnemonic_equivalence character varying(255),
description character varying(255),
status character varying(255),
latest boolean NOT NULL,
deleted boolean NOT NULL,
requested timestamp without time zone,
requested_by character varying(255),
requested_comment character varying(255),
processed timestamp without time zone,
processed_by character varying(255),
processed_comment character varying(255)
);
-- --------------------------------------------------------------------------------
-- name
-- --------------------------------------------------------------------------------
CREATE TABLE name (
id bigint NOT NULL,
version integer,
uuid character varying(255),
systemgroup_uuid character varying(255),
system_uuid character varying(255),
subsystem_uuid character varying(255),
devicetype_uuid character varying(255),
instance_index character varying(255),
convention_name character varying(255),
convention_name_equivalence character varying(255),
description character varying(255),
status character varying(255),
latest boolean NOT NULL,
deleted boolean NOT NULL,
requested timestamp without time zone,
requested_by character varying(255),
requested_comment character varying(255),
processed timestamp without time zone,
processed_by character varying(255),
processed_comment character varying(255)
);
-- --------------------------------------------------------------------------------
-- data structures level 1
-- --------------------------------------------------------------------------------
insert into systemgroup (
id,
version,
uuid,
name,
mnemonic,
mnemonic_equivalence,
description,
status,
latest,
deleted,
requested,
requested_by,
requested_comment,
processed,
processed_by,
processed_comment
)
select npr1.id, npr1."version", np1.uuid, npr1."name", npr1.mnemonic, npr1.mnemoniceqclass, npr1.description, npr1.status, false, npr1.deleted,
npr1.requestdate, ua_r.username as requestedBy, npr1.requestercomment, npr1.processdate, ua_p.username as processedBy, npr1.processorcomment
from namepartrevision npr1
inner join namepart np1 on npr1.namepart_id = np1.id
left join useraccount ua_r on npr1.requestedby_id = ua_r.id
left join useraccount ua_p on npr1.processedby_id = ua_p.id
where np1.nameparttype = 'SECTION' and npr1.parent_id is null;
insert into discipline (
id,
version,
uuid,
name,
mnemonic,
mnemonic_equivalence,
description,
status,
latest,
deleted,
requested,
requested_by,
requested_comment,
processed,
processed_by,
processed_comment
)
select npr1.id, npr1."version", np1.uuid, npr1."name", npr1.mnemonic, npr1.mnemoniceqclass, npr1.description, npr1.status, false, npr1.deleted,
npr1.requestdate, ua_r.username as requestedBy, npr1.requestercomment, npr1.processdate, ua_p.username as processedBy, npr1.processorcomment
from namepartrevision npr1
inner join namepart np1 on npr1.namepart_id = np1.id
left join useraccount ua_r on npr1.requestedby_id = ua_r.id
left join useraccount ua_p on npr1.processedby_id = ua_p.id
where np1.nameparttype = 'DEVICE_TYPE' and npr1.parent_id is null;
-- --------------------------------------------------------------------------------
-- data structures level 2
-- --------------------------------------------------------------------------------
insert into system (
id,
version,
uuid,
parent_uuid,
name,
mnemonic,
mnemonic_equivalence,
description,
status,
latest,
deleted,
requested,
requested_by,
requested_comment,
processed,
processed_by,
processed_comment
)
select npr2.id, npr2."version", np2.uuid, np22.uuid,
npr2."name", npr2.mnemonic, npr2.mnemoniceqclass, npr2.description,
npr2.status, false, npr2.deleted, npr2.requestdate, ua_r.username as requestedBy, npr2.requestercomment, npr2.processdate, ua_p.username as processedBy, npr2.processorcomment
from namepartrevision npr2
inner join namepart np2 on npr2.namepart_id = np2.id
inner join namepart np22 on npr2.parent_id = np22.id
left join useraccount ua_r on npr2.requestedby_id = ua_r.id
left join useraccount ua_p on npr2.processedby_id = ua_p.id
where np2.nameparttype = 'SECTION' and npr2.parent_id in
(select npr1.namepart_id from namepartrevision npr1, namepart np1 where npr1.namepart_id = np1.id and np1.nameparttype = 'SECTION' and npr1.parent_id is null);
insert into devicegroup (
id,
version,
uuid,
parent_uuid,
name,
mnemonic,
mnemonic_equivalence,
description,
status,
latest,
deleted,
requested,
requested_by,
requested_comment,
processed,
processed_by,
processed_comment
)
select npr2.id, npr2."version", np2.uuid, np22.uuid,
npr2."name", npr2.mnemonic, npr2.mnemoniceqclass, npr2.description,
npr2.status, false, npr2.deleted, npr2.requestdate, ua_r.username as requestedBy, npr2.requestercomment, npr2.processdate, ua_p.username as processedBy, npr2.processorcomment
from namepartrevision npr2
inner join namepart np2 on npr2.namepart_id = np2.id
inner join namepart np22 on npr2.parent_id = np22.id
left join useraccount ua_r on npr2.requestedby_id = ua_r.id
left join useraccount ua_p on npr2.processedby_id = ua_p.id
where np2.nameparttype = 'DEVICE_TYPE' and npr2.parent_id in
(select npr1.namepart_id from namepartrevision npr1, namepart np1 where npr1.namepart_id = np1.id and np1.nameparttype = 'DEVICE_TYPE' and npr1.parent_id is null);
-- --------------------------------------------------------------------------------
-- data structures level 3
-- --------------------------------------------------------------------------------
insert into subsystem (
id,
version,
uuid,
parent_uuid,
name,
mnemonic,
mnemonic_equivalence,
description,
status,
latest,
deleted,
requested,
requested_by,
requested_comment,
processed,
processed_by,
processed_comment
)
select npr3.id, npr3."version", np3.uuid, np32.uuid,
npr3."name", npr3.mnemonic, npr3.mnemoniceqclass, npr3.description,
npr3.status, false, npr3.deleted, npr3.requestdate, ua_r.username as requestedBy, npr3.requestercomment, npr3.processdate, ua_p.username as processedBy, npr3.processorcomment
from namepartrevision npr3
inner join namepart np3 on npr3.namepart_id = np3.id
inner join namepart np32 on npr3.parent_id = np32.id
left join useraccount ua_r on npr3.requestedby_id = ua_r.id
left join useraccount ua_p on npr3.processedby_id = ua_p.id
where np3.nameparttype = 'SECTION' and npr3.parent_id in
(
select npr2.namepart_id from namepartrevision npr2, namepart np2 where npr2.namepart_id = np2.id and np2.nameparttype = 'SECTION' and npr2.parent_id in
(select npr1.namepart_id from namepartrevision npr1, namepart np1 where npr1.namepart_id = np1.id and np1.nameparttype = 'SECTION' and npr1.parent_id is null)
);
insert into devicetype (
id,
version,
uuid,
parent_uuid,
name,
mnemonic,
mnemonic_equivalence,
description,
status,
latest,
deleted,
requested,
requested_by,
requested_comment,
processed,
processed_by,
processed_comment
)
select npr3.id, npr3."version", np3.uuid, np32.uuid,
npr3."name", npr3.mnemonic, npr3.mnemoniceqclass, npr3.description,
npr3.status, false, npr3.deleted, npr3.requestdate, ua_r.username as requestedBy, npr3.requestercomment, npr3.processdate, ua_p.username as processedBy, npr3.processorcomment
from namepartrevision npr3
inner join namepart np3 on npr3.namepart_id = np3.id
inner join namepart np32 on npr3.parent_id = np32.id
left join useraccount ua_r on npr3.requestedby_id = ua_r.id
left join useraccount ua_p on npr3.processedby_id = ua_p.id
where np3.nameparttype = 'DEVICE_TYPE' and npr3.parent_id in
(
select npr2.namepart_id from namepartrevision npr2, namepart np2 where npr2.namepart_id = np2.id and np2.nameparttype = 'DEVICE_TYPE' and npr2.parent_id in
(select npr1.namepart_id from namepartrevision npr1, namepart np1 where npr1.namepart_id = np1.id and np1.nameparttype = 'DEVICE_TYPE' and npr1.parent_id is null)
);
-- --------------------------------------------------------------------------------
-- data name level 1
-- --------------------------------------------------------------------------------
insert into name (
id,
version,
uuid,
systemgroup_uuid,
system_uuid,
subsystem_uuid,
devicetype_uuid,
instance_index,
convention_name,
convention_name_equivalence,
description,
status,
latest,
deleted,
requested,
requested_by,
requested_comment,
processed,
processed_by,
processed_comment
)
select dr.id, dr.version, d.uuid,
np_s.uuid,
null,
null,
np_d.uuid,
dr.instanceindex, dr.conventionname, dr.conventionnameeqclass, dr.additionalinfo, null, false, dr.deleted,
dr.requestdate, ua_r.username as requestedBy, null, null, null, dr.processorComment
from devicerevision dr
inner join device d on dr.device_id = d.id
inner join namepart np_s on dr.section_id = np_s.id
left outer join namepart np_d on dr.devicetype_id = np_d.id
left join useraccount ua_r on dr.requestedby_id = ua_r.id
where dr.section_id in
(
select np.id from namepart np, namepartrevision npr where np.id = npr.namepart_id and npr.parent_id is null
);
-- --------------------------------------------------------------------------------
-- data name level 2
-- --------------------------------------------------------------------------------
insert into name (
id,
version,
uuid,
systemgroup_uuid,
system_uuid,
subsystem_uuid,
devicetype_uuid,
instance_index,
convention_name,
convention_name_equivalence,
description,
status,
latest,
deleted,
requested,
requested_by,
requested_comment,
processed,
processed_by,
processed_comment
)
select dr.id, dr.version, d.uuid,
null,
np_s.uuid,
null,
np_d.uuid,
dr.instanceindex, dr.conventionname, dr.conventionnameeqclass, dr.additionalinfo, null, false, dr.deleted,
dr.requestdate, ua_r.username as requestedBy, null, null, null, dr.processorComment
from devicerevision dr
inner join device d on dr.device_id = d.id
inner join namepart np_s on dr.section_id = np_s.id
left outer join namepart np_d on dr.devicetype_id = np_d.id
left join useraccount ua_r on dr.requestedby_id = ua_r.id
where dr.section_id in
(
select np.id from namepart np, namepartrevision npr where np.id = npr.namepart_id and npr.parent_id in
(
select np2.id from namepart np2, namepartrevision npr2 where np2.id = npr2.namepart_id and npr2.parent_id is null
)
);
-- --------------------------------------------------------------------------------
-- data name level 3
-- --------------------------------------------------------------------------------
insert into name (
id,
version,
uuid,
systemgroup_uuid,
system_uuid,
subsystem_uuid,
devicetype_uuid,
instance_index,
convention_name,
convention_name_equivalence,
description,
status,
latest,
deleted,
requested,
requested_by,
requested_comment,
processed,
processed_by,
processed_comment
)
select dr.id, dr.version, d.uuid,
null,
null,
np_s.uuid,
np_d.uuid,
dr.instanceindex, dr.conventionname, dr.conventionnameeqclass, dr.additionalinfo, null, false, dr.deleted,
dr.requestdate, ua_r.username as requestedBy, null, null, null, dr.processorComment
from devicerevision dr
inner join device d on dr.device_id = d.id
inner join namepart np_s on dr.section_id = np_s.id
left outer join namepart np_d on dr.devicetype_id = np_d.id
left join useraccount ua_r on dr.requestedby_id = ua_r.id
where dr.section_id in
(
select np.id from namepart np, namepartrevision npr where np.id = npr.namepart_id and npr.parent_id in
(
select np2.id from namepart np2, namepartrevision npr2 where np2.id = npr2.namepart_id and npr2.parent_id in
(
select np3.id from namepart np3, namepartrevision npr3 where np3.id = npr3.namepart_id and npr3.parent_id is null
)
)
);
-- --------------------------------------------------------------------------------
-- index
-- --------------------------------------------------------------------------------
CREATE INDEX systemgroup_id_idx ON public.systemgroup (id);
CREATE INDEX systemgroup_uuid_idx ON public.systemgroup (uuid);
CREATE INDEX systemgroup_mnemonic_idx ON public.systemgroup (mnemonic);
CREATE INDEX systemgroup_status_idx ON public.systemgroup (status);
CREATE INDEX systemgroup_deleted_idx ON public.systemgroup (deleted);
CREATE INDEX system_id_idx ON public.system (id);
CREATE INDEX system_uuid_idx ON public.system (uuid);
CREATE INDEX system_parent_uuid_idx ON public.system (parent_uuid);
CREATE INDEX system_mnemonic_idx ON public.system (mnemonic);
CREATE INDEX system_status_idx ON public.system (status);
CREATE INDEX system_deleted_idx ON public.system (deleted);
CREATE INDEX subsystem_id_idx ON public.subsystem (id);
CREATE INDEX subsystem_uuid_idx ON public.subsystem (uuid);
CREATE INDEX subsystem_parent_uuid_idx ON public.subsystem (parent_uuid);
CREATE INDEX subsystem_mnemonic_idx ON public.subsystem (mnemonic);
CREATE INDEX subsystem_status_idx ON public.subsystem (status);
CREATE INDEX subsystem_deleted_idx ON public.subsystem (deleted);
CREATE INDEX discipline_id_idx ON public.discipline (id);
CREATE INDEX discipline_uuid_idx ON public.discipline (uuid);
CREATE INDEX discipline_mnemonic_idx ON public.discipline (mnemonic);
CREATE INDEX discipline_status_idx ON public.discipline (status);
CREATE INDEX discipline_deleted_idx ON public.discipline (deleted);
CREATE INDEX devicegroup_id_idx ON public.devicegroup (id);
CREATE INDEX devicegroup_uuid_idx ON public.devicegroup (uuid);
CREATE INDEX devicegroup_parent_uuid_idx ON public.devicegroup (parent_uuid);
CREATE INDEX devicegroup_mnemonic_idx ON public.devicegroup (mnemonic);
CREATE INDEX devicegroup_status_idx ON public.devicegroup (status);
CREATE INDEX devicegroup_deleted_idx ON public.devicegroup (deleted);
CREATE INDEX devicetype_id_idx ON public.devicetype (id);
CREATE INDEX devicetype_uuid_idx ON public.devicetype (uuid);
CREATE INDEX devicetype_parent_uuid_idx ON public.devicetype (parent_uuid);
CREATE INDEX devicetype_mnemonic_idx ON public.devicetype (mnemonic);
CREATE INDEX devicetype_status_idx ON public.devicetype (status);
CREATE INDEX devicetype_deleted_idx ON public.devicetype (deleted);
CREATE INDEX name_uuid_idx ON public.name (uuid);
-- --------------------------------------------------------------------------------
-- latest
-- --------------------------------------------------------------------------------
update systemgroup sg set latest = true where sg.id = (
select max(sg2.id) from systemgroup sg2 where sg2.uuid = sg.uuid and sg2.status = 'APPROVED'
);
update system sys set latest = true where sys.id = (
select max(sys2.id) from system sys2 where sys2.uuid = sys.uuid and sys2.status = 'APPROVED'
);
update subsystem sub set latest = true where sub.id = (
select max(sub2.id) from subsystem sub2 where sub2.uuid = sub.uuid and sub2.status = 'APPROVED'
);
update discipline di set latest = true where di.id = (
select max(di2.id) from discipline di2 where di2.uuid = di.uuid and di2.status = 'APPROVED'
);
update devicegroup dg set latest = true where dg.id = (
select max(dg2.id) from devicegroup dg2 where dg2.uuid = dg.uuid and dg2.status = 'APPROVED'
);
update devicetype dt set latest = true where dt.id = (
select max(dt2.id) from devicetype dt2 where dt2.uuid = dt.uuid and dt2.status = 'APPROVED'
);
update name en set latest = true where en.id = (
select max(en2.id) from name en2 where en2.uuid = en.uuid
);
-- --------------------------------------------------------------------------------
-- foreign key
-- --------------------------------------------------------------------------------
-- --------------------------------------------------------------------------------
-- index
-- --------------------------------------------------------------------------------
CREATE INDEX name_id_idx ON public.name (id);
CREATE INDEX name_namepartrevision_systemgroup_uuid_idx ON public.name (systemgroup_uuid);
CREATE INDEX name_namepartrevision_system_uuid_idx ON public.name (system_uuid);
CREATE INDEX name_namepartrevision_subsystem_uuid_idx ON public.name (subsystem_uuid);
CREATE INDEX name_namepartrevision_devicetype_uuid_idx ON public.name (devicetype_uuid);
CREATE INDEX name_convention_name_idx ON public.name (convention_name);
CREATE INDEX name_status_idx ON public.name (status);
CREATE INDEX name_deleted_idx ON public.name (deleted);
CREATE INDEX systemgroup_latest_idx ON public.systemgroup (latest);
CREATE INDEX system_latest_idx ON public.system (latest);
CREATE INDEX subsystem_latest_idx ON public.subsystem (latest);
CREATE INDEX discipline_latest_idx ON public.discipline (latest);
CREATE INDEX devicegroup_latest_idx ON public.devicegroup (latest);
CREATE INDEX devicetype_latest_idx ON public.devicetype (latest);
CREATE INDEX name_latest_idx ON public.name (latest);
-- --------------------------------------------------------------------------------
-- sequence
-- --------------------------------------------------------------------------------
CREATE SEQUENCE systemgroup_id_seq
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;
CREATE SEQUENCE system_id_seq
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;
CREATE SEQUENCE subsystem_id_seq
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;
CREATE SEQUENCE discipline_id_seq
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;
CREATE SEQUENCE devicegroup_id_seq
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;
CREATE SEQUENCE devicetype_id_seq
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;
CREATE SEQUENCE name_id_seq
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;
SELECT setval('systemgroup_id_seq', (select max(id) from systemgroup));
SELECT setval('system_id_seq', (select max(id) from "system"));
SELECT setval('subsystem_id_seq', (select max(id) from "subsystem"));
SELECT setval('discipline_id_seq', (select max(id) from discipline));
SELECT setval('devicegroup_id_seq', (select max(id) from devicegroup));
SELECT setval('devicetype_id_seq', (select max(id) from devicetype));
SELECT setval('name_id_seq', (select max(id) from "name"));
ALTER SEQUENCE systemgroup_id_seq OWNED BY systemgroup.id;
ALTER SEQUENCE system_id_seq OWNED BY system.id;
ALTER SEQUENCE subsystem_id_seq OWNED BY subsystem.id;
ALTER SEQUENCE discipline_id_seq OWNED BY discipline.id;
ALTER SEQUENCE devicegroup_id_seq OWNED BY devicegroup.id;
ALTER SEQUENCE devicetype_id_seq OWNED BY devicetype.id;
ALTER SEQUENCE name_id_seq OWNED BY name.id;
ALTER TABLE ONLY systemgroup ALTER COLUMN id SET DEFAULT nextval('systemgroup_id_seq'::regclass);
ALTER TABLE ONLY system ALTER COLUMN id SET DEFAULT nextval('system_id_seq'::regclass);
ALTER TABLE ONLY subsystem ALTER COLUMN id SET DEFAULT nextval('subsystem_id_seq'::regclass);
ALTER TABLE ONLY discipline ALTER COLUMN id SET DEFAULT nextval('discipline_id_seq'::regclass);
ALTER TABLE ONLY devicegroup ALTER COLUMN id SET DEFAULT nextval('devicegroup_id_seq'::regclass);
ALTER TABLE ONLY devicetype ALTER COLUMN id SET DEFAULT nextval('devicetype_id_seq'::regclass);
ALTER TABLE ONLY name ALTER COLUMN id SET DEFAULT nextval('name_id_seq'::regclass);
-- --------------------------------------------------------------------------------
-- primary key
-- --------------------------------------------------------------------------------
ALTER TABLE public.systemgroup ADD CONSTRAINT systemgroup_pk PRIMARY KEY (id);
ALTER TABLE public.system ADD CONSTRAINT system_pk PRIMARY KEY (id);
ALTER TABLE public.subsystem ADD CONSTRAINT subsystem_pk PRIMARY KEY (id);
ALTER TABLE public.discipline ADD CONSTRAINT discipline_pk PRIMARY KEY (id);
ALTER TABLE public.devicegroup ADD CONSTRAINT devicegroup_pk PRIMARY KEY (id);
ALTER TABLE public.devicetype ADD CONSTRAINT devicetype_pk PRIMARY KEY (id);
ALTER TABLE public.name ADD CONSTRAINT name_pk PRIMARY KEY (id);
-- --------------------------------------------------------------------------------
-- --------------------------------------------------------------------------------
-- function
-- --------------------------------------------------------------------------------
CREATE OR REPLACE FUNCTION get_mnemonic_path_system_structure(convention_name text)
RETURNS text
LANGUAGE plpgsql
AS
$$
DECLARE
pos int;
BEGIN
pos = strpos(convention_name, ':');
IF pos > 0 THEN
RETURN substr(convention_name, 1, pos-1);
END IF;
RETURN convention_name;
END;
$$;
CREATE OR REPLACE FUNCTION get_mnemonic_path_device_structure(convention_name text)
RETURNS text
LANGUAGE plpgsql
AS
$$
DECLARE
pos int;
mnemonic_path text;
nbr_delimiters int;
BEGIN
pos = strpos(convention_name, ':');
IF pos > 0 THEN
mnemonic_path = substr(convention_name, pos+1);
nbr_delimiters = array_length(string_to_array(mnemonic_path, '-'), 1) - 1;
IF nbr_delimiters = 2 then
mnemonic_path = reverse(mnemonic_path);
mnemonic_path = substr(mnemonic_path, strpos(mnemonic_path, '-')+1);
RETURN reverse(mnemonic_path);
ELSIF nbr_delimiters = 1 then
return mnemonic_path;
ELSE
RETURN null;
END IF;
END IF;
RETURN null;
END;
$$;
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
CREATE OR REPLACE FUNCTION public.get_instance_index(convention_name text)
RETURNS text
LANGUAGE plpgsql
AS
$$
DECLARE
len int;
pos int;
mnemonic_path text;
nbr_delimiters int;
BEGIN
pos = strpos(convention_name, ':');
IF pos > 0 THEN
mnemonic_path = substr(convention_name, pos+1);
nbr_delimiters = array_length(string_to_array(mnemonic_path, '-'), 1) - 1;
IF nbr_delimiters = 2 then
mnemonic_path = reverse(mnemonic_path);
len = length(mnemonic_path);
pos = strpos(mnemonic_path, '-');
mnemonic_path = reverse(mnemonic_path);
RETURN substr(mnemonic_path, len - pos + 2);
ELSE
RETURN null;
END IF;
END IF;
RETURN null;
END;
$$;
CREATE OR REPLACE FUNCTION get_mnemonic_path_system(system_uuid text)
RETURNS text
LANGUAGE plpgsql
AS
$$
DECLARE
system_mnemonic text;
BEGIN

Lars Johansson
committed
select mnemonic into system_mnemonic from "system" where uuid = system_uuid and latest = true;

Lars Johansson
committed
if system_mnemonic is not null then
return system_mnemonic;
else
return null;
end if;
END;
$$;
CREATE OR REPLACE FUNCTION get_mnemonic_path_subsystem(subsystem_uuid text)
RETURNS text
LANGUAGE plpgsql
AS
$$
DECLARE
subsystem_mnemonic text;
system_uuid text;
system_mnemonic text;
BEGIN
select parent_uuid, mnemonic into system_uuid, subsystem_mnemonic from subsystem where uuid = subsystem_uuid and latest = true;

Lars Johansson
committed
select mnemonic into system_mnemonic from "system" where uuid = system_uuid and latest = true;

Lars Johansson
committed
if system_mnemonic is not null and subsystem_mnemonic is not null then
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
return concat(system_mnemonic, '-', subsystem_mnemonic);
else
return null;
end if;
END;
$$;
CREATE OR REPLACE FUNCTION get_mnemonic_path_devicegroup(devicegroup_uuid text)
RETURNS text
LANGUAGE plpgsql
AS
$$
DECLARE
discipline_uuid text;
discipline_mnemonic text;
BEGIN
select parent_uuid into discipline_uuid from devicegroup where uuid = devicegroup_uuid and latest = true;
select mnemonic into discipline_mnemonic from discipline where uuid = discipline_uuid and latest = true;
if discipline_mnemonic is not null then
return discipline_mnemonic;
else
return null;
end if;
END;
$$;
CREATE OR REPLACE FUNCTION get_mnemonic_path_devicetype(devicetype_uuid text)
RETURNS text
LANGUAGE plpgsql
AS
$$
DECLARE
devicetype_mnemonic text;
devicegroup_uuid text;
discipline_uuid text;
discipline_mnemonic text;
BEGIN
select parent_uuid, mnemonic into devicegroup_uuid, devicetype_mnemonic from devicetype where uuid = devicetype_uuid and latest = true;
select parent_uuid, mnemonic into discipline_uuid from devicegroup where uuid = devicegroup_uuid and latest = true;
select mnemonic into discipline_mnemonic from discipline where uuid = discipline_uuid and latest = true;
if discipline_mnemonic is not null and devicetype_mnemonic is not null then
return concat(discipline_mnemonic, '-', devicetype_mnemonic);
elsif devicetype_mnemonic is not null then
return devicetype_mnemonic;
else
return null;
end if;
END;
$$;