Handle hostnames with upper-case letters
[webmin.git] / postgresql / save_seq.cgi
1 #!/usr/local/bin/perl
2 # Create, modify or delete a sequence
3
4 require './postgresql-lib.pl';
5 &ReadParse();
6 &error_setup($text{'seq_err'});
7 &can_edit_db($in{'db'}) || &error($text{'dbase_ecannot'});
8 $access{'edonly'} && &error($text{'dbase_ecannot'});
9 $access{'seqs'} || &error($text{'seq_ecannot'});
10
11 if ($in{'delete'}) {
12         # Just drop the sequence
13         $sql = "drop sequence ".&quote_table($in{'old'});
14         &execute_sql_logged($in{'db'}, $sql);
15         &webmin_log("delete", "seq", $in{'old'}, \%in);
16         }
17 else {
18         # Validate inputs
19         $in{'old'} || $in{'name'} =~ /^\S+$/ || &error($text{'seq_ename'});
20         if (!$in{'old'}) {
21                 @seqs = &list_sequences($in{'db'});
22                 &indexof($in{'name'}, @seqs) >= 0 &&
23                         &error($text{'seq_eclash'});
24                 }
25         $in{'min_def'} || $in{'min'} =~ /^\d+$/ ||
26                 &error($text{'seq_emin'});
27         $in{'max_def'} || $in{'max'} =~ /^\d+$/ ||
28                 &error($text{'seq_emax'});
29         $in{'inc'} =~ /^\d+$/ || &error($text{'seq_einc'});
30         $in{'cache_def'} || $in{'cache'} =~ /^\d+$/ ||
31                 &error($text{'seq_ecache'});
32
33         if (&supports_sequences() == 2 && $in{'old'}) {
34                 # Need to drop and re-create
35                 if (&indexof($in{'old'}, &list_sequences($in{'db'})) >= 0) {
36                         $sql = "drop sequence ".&quote_table($in{'old'});
37                         &execute_sql_logged($in{'db'}, $sql);
38                         }
39                 $sql = "create sequence ".&quote_table($in{'old'}).
40                        " increment ".$in{'inc'}.
41                        ($in{'min_def'} ? "" : " minvalue ".$in{'min'}).
42                        ($in{'max_def'} ? "" : " maxvalue ".$in{'max'}).
43                        " start ".$in{'last'}.
44                        ($in{'cache_def'} ? "" : " cache ".$in{'cache'}).
45                        ($in{'cycle'} ? " cycle" : "");
46                 }
47         elsif ($in{'old'} && !$recreate) {
48                 # Alter the current sequence
49                 $sql = "alter sequence ".&quote_table($in{'old'}).
50                        " increment ".$in{'inc'}.
51                        ($in{'min_def'} ? " no minvalue"
52                                        : " minvalue ".$in{'min'}).
53                        ($in{'max_def'} ? " no maxvalue"
54                                        : " maxvalue ".$in{'max'}).
55                        ($in{'last_def'} ? "" : " restart ".$in{'last'}).
56                        " cache ".$in{'cache'}.
57                        ($in{'cycle'} ? " cycle" : " no cycle");
58                 }
59         else {
60                 # Create a new one
61                 $sql = "create sequence ".&quote_table($in{'name'}).
62                        " increment ".$in{'inc'}.
63                        ($in{'min_def'} ? "" : " minvalue ".$in{'min'}).
64                        ($in{'max_def'} ? "" : " maxvalue ".$in{'max'}).
65                        " start ".$in{'last'}.
66                        ($in{'cache_def'} ? "" : " cache ".$in{'cache'}).
67                        ($in{'cycle'} ? " cycle" : "");
68                 }
69         &execute_sql_logged($in{'db'}, $sql);
70
71         if ($in{'old'}) {
72                 &webmin_log("modify", "view", $in{'old'}, \%in);
73                 }
74         else {
75                 &webmin_log("create", "view", $in{'name'}, \%in);
76                 }
77         }
78 &redirect("edit_dbase.cgi?db=$in{'db'}");
79