]> git.donarmstrong.com Git - dbsnp.git/blob - utils/human_gty1_indexes_creation.pl
move gty1 index creation; update mssql psql conversion
[dbsnp.git] / utils / human_gty1_indexes_creation.pl
1 #!/usr/bin/perl
2
3 use warnings;
4 use strict;
5 my @chr = (1..22,
6            qw(AltOnly MT NewSs NotOn PAR Un X Y)
7           );
8 my %chr;
9 @chr{@chr} = @chr;
10 $chr{NewSs} = 'ss';
11
12 my %args;
13 @args{map {my $a = $_; lc($a)} @ARGV} = 1;
14
15 if ($args{drop}) {
16     for my $chr (@chr) {
17         print "DROP TABLE SubInd_ch${chr};\n";
18     }
19     print "DROP TABLE SubInd;\n";
20 }
21 if ($args{create}) {
22     print <<END;
23 CREATE TABLE SubInd (
24         chr VARCHAR NOT NULL ,
25         batch_id int NOT NULL ,
26         subsnp_id int NOT NULL ,
27         submitted_ind_id int NOT NULL ,
28         submitted_strand_code int NULL ,
29         allele_flag int NULL ,
30         gty_id int NULL ,
31         submitted_rs int NULL
32 );
33 END
34     for my $chr (@chr) {
35         print "CREATE TABLE SubInd_ch${chr} (CHECK (chr = '$chr{${chr}}')) INHERITS (SubInd);\n";
36     }
37 }
38 if ($args{trigger}) {
39     print <<EOF;
40 CREATE OR REPLACE FUNCTION subind_insert_trigger()
41 RETURNS TRIGGER AS \$\$
42 BEGIN
43 EOF
44     for my $chr (@chr) {
45         print <<EOF;
46 IF (NEW.chr = '${chr}') THEN
47    INSERT INTO SubInd_ch${chr} VALUES (NEW.*);
48 EOF
49         print "ELS";
50     }
51     print <<EOF;
52 E
53 RAISE EXCEPTION 'chr out of range!';
54 END IF;
55 RETURN NULL;
56 END;
57 \$\$
58 LANGUAGE plpgsql;
59 EOF
60 }
61 if ($args{index}) {
62     for my $chr (@chr) {
63         print "CREATE INDEX ON SubInd_ch${chr}(subsnp_id);\n";
64         print "CREATE INDEX ON SubInd_ch${chr}(submitted_ind_id,subsnp_id,gty_id);\n";
65     }
66 }
67