2 # Create, modify or delete a sequence
4 require './postgresql-lib.pl';
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'});
12 # Just drop the sequence
13 $sql = "drop sequence "."e_table($in{'old'});
14 &execute_sql_logged($in{'db'}, $sql);
15 &webmin_log("delete", "seq", $in{'old'}, \%in);
19 $in{'old'} || $in{'name'} =~ /^\S+$/ || &error($text{'seq_ename'});
21 @seqs = &list_sequences($in{'db'});
22 &indexof($in{'name'}, @seqs) >= 0 &&
23 &error($text{'seq_eclash'});
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'});
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 "."e_table($in{'old'});
37 &execute_sql_logged($in{'db'}, $sql);
39 $sql = "create sequence "."e_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" : "");
47 elsif ($in{'old'} && !$recreate) {
48 # Alter the current sequence
49 $sql = "alter sequence "."e_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");
61 $sql = "create sequence "."e_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" : "");
69 &execute_sql_logged($in{'db'}, $sql);
72 &webmin_log("modify", "view", $in{'old'}, \%in);
75 &webmin_log("create", "view", $in{'name'}, \%in);
78 &redirect("edit_dbase.cgi?db=$in{'db'}");