Current File : //usr/share/webmin/postgresql/save_seq.cgi |
#!/usr/bin/perl
# Create, modify or delete a sequence
require './postgresql-lib.pl';
&ReadParse();
&error_setup($text{'seq_err'});
&can_edit_db($in{'db'}) || &error($text{'dbase_ecannot'});
$access{'edonly'} && &error($text{'dbase_ecannot'});
$access{'seqs'} || &error($text{'seq_ecannot'});
if ($in{'delete'}) {
# Just drop the sequence
$sql = "drop sequence "."e_table($in{'old'});
&execute_sql_logged($in{'db'}, $sql);
&webmin_log("delete", "seq", $in{'old'}, \%in);
}
else {
# Validate inputs
$in{'old'} || $in{'name'} =~ /^\S+$/ || &error($text{'seq_ename'});
if (!$in{'old'}) {
@seqs = &list_sequences($in{'db'});
&indexof($in{'name'}, @seqs) >= 0 &&
&error($text{'seq_eclash'});
}
$in{'min_def'} || $in{'min'} =~ /^\d+$/ ||
&error($text{'seq_emin'});
$in{'max_def'} || $in{'max'} =~ /^\d+$/ ||
&error($text{'seq_emax'});
$in{'inc'} =~ /^\d+$/ || &error($text{'seq_einc'});
$in{'cache_def'} || $in{'cache'} =~ /^\d+$/ ||
&error($text{'seq_ecache'});
if (&supports_sequences() == 2 && $in{'old'}) {
# Need to drop and re-create
if (&indexof($in{'old'}, &list_sequences($in{'db'})) >= 0) {
$sql = "drop sequence "."e_table($in{'old'});
&execute_sql_logged($in{'db'}, $sql);
}
$sql = "create sequence "."e_table($in{'old'}).
" increment ".$in{'inc'}.
($in{'min_def'} ? "" : " minvalue ".$in{'min'}).
($in{'max_def'} ? "" : " maxvalue ".$in{'max'}).
" start ".$in{'last'}.
($in{'cache_def'} ? "" : " cache ".$in{'cache'}).
($in{'cycle'} ? " cycle" : "");
}
elsif ($in{'old'} && !$recreate) {
# Alter the current sequence
$sql = "alter sequence "."e_table($in{'old'}).
" increment ".$in{'inc'}.
($in{'min_def'} ? " no minvalue"
: " minvalue ".$in{'min'}).
($in{'max_def'} ? " no maxvalue"
: " maxvalue ".$in{'max'}).
($in{'last_def'} ? "" : " restart ".$in{'last'}).
" cache ".$in{'cache'}.
($in{'cycle'} ? " cycle" : " no cycle");
}
else {
# Create a new one
$sql = "create sequence "."e_table($in{'name'}).
" increment ".$in{'inc'}.
($in{'min_def'} ? "" : " minvalue ".$in{'min'}).
($in{'max_def'} ? "" : " maxvalue ".$in{'max'}).
" start ".$in{'last'}.
($in{'cache_def'} ? "" : " cache ".$in{'cache'}).
($in{'cycle'} ? " cycle" : "");
}
&execute_sql_logged($in{'db'}, $sql);
if ($in{'old'}) {
&webmin_log("modify", "view", $in{'old'}, \%in);
}
else {
&webmin_log("create", "view", $in{'name'}, \%in);
}
}
&redirect("edit_dbase.cgi?db=$in{'db'}");