the change is small, reduces code and lets the task of referential
integrity to PostgreSQL.
Signed-off-by: Stoiko Ivanov <s.ivanov@proxmox.com>
Tested-by: Dominik Csapak <d.csapak@proxmox.com>
Reviewed-by: Dominik Csapak <d.csapak@proxmox.com>
$ldb->do("DELETE FROM ObjectGroup");
$ldb->do("DELETE FROM Object");
$ldb->do("DELETE FROM Attribut");
$ldb->do("DELETE FROM ObjectGroup");
$ldb->do("DELETE FROM Object");
$ldb->do("DELETE FROM Attribut");
- $ldb->do("DELETE FROM Objectgroup_Attributes");
- $ldb->do("DELETE FROM Rule_Attributes");
my $rule_attributes_cmd = <<__EOD;
CREATE TABLE Rule_Attributes (
my $rule_attributes_cmd = <<__EOD;
CREATE TABLE Rule_Attributes (
- Rule_ID INTEGER NOT NULL,
+ Rule_ID INTEGER NOT NULL REFERENCES Rule (ID) ON DELETE CASCADE,
Name VARCHAR(20) NOT NULL,
Value BYTEA NULL,
PRIMARY KEY (Rule_ID, Name)
Name VARCHAR(20) NOT NULL,
Value BYTEA NULL,
PRIMARY KEY (Rule_ID, Name)
my $object_group_attributes_cmd = <<__EOD;
CREATE TABLE Objectgroup_Attributes (
my $object_group_attributes_cmd = <<__EOD;
CREATE TABLE Objectgroup_Attributes (
- Objectgroup_ID INTEGER NOT NULL,
+ Objectgroup_ID INTEGER NOT NULL REFERENCES Objectgroup (ID) ON DELETE CASCADE,
Name VARCHAR(20) NOT NULL,
Value BYTEA NULL,
PRIMARY KEY (Objectgroup_ID, Name)
Name VARCHAR(20) NOT NULL,
Value BYTEA NULL,
PRIMARY KEY (Objectgroup_ID, Name)
$dbh->do(
"DELETE FROM Rule;"
." DELETE FROM RuleGroup;"
$dbh->do(
"DELETE FROM Rule;"
." DELETE FROM RuleGroup;"
- ." DELETE FROM Rule_Attributes;"
- ." DELETE FROM Objectgroup_Attributes;"
." DELETE FROM Attribut WHERE Object_ID NOT IN ($glids);"
." DELETE FROM Object WHERE ID NOT IN ($glids);"
." DELETE FROM Objectgroup WHERE class != 'greylist';"
." DELETE FROM Attribut WHERE Object_ID NOT IN ($glids);"
." DELETE FROM Object WHERE ID NOT IN ($glids);"
." DELETE FROM Objectgroup WHERE class != 'greylist';"
$self->{dbh}->do("DELETE FROM RuleGroup " .
"WHERE Objectgroup_ID = ?", undef, $groupid);
$self->{dbh}->do("DELETE FROM RuleGroup " .
"WHERE Objectgroup_ID = ?", undef, $groupid);
- $self->{dbh}->do("DELETE FROM Objectgroup_Attributes " .
- "WHERE Objectgroup_ID = ?", undef, $groupid);
-
$sth = $self->{dbh}->prepare("SELECT * FROM Object " .
"where Objectgroup_ID = ?");
$sth->execute($groupid);
$sth = $self->{dbh}->prepare("SELECT * FROM Object " .
"where Objectgroup_ID = ?");
$sth->execute($groupid);
"WHERE ID = ?", undef, $ruleid);
$self->{dbh}->do("DELETE FROM RuleGroup " .
"WHERE Rule_ID = ?", undef, $ruleid);
"WHERE ID = ?", undef, $ruleid);
$self->{dbh}->do("DELETE FROM RuleGroup " .
"WHERE Rule_ID = ?", undef, $ruleid);
- $self->{dbh}->do("DELETE FROM Rule_Attributes " .
- "WHERE Rule_ID = ?", undef, $ruleid);
-
$self->{dbh}->commit;
};
if (my $err = $@) {
$self->{dbh}->commit;
};
if (my $err = $@) {