summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLibravatar Janik Kleinhoff <ilbelkyr@shalture.org>2017-02-13 21:51:10 +0000
committerLibravatar Janik Kleinhoff <ilbelkyr@shalture.org>2017-02-13 22:17:14 +0000
commitecb16565531b349acda366515ebb2f9fc1cc24a3 (patch)
tree69630bcddc86b035e2285deee5aa74a32769ddb0
parente763ec8c425f73eb96adc5265ae1258b697a3ea6 (diff)
downloadantispammeta-ecb16565531b349acda366515ebb2f9fc1cc24a3.tar.bz2
antispammeta-ecb16565531b349acda366515ebb2f9fc1cc24a3.tar.xz
antispammeta-ecb16565531b349acda366515ebb2f9fc1cc24a3.tar.zst
DB: fix major fuckup
"id" in the alertlog table refers to the ID name of the alert rule that triggered, **not** to some sort of unique ID. This commit rewrites the database schema history used by DBIx::Class::DeploymentHandler as the previous schemata were utterly useless (and, in fact, seem to be undeployable). @Unit193, @Xenthys Clearly you managed to deploy a database somehow. If you used the legacy `DATABASE.SCHEMA` file and `bin/db_legacy`, you should be able to update via `bin/db_upgrade`; I've tested to verify this. (If you //haven't// run `db_legacy` yet, make sure to update to exactly de9f3deabe35, run `db_legacy`, then update to this commit and proceed with `db_upgrade`.) If you used the `db_deploy` script, may Cthulhu have mercy on your soul: I'm pretty sure that would not actually have worked. That said, it's my mistake, so if you require further assistance, feel free to poke me on freenode.
-rwxr-xr-xbin/db_legacy3
-rw-r--r--lib/ASM/DB.pm2
-rw-r--r--lib/ASM/DB/Result/Alertlog.pm3
-rw-r--r--sql/_source/deploy/1/001-auto.yml16
-rw-r--r--sql/_source/deploy/2/001-auto.yml16
-rw-r--r--sql/_source/deploy/3/001-auto-__VERSION.yml91
-rw-r--r--sql/_source/deploy/3/001-auto.yml387
7 files changed, 487 insertions, 31 deletions
diff --git a/bin/db_legacy b/bin/db_legacy
index 6f0208c..3206d33 100755
--- a/bin/db_legacy
+++ b/bin/db_legacy
@@ -24,8 +24,9 @@ my $dh = DBIx::Class::DeploymentHandler->new({
schema => $schema,
schema_version => '' . $schema->schema_version,
sql_translator_args => { add_drop_table => 0, quote_identifiers => 1 },
+ databases => [],
+ ignore_ddl => 1,
});
-$dh->prepare_version_storage_install;
$dh->install_version_storage;
$dh->add_database_version({ version => 1 });
diff --git a/lib/ASM/DB.pm b/lib/ASM/DB.pm
index 84f323b..cc9906c 100644
--- a/lib/ASM/DB.pm
+++ b/lib/ASM/DB.pm
@@ -1,5 +1,5 @@
use utf8;
-package ASM::DB 2;
+package ASM::DB 3;
use strict;
use warnings;
diff --git a/lib/ASM/DB/Result/Alertlog.pm b/lib/ASM/DB/Result/Alertlog.pm
index 8ce22ff..f7155df 100644
--- a/lib/ASM/DB/Result/Alertlog.pm
+++ b/lib/ASM/DB/Result/Alertlog.pm
@@ -23,8 +23,9 @@ __PACKAGE__->add_columns(
level => { data_type => 'tinytext', is_nullable => 0 },
id => { data_type => 'tinytext', is_nullable => 0 },
reason => { data_type => 'text', is_nullable => 0 },
+ sqlid => { data_type => 'bigint', is_auto_increment => 1, is_nullable => 0 },
);
-__PACKAGE__->set_primary_key('id');
+__PACKAGE__->set_primary_key('sqlid');
1;
diff --git a/sql/_source/deploy/1/001-auto.yml b/sql/_source/deploy/1/001-auto.yml
index 6a31fe8..9dc9bf6 100644
--- a/sql/_source/deploy/1/001-auto.yml
+++ b/sql/_source/deploy/1/001-auto.yml
@@ -186,19 +186,7 @@ schema:
options: []
order: 1
alertlog:
- constraints:
- - deferrable: 1
- expression: ''
- fields:
- - id
- match_type: ''
- name: ''
- on_delete: ''
- on_update: ''
- options: []
- reference_fields: []
- reference_table: ''
- type: PRIMARY KEY
+ constraints: []
fields:
channel:
data_type: text
@@ -234,7 +222,7 @@ schema:
data_type: tinytext
default_value: ~
is_nullable: 0
- is_primary_key: 1
+ is_primary_key: 0
is_unique: 0
name: id
order: 8
diff --git a/sql/_source/deploy/2/001-auto.yml b/sql/_source/deploy/2/001-auto.yml
index f65e9ea..5a58b43 100644
--- a/sql/_source/deploy/2/001-auto.yml
+++ b/sql/_source/deploy/2/001-auto.yml
@@ -186,19 +186,7 @@ schema:
options: []
order: 1
alertlog:
- constraints:
- - deferrable: 1
- expression: ''
- fields:
- - id
- match_type: ''
- name: ''
- on_delete: ''
- on_update: ''
- options: []
- reference_fields: []
- reference_table: ''
- type: PRIMARY KEY
+ constraints: []
fields:
channel:
data_type: text
@@ -234,7 +222,7 @@ schema:
data_type: tinytext
default_value: ~
is_nullable: 0
- is_primary_key: 1
+ is_primary_key: 0
is_unique: 0
name: id
order: 8
diff --git a/sql/_source/deploy/3/001-auto-__VERSION.yml b/sql/_source/deploy/3/001-auto-__VERSION.yml
new file mode 100644
index 0000000..907f443
--- /dev/null
+++ b/sql/_source/deploy/3/001-auto-__VERSION.yml
@@ -0,0 +1,91 @@
+---
+schema:
+ procedures: {}
+ tables:
+ dbix_class_deploymenthandler_versions:
+ constraints:
+ - deferrable: 1
+ expression: ''
+ fields:
+ - id
+ match_type: ''
+ name: ''
+ on_delete: ''
+ on_update: ''
+ options: []
+ reference_fields: []
+ reference_table: ''
+ type: PRIMARY KEY
+ - deferrable: 1
+ expression: ''
+ fields:
+ - version
+ match_type: ''
+ name: dbix_class_deploymenthandler_versions_version
+ on_delete: ''
+ on_update: ''
+ options: []
+ reference_fields: []
+ reference_table: ''
+ type: UNIQUE
+ fields:
+ ddl:
+ data_type: text
+ default_value: ~
+ is_nullable: 1
+ is_primary_key: 0
+ is_unique: 0
+ name: ddl
+ order: 3
+ size:
+ - 0
+ id:
+ data_type: int
+ default_value: ~
+ is_auto_increment: 1
+ is_nullable: 0
+ is_primary_key: 1
+ is_unique: 0
+ name: id
+ order: 1
+ size:
+ - 0
+ upgrade_sql:
+ data_type: text
+ default_value: ~
+ is_nullable: 1
+ is_primary_key: 0
+ is_unique: 0
+ name: upgrade_sql
+ order: 4
+ size:
+ - 0
+ version:
+ data_type: varchar
+ default_value: ~
+ is_nullable: 0
+ is_primary_key: 0
+ is_unique: 1
+ name: version
+ order: 2
+ size:
+ - 50
+ indices: []
+ name: dbix_class_deploymenthandler_versions
+ options: []
+ order: 1
+ triggers: {}
+ views: {}
+translator:
+ add_drop_table: 0
+ filename: ~
+ no_comments: 0
+ parser_args:
+ sources:
+ - __VERSION
+ parser_type: SQL::Translator::Parser::DBIx::Class
+ producer_args: {}
+ producer_type: SQL::Translator::Producer::YAML
+ show_warnings: 0
+ trace: 0
+ version: 0.11021
diff --git a/sql/_source/deploy/3/001-auto.yml b/sql/_source/deploy/3/001-auto.yml
new file mode 100644
index 0000000..76e5409
--- /dev/null
+++ b/sql/_source/deploy/3/001-auto.yml
@@ -0,0 +1,387 @@
+---
+schema:
+ procedures: {}
+ tables:
+ actionlog:
+ constraints:
+ - deferrable: 1
+ expression: ''
+ fields:
+ - index
+ match_type: ''
+ name: ''
+ on_delete: ''
+ on_update: ''
+ options: []
+ reference_fields: []
+ reference_table: ''
+ type: PRIMARY KEY
+ fields:
+ account:
+ data_type: varchar
+ default_value: ~
+ is_nullable: 1
+ is_primary_key: 0
+ is_unique: 0
+ name: account
+ order: 11
+ size:
+ - 17
+ action:
+ data_type: varchar
+ default_value: ~
+ is_nullable: 0
+ is_primary_key: 0
+ is_unique: 0
+ name: action
+ order: 3
+ size:
+ - 20
+ byaccount:
+ data_type: varchar
+ default_value: ~
+ is_nullable: 1
+ is_primary_key: 0
+ is_unique: 0
+ name: byaccount
+ order: 16
+ size:
+ - 17
+ bygecos:
+ data_type: varchar
+ default_value: ~
+ is_nullable: 1
+ is_primary_key: 0
+ is_unique: 0
+ name: bygecos
+ order: 15
+ size:
+ - 512
+ byhost:
+ data_type: varchar
+ default_value: ~
+ is_nullable: 1
+ is_primary_key: 0
+ is_unique: 0
+ name: byhost
+ order: 14
+ size:
+ - 64
+ bynick:
+ data_type: varchar
+ default_value: ~
+ is_nullable: 1
+ is_primary_key: 0
+ is_unique: 0
+ name: bynick
+ order: 12
+ size:
+ - 17
+ byuser:
+ data_type: varchar
+ default_value: ~
+ is_nullable: 1
+ is_primary_key: 0
+ is_unique: 0
+ name: byuser
+ order: 13
+ size:
+ - 11
+ channel:
+ data_type: varchar
+ default_value: ~
+ is_nullable: 1
+ is_primary_key: 0
+ is_unique: 0
+ name: channel
+ order: 5
+ size:
+ - 51
+ gecos:
+ data_type: varchar
+ default_value: ~
+ is_nullable: 1
+ is_primary_key: 0
+ is_unique: 0
+ name: gecos
+ order: 10
+ size:
+ - 512
+ host:
+ data_type: varchar
+ default_value: ~
+ is_nullable: 1
+ is_primary_key: 0
+ is_unique: 0
+ name: host
+ order: 8
+ size:
+ - 64
+ index:
+ data_type: bigint
+ default_value: ~
+ is_auto_increment: 1
+ is_nullable: 0
+ is_primary_key: 1
+ is_unique: 0
+ name: index
+ order: 1
+ size:
+ - 0
+ ip:
+ data_type: integer
+ default_value: ~
+ extra:
+ unsigned: 1
+ is_nullable: 1
+ is_primary_key: 0
+ is_unique: 0
+ name: ip
+ order: 9
+ size:
+ - 0
+ nick:
+ data_type: varchar
+ default_value: ~
+ is_nullable: 0
+ is_primary_key: 0
+ is_unique: 0
+ name: nick
+ order: 6
+ size:
+ - 17
+ reason:
+ data_type: varchar
+ default_value: ~
+ is_nullable: 1
+ is_primary_key: 0
+ is_unique: 0
+ name: reason
+ order: 4
+ size:
+ - 512
+ time:
+ data_type: timestamp
+ default_value: !!perl/ref
+ =: current_timestamp
+ is_nullable: 0
+ is_primary_key: 0
+ is_unique: 0
+ name: time
+ order: 2
+ size:
+ - 0
+ user:
+ data_type: varchar
+ default_value: ~
+ is_nullable: 1
+ is_primary_key: 0
+ is_unique: 0
+ name: user
+ order: 7
+ size:
+ - 11
+ indices: []
+ name: actionlog
+ options: []
+ order: 1
+ alertlog:
+ constraints:
+ - deferrable: 1
+ expression: ''
+ fields:
+ - sqlid
+ match_type: ''
+ name: ''
+ on_delete: ''
+ on_update: ''
+ options: []
+ reference_fields: []
+ reference_table: ''
+ type: PRIMARY KEY
+ fields:
+ channel:
+ data_type: text
+ default_value: ~
+ is_nullable: 0
+ is_primary_key: 0
+ is_unique: 0
+ name: channel
+ order: 2
+ size:
+ - 0
+ gecos:
+ data_type: text
+ default_value: ~
+ is_nullable: 0
+ is_primary_key: 0
+ is_unique: 0
+ name: gecos
+ order: 6
+ size:
+ - 0
+ host:
+ data_type: text
+ default_value: ~
+ is_nullable: 0
+ is_primary_key: 0
+ is_unique: 0
+ name: host
+ order: 5
+ size:
+ - 0
+ id:
+ data_type: tinytext
+ default_value: ~
+ is_nullable: 0
+ is_primary_key: 0
+ is_unique: 0
+ name: id
+ order: 8
+ size:
+ - 0
+ level:
+ data_type: tinytext
+ default_value: ~
+ is_nullable: 0
+ is_primary_key: 0
+ is_unique: 0
+ name: level
+ order: 7
+ size:
+ - 0
+ nick:
+ data_type: text
+ default_value: ~
+ is_nullable: 0
+ is_primary_key: 0
+ is_unique: 0
+ name: nick
+ order: 3
+ size:
+ - 0
+ reason:
+ data_type: text
+ default_value: ~
+ is_nullable: 0
+ is_primary_key: 0
+ is_unique: 0
+ name: reason
+ order: 9
+ size:
+ - 0
+ sqlid:
+ data_type: bigint
+ default_value: ~
+ is_auto_increment: 1
+ is_nullable: 0
+ is_primary_key: 1
+ is_unique: 0
+ name: sqlid
+ order: 10
+ size:
+ - 0
+ time:
+ data_type: timestamp
+ default_value: !!perl/ref
+ =: current_timestamp
+ is_nullable: 0
+ is_primary_key: 0
+ is_unique: 0
+ name: time
+ order: 1
+ size:
+ - 0
+ user:
+ data_type: text
+ default_value: ~
+ is_nullable: 0
+ is_primary_key: 0
+ is_unique: 0
+ name: user
+ order: 4
+ size:
+ - 0
+ indices: []
+ name: alertlog
+ options: []
+ order: 2
+ users:
+ constraints:
+ - deferrable: 1
+ expression: ''
+ fields:
+ - id
+ match_type: ''
+ name: ''
+ on_delete: ''
+ on_update: ''
+ options: []
+ reference_fields: []
+ reference_table: ''
+ type: PRIMARY KEY
+ - deferrable: 1
+ expression: ''
+ fields:
+ - name
+ match_type: ''
+ name: uniq_user_name
+ on_delete: ''
+ on_update: ''
+ options: []
+ reference_fields: []
+ reference_table: ''
+ type: UNIQUE
+ fields:
+ id:
+ data_type: bigint
+ default_value: ~
+ is_auto_increment: 1
+ is_nullable: 0
+ is_primary_key: 1
+ is_unique: 0
+ name: id
+ order: 1
+ size:
+ - 0
+ name:
+ data_type: varchar
+ default_value: ~
+ is_nullable: 0
+ is_primary_key: 0
+ is_unique: 1
+ name: name
+ order: 2
+ size:
+ - 20
+ passphrase:
+ data_type: text
+ default_value: ~
+ is_nullable: 0
+ is_primary_key: 0
+ is_unique: 0
+ name: passphrase
+ order: 3
+ size:
+ - 0
+ indices: []
+ name: users
+ options: []
+ order: 3
+ triggers: {}
+ views: {}
+translator:
+ add_drop_table: 0
+ filename: ~
+ no_comments: 0
+ parser_args:
+ sources:
+ - Actionlog
+ - Alertlog
+ - User
+ parser_type: SQL::Translator::Parser::DBIx::Class
+ producer_args: {}
+ producer_type: SQL::Translator::Producer::YAML
+ show_warnings: 0
+ trace: 0
+ version: 0.11021