From: Don Armstrong Date: Wed, 6 Aug 2014 16:26:52 +0000 (-0700) Subject: add first stab at using DBIx::Class::DeploymentHandler to deploy the database X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=70d019318d5b91b47af5da9aa0c9e0857c611b8c;p=debbugs.git add first stab at using DBIx::Class::DeploymentHandler to deploy the database --- diff --git a/Debbugs/DB/Result/DbixClassDeploymenthandlerVersion.pm b/Debbugs/DB/Result/DbixClassDeploymenthandlerVersion.pm new file mode 100644 index 00000000..9ad1d942 --- /dev/null +++ b/Debbugs/DB/Result/DbixClassDeploymenthandlerVersion.pm @@ -0,0 +1,111 @@ +use utf8; +package Debbugs::DB::Result::DbixClassDeploymenthandlerVersion; + +# Created by DBIx::Class::Schema::Loader +# DO NOT MODIFY THE FIRST PART OF THIS FILE + +=head1 NAME + +Debbugs::DB::Result::DbixClassDeploymenthandlerVersion + +=cut + +use strict; +use warnings; + +use base 'DBIx::Class::Core'; + +=head1 COMPONENTS LOADED + +=over 4 + +=item * L + +=back + +=cut + +__PACKAGE__->load_components("InflateColumn::DateTime"); + +=head1 TABLE: C + +=cut + +__PACKAGE__->table("dbix_class_deploymenthandler_versions"); + +=head1 ACCESSORS + +=head2 id + + data_type: 'integer' + is_auto_increment: 1 + is_nullable: 0 + sequence: 'dbix_class_deploymenthandler_versions_id_seq' + +=head2 version + + data_type: 'varchar' + is_nullable: 0 + size: 50 + +=head2 ddl + + data_type: 'text' + is_nullable: 1 + +=head2 upgrade_sql + + data_type: 'text' + is_nullable: 1 + +=cut + +__PACKAGE__->add_columns( + "id", + { + data_type => "integer", + is_auto_increment => 1, + is_nullable => 0, + sequence => "dbix_class_deploymenthandler_versions_id_seq", + }, + "version", + { data_type => "varchar", is_nullable => 0, size => 50 }, + "ddl", + { data_type => "text", is_nullable => 1 }, + "upgrade_sql", + { data_type => "text", is_nullable => 1 }, +); + +=head1 PRIMARY KEY + +=over 4 + +=item * L + +=back + +=cut + +__PACKAGE__->set_primary_key("id"); + +=head1 UNIQUE CONSTRAINTS + +=head2 C + +=over 4 + +=item * L + +=back + +=cut + +__PACKAGE__->add_unique_constraint("dbix_class_deploymenthandler_versions_version", ["version"]); + + +# Created by DBIx::Class::Schema::Loader v0.07036 @ 2013-11-06 21:19:42 +# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:d62Bah1PHAy1ZMhIt2HeIA + + +# You can replace this text with custom code or comments, and it will be preserved on regeneration +1; diff --git a/bin/debbugs-installsql b/bin/debbugs-installsql new file mode 100755 index 00000000..4e19dbe5 --- /dev/null +++ b/bin/debbugs-installsql @@ -0,0 +1,151 @@ +#!/usr/bin/perl +# debbugs-installsql installs the SQL database using DBIx::Class::DeploymentHandler +# and is released under the terms of the GNU GPL version 3, or any +# later version, at your option. See the file README and COPYING for +# more information. +# Copyright 2013-2014 by Don Armstrong . + + +use warnings; +use strict; + +use Getopt::Long; +use Pod::Usage; + +=head1 NAME + +debbugs-installsql - installs the SQL database using DBIx::Class::DeploymentHandler + +=head1 SYNOPSIS + +debbugs-installsql [ --upgrade | --install ] + + Options: + --service postgresql service to connect to + --sysconfdir postgresql system configuration directory + --deployment-dir SQL deployment directory + --debug, -d debugging level (Default 0) + --help, -h display this help + --man, -m display manual + +=head1 OPTIONS + +=over + +=item B<--service> + +Postgresl service to connect to (defaults to debbugs) + +=item B<--sysconfdir> + +Postgresql sysconf dir. May also be set using the PGSYSCONFDIR +environmental variable (which this option overrides). + +=item B<--deployment-dir> + +Deployment directory (defaults to /usr/share/debbugs/sqldeployment) + +=item B<--debug, -d> + +Debug verbosity. (Default 0) + +=item B<--help, -h> + +Display brief usage information. + +=item B<--man, -m> + +Display this manual. + +=back + +=head1 EXAMPLES + +debbugs-installsql + +=cut + + +use vars qw($DEBUG); + +use Debbugs::DB; +use aliased 'DBIx::Class::DeploymentHandler' => 'DH'; + +my %options = (debug => 0, + help => 0, + man => 0, + developer_prepare => 0, + overwrite_deployment => 0, + service => 'debbugs', + deployment_dir => '/usr/share/debbugs/sqldeployment', + ); + +GetOptions(\%options, + 'service|s', + 'sysconfdir|c', + 'install', + 'upgrade', + 'current_version|current-version', + 'developer_prepare|developer-prepare', + 'overwrite_deployment|overwrite-deployment', + 'deployment_dir|deployment-dir=s', + 'debug|d+','help|h|?','man|m'); + +pod2usage() if $options{help}; +pod2usage({verbose=>2}) if $options{man}; + +$DEBUG = $options{debug}; + +my @USAGE_ERRORS; + +my @exclusive_options = qw(install upgrade current_version); +if (1 < grep {exists $options{$_}} @exclusive_options) { + push @USAGE_ERRORS,"You must only give one of the ". + join(', ',map {s/_/-/g; "--".$_} @exclusive_options). + " options"; +} +if (not grep {exists $options{$_}} @exclusive_options) { + $options{current_version} = 1; +} + +pod2usage(join("\n",@USAGE_ERRORS)) if @USAGE_ERRORS; + +if (exists $options{sysconfdir}) { + if (not defined $options{sysconfdir} or not length $options{sysconfdir}) { + delete $ENV{PGSYSCONFDIR}; + } else { + $ENV{PGSYSCONFDIR} = $options{sysconfdir}; + } +} + + +my $schema = Debbugs::DB->connect('dbi:Pg:service='.$options{service}) or + die "Unable to connect to database"; + + +my $dh = DH->new({schema => $schema, + force_overwrite => $options{overwrite_deployment}, + script_directory => $options{deployment_dir}, + databases => 'PostgreSQL' + }); + +if ($options{current_version}) { + print "The current database version is: ".$dh->database_version."\n"; + exit 0; +} elsif ($options{install}) { + if ($options{developer_prepare}) { + $dh->prepare_install; + } else { + $dh->install; + } +} elsif ($options{upgrade}) { + if ($options{developer_prepare}) { + $dh->prepare_deploy; + $dh->prepare_upgrade; + } else { + $dh->upgrade; + } +} + + +__END__ diff --git a/sql/PostgreSQL/deploy/1/001-auto-__VERSION.sql b/sql/PostgreSQL/deploy/1/001-auto-__VERSION.sql new file mode 100644 index 00000000..d278f682 --- /dev/null +++ b/sql/PostgreSQL/deploy/1/001-auto-__VERSION.sql @@ -0,0 +1,18 @@ +-- +-- Created by SQL::Translator::Producer::PostgreSQL +-- Created on Wed Aug 6 09:18:36 2014 +-- +; +-- +-- Table: dbix_class_deploymenthandler_versions. +-- +CREATE TABLE "dbix_class_deploymenthandler_versions" ( + "id" serial NOT NULL, + "version" character varying(50) NOT NULL, + "ddl" text, + "upgrade_sql" text, + PRIMARY KEY ("id"), + CONSTRAINT "dbix_class_deploymenthandler_versions_version" UNIQUE ("version") +); + +; diff --git a/sql/PostgreSQL/deploy/1/001-auto.sql b/sql/PostgreSQL/deploy/1/001-auto.sql new file mode 100644 index 00000000..283b43fb --- /dev/null +++ b/sql/PostgreSQL/deploy/1/001-auto.sql @@ -0,0 +1,615 @@ +-- +-- Created by SQL::Translator::Producer::PostgreSQL +-- Created on Wed Aug 6 09:18:36 2014 +-- +; +-- +-- Table: arch. +-- +CREATE TABLE "arch" ( + "id" serial NOT NULL, + "arch" text NOT NULL, + PRIMARY KEY ("id"), + CONSTRAINT "arch_arch_key" UNIQUE ("arch") +); + +; +-- +-- Table: bin_pkg. +-- +CREATE TABLE "bin_pkg" ( + "id" serial NOT NULL, + "pkg" text NOT NULL, + PRIMARY KEY ("id"), + CONSTRAINT "bin_pkg_pkg_key" UNIQUE ("pkg") +); + +; +-- +-- Table: binary_versions. +-- +CREATE TABLE "binary_versions" ( + "src_pkg" text, + "src_ver" debversion, + "bin_pkg" text, + "arch" text, + "bin_ver" debversion, + "src_ver_based_on" debversion, + "src_pkg_based_on" text +); + +; +-- +-- Table: bug_package. +-- +CREATE TABLE "bug_package" ( + "bug" integer, + "pkg_id" integer, + "pkg_type" text, + "package" text +); + +; +-- +-- Table: column_comments. +-- +CREATE TABLE "column_comments" ( + "table_name" text NOT NULL, + "column_name" text NOT NULL, + "comment_text" text NOT NULL, + CONSTRAINT "column_comments_table_name_column_name_idx" UNIQUE ("table_name", "column_name") +); + +; +-- +-- Table: correspondent. +-- +CREATE TABLE "correspondent" ( + "id" serial NOT NULL, + "addr" text NOT NULL, + PRIMARY KEY ("id"), + CONSTRAINT "correspondent_addr_idx" UNIQUE ("addr") +); + +; +-- +-- Table: dbix_class_deploymenthandler_versions. +-- +CREATE TABLE "dbix_class_deploymenthandler_versions" ( + "id" serial NOT NULL, + "version" character varying(50) NOT NULL, + "ddl" text, + "upgrade_sql" text, + PRIMARY KEY ("id"), + CONSTRAINT "dbix_class_deploymenthandler_versions_version" UNIQUE ("version") +); + +; +-- +-- Table: message. +-- +CREATE TABLE "message" ( + "id" serial NOT NULL, + "msgid" text, + "from_complete" text, + "from_addr" text, + "to_complete" text, + "to_addr" text, + "subject" text DEFAULT '' NOT NULL, + "sent_date" timestamp with time zone, + "refs" text DEFAULT '' NOT NULL, + "spam_score" double precision, + "is_spam" boolean DEFAULT false, + PRIMARY KEY ("id") +); + +; +-- +-- Table: severity. +-- +CREATE TABLE "severity" ( + "id" serial NOT NULL, + "severity" text NOT NULL, + "ordering" integer DEFAULT 5 NOT NULL, + "strong" boolean DEFAULT false, + "obsolete" boolean DEFAULT false, + PRIMARY KEY ("id"), + CONSTRAINT "severity_severity_idx" UNIQUE ("severity") +); + +; +-- +-- Table: src_pkg. +-- +CREATE TABLE "src_pkg" ( + "id" serial NOT NULL, + "pkg" text NOT NULL, + "pseduopkg" boolean DEFAULT false, + "alias_of" integer, + "creation" timestamp with time zone DEFAULT current_timestamp, + "disabled" timestamp with time zone, + "last_modified" timestamp with time zone DEFAULT current_timestamp, + "obsolete" boolean DEFAULT false, + PRIMARY KEY ("id"), + CONSTRAINT "src_pkg_pkg_disabled" UNIQUE ("pkg", "disabled") +); +CREATE INDEX "src_pkg_idx_alias_of" on "src_pkg" ("alias_of"); + +; +-- +-- Table: suite. +-- +CREATE TABLE "suite" ( + "id" serial NOT NULL, + "suite_name" text NOT NULL, + "version" text, + "codename" text, + "active" boolean DEFAULT true, + PRIMARY KEY ("id"), + CONSTRAINT "suite_suite_name_key" UNIQUE ("suite_name") +); + +; +-- +-- Table: table_comments. +-- +CREATE TABLE "table_comments" ( + "table_name" text NOT NULL, + "comment_text" text NOT NULL, + CONSTRAINT "table_comments_table_name_key" UNIQUE ("table_name") +); + +; +-- +-- Table: tag. +-- +CREATE TABLE "tag" ( + "id" serial NOT NULL, + "tag" text NOT NULL, + "obsolete" boolean DEFAULT false, + PRIMARY KEY ("id"), + CONSTRAINT "tag_tag_key" UNIQUE ("tag") +); + +; +-- +-- Table: correspondent_full_name. +-- +CREATE TABLE "correspondent_full_name" ( + "id" serial NOT NULL, + "correspondent" integer NOT NULL, + "full_name" text NOT NULL, + "last_seen" timestamp DEFAULT current_timestamp NOT NULL, + PRIMARY KEY ("id"), + CONSTRAINT "correspondent_full_name_correspondent_full_name_idx" UNIQUE ("correspondent", "full_name") +); +CREATE INDEX "correspondent_full_name_idx_correspondent" on "correspondent_full_name" ("correspondent"); + +; +-- +-- Table: maintainer. +-- +CREATE TABLE "maintainer" ( + "id" serial NOT NULL, + "name" text NOT NULL, + "correspondent" integer NOT NULL, + "created" timestamp with time zone DEFAULT current_timestamp NOT NULL, + "modified" timestamp with time zone DEFAULT current_timestamp NOT NULL, + PRIMARY KEY ("id"), + CONSTRAINT "maintainer_name_idx" UNIQUE ("name") +); +CREATE INDEX "maintainer_idx_correspondent" on "maintainer" ("correspondent"); + +; +-- +-- Table: message_refs. +-- +CREATE TABLE "message_refs" ( + "id" serial NOT NULL, + "message" integer NOT NULL, + "refs" integer NOT NULL, + "inferred" boolean DEFAULT false, + "primary_ref" boolean DEFAULT false, + PRIMARY KEY ("id"), + CONSTRAINT "message_refs_message_refs_idx" UNIQUE ("message", "refs") +); +CREATE INDEX "message_refs_idx_message" on "message_refs" ("message"); +CREATE INDEX "message_refs_idx_refs" on "message_refs" ("refs"); + +; +-- +-- Table: bug. +-- +CREATE TABLE "bug" ( + "id" integer NOT NULL, + "creation" timestamp with time zone DEFAULT current_timestamp NOT NULL, + "log_modified" timestamp with time zone DEFAULT current_timestamp NOT NULL, + "last_modified" timestamp with time zone DEFAULT current_timestamp NOT NULL, + "archived" boolean DEFAULT false NOT NULL, + "unarchived" timestamp with time zone, + "forwarded" text DEFAULT '' NOT NULL, + "summary" text DEFAULT '' NOT NULL, + "outlook" text DEFAULT '' NOT NULL, + "subject" text NOT NULL, + "severity" integer NOT NULL, + "done" integer, + "done_full" text DEFAULT '' NOT NULL, + "owner" integer, + "owner_full" text DEFAULT '' NOT NULL, + "submitter" integer, + "submitter_full" text DEFAULT '' NOT NULL, + "unknown_packages" text DEFAULT '' NOT NULL, + PRIMARY KEY ("id") +); +CREATE INDEX "bug_idx_done" on "bug" ("done"); +CREATE INDEX "bug_idx_owner" on "bug" ("owner"); +CREATE INDEX "bug_idx_severity" on "bug" ("severity"); +CREATE INDEX "bug_idx_submitter" on "bug" ("submitter"); + +; +-- +-- Table: message_correspondent. +-- +CREATE TABLE "message_correspondent" ( + "id" serial NOT NULL, + "message" integer NOT NULL, + "correspondent" integer NOT NULL, + "correspondent_type" character varying DEFAULT 'to' NOT NULL, + PRIMARY KEY ("id"), + CONSTRAINT "message_correspondent_message_correspondent_correspondent_t_idx" UNIQUE ("message", "correspondent", "correspondent_type") +); +CREATE INDEX "message_correspondent_idx_correspondent" on "message_correspondent" ("correspondent"); +CREATE INDEX "message_correspondent_idx_message" on "message_correspondent" ("message"); + +; +-- +-- Table: bug_blocks. +-- +CREATE TABLE "bug_blocks" ( + "id" serial NOT NULL, + "bug" integer NOT NULL, + "blocks" integer NOT NULL, + PRIMARY KEY ("id"), + CONSTRAINT "bug_blocks_bug_id_blocks_idx" UNIQUE ("bug", "blocks") +); +CREATE INDEX "bug_blocks_idx_blocks" on "bug_blocks" ("blocks"); +CREATE INDEX "bug_blocks_idx_bug" on "bug_blocks" ("bug"); + +; +-- +-- Table: bug_merged. +-- +CREATE TABLE "bug_merged" ( + "id" serial NOT NULL, + "bug" integer NOT NULL, + "merged" integer NOT NULL, + PRIMARY KEY ("id"), + CONSTRAINT "bug_merged_bug_id_merged_idx" UNIQUE ("bug", "merged") +); +CREATE INDEX "bug_merged_idx_bug" on "bug_merged" ("bug"); +CREATE INDEX "bug_merged_idx_merged" on "bug_merged" ("merged"); + +; +-- +-- Table: src_ver. +-- +CREATE TABLE "src_ver" ( + "id" serial NOT NULL, + "src_pkg" integer NOT NULL, + "ver" debversion NOT NULL, + "maintainer" integer, + "upload_date" timestamp with time zone DEFAULT current_timestamp NOT NULL, + "based_on" integer, + PRIMARY KEY ("id"), + CONSTRAINT "src_ver_src_pkg_id_ver" UNIQUE ("src_pkg", "ver") +); +CREATE INDEX "src_ver_idx_based_on" on "src_ver" ("based_on"); +CREATE INDEX "src_ver_idx_maintainer" on "src_ver" ("maintainer"); +CREATE INDEX "src_ver_idx_src_pkg" on "src_ver" ("src_pkg"); + +; +-- +-- Table: bug_binpackage. +-- +CREATE TABLE "bug_binpackage" ( + "id" serial NOT NULL, + "bug" integer NOT NULL, + "bin_pkg" integer NOT NULL, + PRIMARY KEY ("id"), + CONSTRAINT "bug_binpackage_id_pkg" UNIQUE ("bug", "bin_pkg") +); +CREATE INDEX "bug_binpackage_idx_bin_pkg" on "bug_binpackage" ("bin_pkg"); +CREATE INDEX "bug_binpackage_idx_bug" on "bug_binpackage" ("bug"); + +; +-- +-- Table: bug_message. +-- +CREATE TABLE "bug_message" ( + "id" serial NOT NULL, + "bug" integer NOT NULL, + "message" integer NOT NULL, + "message_number" integer NOT NULL, + "bug_log_offset" integer, + "offset_valid" timestamp with time zone, + PRIMARY KEY ("id"), + CONSTRAINT "bug_message_bug_message_idx" UNIQUE ("bug", "message") +); +CREATE INDEX "bug_message_idx_bug" on "bug_message" ("bug"); +CREATE INDEX "bug_message_idx_message" on "bug_message" ("message"); + +; +-- +-- Table: bug_srcpackage. +-- +CREATE TABLE "bug_srcpackage" ( + "id" serial NOT NULL, + "bug" integer NOT NULL, + "src_pkg" integer NOT NULL, + PRIMARY KEY ("id"), + CONSTRAINT "bug_srcpackage_id_pkg" UNIQUE ("bug", "src_pkg") +); +CREATE INDEX "bug_srcpackage_idx_bug" on "bug_srcpackage" ("bug"); +CREATE INDEX "bug_srcpackage_idx_src_pkg" on "bug_srcpackage" ("src_pkg"); + +; +-- +-- Table: bug_tag. +-- +CREATE TABLE "bug_tag" ( + "id" serial NOT NULL, + "bug" integer NOT NULL, + "tag" integer NOT NULL, + PRIMARY KEY ("id"), + CONSTRAINT "bug_tag_bug_tag" UNIQUE ("bug", "tag") +); +CREATE INDEX "bug_tag_idx_bug" on "bug_tag" ("bug"); +CREATE INDEX "bug_tag_idx_tag" on "bug_tag" ("tag"); + +; +-- +-- Table: bug_status_cache. +-- +CREATE TABLE "bug_status_cache" ( + "id" serial NOT NULL, + "bug" integer NOT NULL, + "suite" integer, + "arch" integer, + "status" character varying NOT NULL, + "modified" timestamp with time zone DEFAULT current_timestamp NOT NULL, + "asof" timestamp with time zone DEFAULT current_timestamp NOT NULL, + PRIMARY KEY ("id"), + CONSTRAINT "bug_status_cache_bug_suite_arch_idx" UNIQUE ("bug", "suite", "arch") +); +CREATE INDEX "bug_status_cache_idx_arch" on "bug_status_cache" ("arch"); +CREATE INDEX "bug_status_cache_idx_bug" on "bug_status_cache" ("bug"); +CREATE INDEX "bug_status_cache_idx_suite" on "bug_status_cache" ("suite"); + +; +-- +-- Table: src_associations. +-- +CREATE TABLE "src_associations" ( + "id" serial NOT NULL, + "suite" integer NOT NULL, + "source" integer NOT NULL, + "created" timestamp with time zone DEFAULT current_timestamp NOT NULL, + "modified" timestamp with time zone DEFAULT current_timestamp NOT NULL, + PRIMARY KEY ("id") +); +CREATE INDEX "src_associations_idx_source" on "src_associations" ("source"); +CREATE INDEX "src_associations_idx_suite" on "src_associations" ("suite"); + +; +-- +-- Table: bin_ver. +-- +CREATE TABLE "bin_ver" ( + "id" serial NOT NULL, + "bin_pkg" integer NOT NULL, + "src_ver" integer NOT NULL, + "arch" integer NOT NULL, + "ver" debversion NOT NULL, + PRIMARY KEY ("id") +); +CREATE INDEX "bin_ver_idx_arch" on "bin_ver" ("arch"); +CREATE INDEX "bin_ver_idx_bin_pkg" on "bin_ver" ("bin_pkg"); +CREATE INDEX "bin_ver_idx_src_ver" on "bin_ver" ("src_ver"); + +; +-- +-- Table: bug_ver. +-- +CREATE TABLE "bug_ver" ( + "id" serial NOT NULL, + "bug" integer NOT NULL, + "ver_string" text, + "src_pkg" integer, + "src_ver" integer, + "found" boolean DEFAULT true NOT NULL, + "creation" timestamp with time zone DEFAULT current_timestamp NOT NULL, + "last_modified" timestamp with time zone DEFAULT current_timestamp NOT NULL, + PRIMARY KEY ("id"), + CONSTRAINT "bug_ver_bug_ver_string_found_idx" UNIQUE ("bug", "ver_string", "found") +); +CREATE INDEX "bug_ver_idx_bug" on "bug_ver" ("bug"); +CREATE INDEX "bug_ver_idx_src_pkg" on "bug_ver" ("src_pkg"); +CREATE INDEX "bug_ver_idx_src_ver" on "bug_ver" ("src_ver"); + +; +-- +-- Table: bin_associations. +-- +CREATE TABLE "bin_associations" ( + "id" serial NOT NULL, + "suite" integer NOT NULL, + "bin" integer NOT NULL, + "created" timestamp with time zone DEFAULT current_timestamp NOT NULL, + "modified" timestamp with time zone DEFAULT current_timestamp NOT NULL, + PRIMARY KEY ("id") +); +CREATE INDEX "bin_associations_idx_bin" on "bin_associations" ("bin"); +CREATE INDEX "bin_associations_idx_suite" on "bin_associations" ("suite"); + +; +-- +-- Foreign Key Definitions +-- + +; +ALTER TABLE "src_pkg" ADD CONSTRAINT "src_pkg_fk_alias_of" FOREIGN KEY ("alias_of") + REFERENCES "src_pkg" ("id") ON DELETE CASCADE ON UPDATE CASCADE; + +; +ALTER TABLE "correspondent_full_name" ADD CONSTRAINT "correspondent_full_name_fk_correspondent" FOREIGN KEY ("correspondent") + REFERENCES "correspondent" ("id") ON DELETE CASCADE ON UPDATE CASCADE; + +; +ALTER TABLE "maintainer" ADD CONSTRAINT "maintainer_fk_correspondent" FOREIGN KEY ("correspondent") + REFERENCES "correspondent" ("id") ON DELETE NO ACTION ON UPDATE NO ACTION; + +; +ALTER TABLE "message_refs" ADD CONSTRAINT "message_refs_fk_message" FOREIGN KEY ("message") + REFERENCES "message" ("id") ON DELETE CASCADE ON UPDATE CASCADE; + +; +ALTER TABLE "message_refs" ADD CONSTRAINT "message_refs_fk_refs" FOREIGN KEY ("refs") + REFERENCES "message" ("id") ON DELETE CASCADE ON UPDATE CASCADE; + +; +ALTER TABLE "bug" ADD CONSTRAINT "bug_fk_done" FOREIGN KEY ("done") + REFERENCES "correspondent" ("id") ON DELETE NO ACTION ON UPDATE NO ACTION; + +; +ALTER TABLE "bug" ADD CONSTRAINT "bug_fk_owner" FOREIGN KEY ("owner") + REFERENCES "correspondent" ("id") ON DELETE NO ACTION ON UPDATE NO ACTION; + +; +ALTER TABLE "bug" ADD CONSTRAINT "bug_fk_severity" FOREIGN KEY ("severity") + REFERENCES "severity" ("id") ON DELETE NO ACTION ON UPDATE NO ACTION; + +; +ALTER TABLE "bug" ADD CONSTRAINT "bug_fk_submitter" FOREIGN KEY ("submitter") + REFERENCES "correspondent" ("id") ON DELETE NO ACTION ON UPDATE NO ACTION; + +; +ALTER TABLE "message_correspondent" ADD CONSTRAINT "message_correspondent_fk_correspondent" FOREIGN KEY ("correspondent") + REFERENCES "correspondent" ("id") ON DELETE CASCADE ON UPDATE CASCADE; + +; +ALTER TABLE "message_correspondent" ADD CONSTRAINT "message_correspondent_fk_message" FOREIGN KEY ("message") + REFERENCES "message" ("id") ON DELETE CASCADE ON UPDATE CASCADE; + +; +ALTER TABLE "bug_blocks" ADD CONSTRAINT "bug_blocks_fk_blocks" FOREIGN KEY ("blocks") + REFERENCES "bug" ("id") ON DELETE NO ACTION ON UPDATE NO ACTION; + +; +ALTER TABLE "bug_blocks" ADD CONSTRAINT "bug_blocks_fk_bug" FOREIGN KEY ("bug") + REFERENCES "bug" ("id") ON DELETE NO ACTION ON UPDATE NO ACTION; + +; +ALTER TABLE "bug_merged" ADD CONSTRAINT "bug_merged_fk_bug" FOREIGN KEY ("bug") + REFERENCES "bug" ("id") ON DELETE NO ACTION ON UPDATE NO ACTION; + +; +ALTER TABLE "bug_merged" ADD CONSTRAINT "bug_merged_fk_merged" FOREIGN KEY ("merged") + REFERENCES "bug" ("id") ON DELETE NO ACTION ON UPDATE NO ACTION; + +; +ALTER TABLE "src_ver" ADD CONSTRAINT "src_ver_fk_based_on" FOREIGN KEY ("based_on") + REFERENCES "src_ver" ("id") ON DELETE CASCADE ON UPDATE CASCADE; + +; +ALTER TABLE "src_ver" ADD CONSTRAINT "src_ver_fk_maintainer" FOREIGN KEY ("maintainer") + REFERENCES "maintainer" ("id") ON DELETE SET NULL ON UPDATE CASCADE; + +; +ALTER TABLE "src_ver" ADD CONSTRAINT "src_ver_fk_src_pkg" FOREIGN KEY ("src_pkg") + REFERENCES "src_pkg" ("id") ON DELETE CASCADE ON UPDATE CASCADE; + +; +ALTER TABLE "bug_binpackage" ADD CONSTRAINT "bug_binpackage_fk_bin_pkg" FOREIGN KEY ("bin_pkg") + REFERENCES "bin_pkg" ("id") ON DELETE NO ACTION ON UPDATE NO ACTION; + +; +ALTER TABLE "bug_binpackage" ADD CONSTRAINT "bug_binpackage_fk_bug" FOREIGN KEY ("bug") + REFERENCES "bug" ("id") ON DELETE NO ACTION ON UPDATE NO ACTION; + +; +ALTER TABLE "bug_message" ADD CONSTRAINT "bug_message_fk_bug" FOREIGN KEY ("bug") + REFERENCES "bug" ("id") ON DELETE CASCADE ON UPDATE CASCADE; + +; +ALTER TABLE "bug_message" ADD CONSTRAINT "bug_message_fk_message" FOREIGN KEY ("message") + REFERENCES "message" ("id") ON DELETE CASCADE ON UPDATE CASCADE; + +; +ALTER TABLE "bug_srcpackage" ADD CONSTRAINT "bug_srcpackage_fk_bug" FOREIGN KEY ("bug") + REFERENCES "bug" ("id") ON DELETE NO ACTION ON UPDATE NO ACTION; + +; +ALTER TABLE "bug_srcpackage" ADD CONSTRAINT "bug_srcpackage_fk_src_pkg" FOREIGN KEY ("src_pkg") + REFERENCES "src_pkg" ("id") ON DELETE CASCADE ON UPDATE CASCADE; + +; +ALTER TABLE "bug_tag" ADD CONSTRAINT "bug_tag_fk_bug" FOREIGN KEY ("bug") + REFERENCES "bug" ("id") ON DELETE NO ACTION ON UPDATE NO ACTION; + +; +ALTER TABLE "bug_tag" ADD CONSTRAINT "bug_tag_fk_tag" FOREIGN KEY ("tag") + REFERENCES "tag" ("id") ON DELETE NO ACTION ON UPDATE NO ACTION; + +; +ALTER TABLE "bug_status_cache" ADD CONSTRAINT "bug_status_cache_fk_arch" FOREIGN KEY ("arch") + REFERENCES "arch" ("id") ON DELETE CASCADE ON UPDATE CASCADE; + +; +ALTER TABLE "bug_status_cache" ADD CONSTRAINT "bug_status_cache_fk_bug" FOREIGN KEY ("bug") + REFERENCES "bug" ("id") ON DELETE CASCADE ON UPDATE CASCADE; + +; +ALTER TABLE "bug_status_cache" ADD CONSTRAINT "bug_status_cache_fk_suite" FOREIGN KEY ("suite") + REFERENCES "suite" ("id") ON DELETE CASCADE ON UPDATE CASCADE; + +; +ALTER TABLE "src_associations" ADD CONSTRAINT "src_associations_fk_source" FOREIGN KEY ("source") + REFERENCES "src_ver" ("id") ON DELETE CASCADE ON UPDATE CASCADE; + +; +ALTER TABLE "src_associations" ADD CONSTRAINT "src_associations_fk_suite" FOREIGN KEY ("suite") + REFERENCES "suite" ("id") ON DELETE CASCADE ON UPDATE CASCADE; + +; +ALTER TABLE "bin_ver" ADD CONSTRAINT "bin_ver_fk_arch" FOREIGN KEY ("arch") + REFERENCES "arch" ("id") ON DELETE CASCADE ON UPDATE CASCADE; + +; +ALTER TABLE "bin_ver" ADD CONSTRAINT "bin_ver_fk_bin_pkg" FOREIGN KEY ("bin_pkg") + REFERENCES "bin_pkg" ("id") ON DELETE CASCADE ON UPDATE CASCADE; + +; +ALTER TABLE "bin_ver" ADD CONSTRAINT "bin_ver_fk_src_ver" FOREIGN KEY ("src_ver") + REFERENCES "src_ver" ("id") ON DELETE CASCADE ON UPDATE CASCADE; + +; +ALTER TABLE "bug_ver" ADD CONSTRAINT "bug_ver_fk_bug" FOREIGN KEY ("bug") + REFERENCES "bug" ("id") ON DELETE RESTRICT ON UPDATE CASCADE; + +; +ALTER TABLE "bug_ver" ADD CONSTRAINT "bug_ver_fk_src_pkg" FOREIGN KEY ("src_pkg") + REFERENCES "src_pkg" ("id") ON DELETE SET NULL ON UPDATE CASCADE; + +; +ALTER TABLE "bug_ver" ADD CONSTRAINT "bug_ver_fk_src_ver" FOREIGN KEY ("src_ver") + REFERENCES "src_ver" ("id") ON DELETE SET NULL ON UPDATE CASCADE; + +; +ALTER TABLE "bin_associations" ADD CONSTRAINT "bin_associations_fk_bin" FOREIGN KEY ("bin") + REFERENCES "bin_ver" ("id") ON DELETE CASCADE ON UPDATE CASCADE; + +; +ALTER TABLE "bin_associations" ADD CONSTRAINT "bin_associations_fk_suite" FOREIGN KEY ("suite") + REFERENCES "suite" ("id") ON DELETE CASCADE ON UPDATE CASCADE; + +; diff --git a/sql/PostgreSQL/upgrade/1-1/001-auto.sql b/sql/PostgreSQL/upgrade/1-1/001-auto.sql new file mode 100644 index 00000000..6f388eb9 --- /dev/null +++ b/sql/PostgreSQL/upgrade/1-1/001-auto.sql @@ -0,0 +1,5 @@ +-- Convert schema 'sql/_source/deploy/1/001-auto.yml' to 'sql/_source/deploy/1/001-auto.yml':; + +; +-- No differences found; + diff --git a/sql/README.mdwn b/sql/README.mdwn new file mode 100644 index 00000000..334fabc8 --- /dev/null +++ b/sql/README.mdwn @@ -0,0 +1,19 @@ +# Developer specific instructions # +## Upgrading Schema ## + +To make changes to the database schema: + +1. Make whatever changes are appropriate to the SQL directly in the + debbugs_schema.sql file, and make corresponding changes to the + database (or dump the entire database and otherwise make the + changes). +2. Run `./sql/dbicdump_command.sh` to update the DBIx::Class classes + which are under Debbugs::DB +3. Increment the version of Debbugs::DB; +4. Run `./bin/debbugs-installsql --install --deployment-dir sql --developer-prepare` + and `./bin/debbugs-installsql --upgrade --deployment-dir sql --developer-prepare` + which will generate the files necessary to do upgrades in the field. + + +Steps 1 and 2 can alternatively be performed by changing the +DBIx::Class classes directly if that is desired. diff --git a/sql/_source/deploy/1/001-auto-__VERSION.yml b/sql/_source/deploy/1/001-auto-__VERSION.yml new file mode 100644 index 00000000..a803e967 --- /dev/null +++ b/sql/_source/deploy/1/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.11018 diff --git a/sql/_source/deploy/1/001-auto.yml b/sql/_source/deploy/1/001-auto.yml new file mode 100644 index 00000000..727ee14f --- /dev/null +++ b/sql/_source/deploy/1/001-auto.yml @@ -0,0 +1,3144 @@ +--- +schema: + procedures: {} + tables: + arch: + 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: + - arch + match_type: '' + name: arch_arch_key + on_delete: '' + on_update: '' + options: [] + reference_fields: [] + reference_table: '' + type: UNIQUE + fields: + arch: + data_type: text + default_value: ~ + is_nullable: 0 + is_primary_key: 0 + is_unique: 1 + name: arch + order: 2 + size: + - 0 + id: + data_type: integer + default_value: ~ + is_auto_increment: 1 + is_nullable: 0 + is_primary_key: 1 + is_unique: 0 + name: id + order: 1 + size: + - 0 + indices: [] + name: arch + options: [] + order: 1 + bin_associations: + constraints: + - deferrable: 1 + expression: '' + fields: + - id + match_type: '' + name: '' + on_delete: '' + on_update: '' + options: [] + reference_fields: [] + reference_table: '' + type: PRIMARY KEY + - deferrable: 0 + expression: '' + fields: + - bin + match_type: '' + name: bin_associations_fk_bin + on_delete: CASCADE + on_update: CASCADE + options: [] + reference_fields: + - id + reference_table: bin_ver + type: FOREIGN KEY + - deferrable: 0 + expression: '' + fields: + - suite + match_type: '' + name: bin_associations_fk_suite + on_delete: CASCADE + on_update: CASCADE + options: [] + reference_fields: + - id + reference_table: suite + type: FOREIGN KEY + fields: + bin: + data_type: integer + default_value: ~ + is_nullable: 0 + is_primary_key: 0 + is_unique: 0 + name: bin + order: 3 + size: + - 0 + created: + data_type: timestamp with time zone + default_value: !!perl/ref + =: current_timestamp + is_nullable: 0 + is_primary_key: 0 + is_unique: 0 + name: created + order: 4 + size: + - 0 + id: + data_type: integer + default_value: ~ + is_auto_increment: 1 + is_nullable: 0 + is_primary_key: 1 + is_unique: 0 + name: id + order: 1 + size: + - 0 + modified: + data_type: timestamp with time zone + default_value: !!perl/ref + =: current_timestamp + is_nullable: 0 + is_primary_key: 0 + is_unique: 0 + name: modified + order: 5 + size: + - 0 + suite: + data_type: integer + default_value: ~ + is_nullable: 0 + is_primary_key: 0 + is_unique: 0 + name: suite + order: 2 + size: + - 0 + indices: + - fields: + - bin + name: bin_associations_idx_bin + options: [] + type: NORMAL + - fields: + - suite + name: bin_associations_idx_suite + options: [] + type: NORMAL + name: bin_associations + options: [] + order: 30 + bin_pkg: + 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: + - pkg + match_type: '' + name: bin_pkg_pkg_key + on_delete: '' + on_update: '' + options: [] + reference_fields: [] + reference_table: '' + type: UNIQUE + fields: + id: + data_type: integer + default_value: ~ + is_auto_increment: 1 + is_nullable: 0 + is_primary_key: 1 + is_unique: 0 + name: id + order: 1 + size: + - 0 + pkg: + data_type: text + default_value: ~ + is_nullable: 0 + is_primary_key: 0 + is_unique: 1 + name: pkg + order: 2 + size: + - 0 + indices: [] + name: bin_pkg + options: [] + order: 2 + bin_ver: + constraints: + - deferrable: 1 + expression: '' + fields: + - id + match_type: '' + name: '' + on_delete: '' + on_update: '' + options: [] + reference_fields: [] + reference_table: '' + type: PRIMARY KEY + - deferrable: 0 + expression: '' + fields: + - arch + match_type: '' + name: bin_ver_fk_arch + on_delete: CASCADE + on_update: CASCADE + options: [] + reference_fields: + - id + reference_table: arch + type: FOREIGN KEY + - deferrable: 0 + expression: '' + fields: + - bin_pkg + match_type: '' + name: bin_ver_fk_bin_pkg + on_delete: CASCADE + on_update: CASCADE + options: [] + reference_fields: + - id + reference_table: bin_pkg + type: FOREIGN KEY + - deferrable: 0 + expression: '' + fields: + - src_ver + match_type: '' + name: bin_ver_fk_src_ver + on_delete: CASCADE + on_update: CASCADE + options: [] + reference_fields: + - id + reference_table: src_ver + type: FOREIGN KEY + fields: + arch: + data_type: integer + default_value: ~ + is_nullable: 0 + is_primary_key: 0 + is_unique: 0 + name: arch + order: 4 + size: + - 0 + bin_pkg: + data_type: integer + default_value: ~ + is_nullable: 0 + is_primary_key: 0 + is_unique: 0 + name: bin_pkg + order: 2 + size: + - 0 + id: + data_type: integer + default_value: ~ + is_auto_increment: 1 + is_nullable: 0 + is_primary_key: 1 + is_unique: 0 + name: id + order: 1 + size: + - 0 + src_ver: + data_type: integer + default_value: ~ + is_nullable: 0 + is_primary_key: 0 + is_unique: 0 + name: src_ver + order: 3 + size: + - 0 + ver: + data_type: debversion + default_value: ~ + is_nullable: 0 + is_primary_key: 0 + is_unique: 0 + name: ver + order: 5 + size: + - 0 + indices: + - fields: + - arch + name: bin_ver_idx_arch + options: [] + type: NORMAL + - fields: + - bin_pkg + name: bin_ver_idx_bin_pkg + options: [] + type: NORMAL + - fields: + - src_ver + name: bin_ver_idx_src_ver + options: [] + type: NORMAL + name: bin_ver + options: [] + order: 28 + binary_versions: + constraints: [] + fields: + arch: + data_type: text + default_value: ~ + is_nullable: 1 + is_primary_key: 0 + is_unique: 0 + name: arch + order: 4 + size: + - 0 + bin_pkg: + data_type: text + default_value: ~ + is_nullable: 1 + is_primary_key: 0 + is_unique: 0 + name: bin_pkg + order: 3 + size: + - 0 + bin_ver: + data_type: debversion + default_value: ~ + is_nullable: 1 + is_primary_key: 0 + is_unique: 0 + name: bin_ver + order: 5 + size: + - 0 + src_pkg: + data_type: text + default_value: ~ + is_nullable: 1 + is_primary_key: 0 + is_unique: 0 + name: src_pkg + order: 1 + size: + - 0 + src_pkg_based_on: + data_type: text + default_value: ~ + is_nullable: 1 + is_primary_key: 0 + is_unique: 0 + name: src_pkg_based_on + order: 7 + size: + - 0 + src_ver: + data_type: debversion + default_value: ~ + is_nullable: 1 + is_primary_key: 0 + is_unique: 0 + name: src_ver + order: 2 + size: + - 0 + src_ver_based_on: + data_type: debversion + default_value: ~ + is_nullable: 1 + is_primary_key: 0 + is_unique: 0 + name: src_ver_based_on + order: 6 + size: + - 0 + indices: [] + name: binary_versions + options: [] + order: 3 + bug: + constraints: + - deferrable: 1 + expression: '' + fields: + - id + match_type: '' + name: '' + on_delete: '' + on_update: '' + options: [] + reference_fields: [] + reference_table: '' + type: PRIMARY KEY + - deferrable: 0 + expression: '' + fields: + - done + match_type: '' + name: bug_fk_done + on_delete: NO ACTION + on_update: NO ACTION + options: [] + reference_fields: + - id + reference_table: correspondent + type: FOREIGN KEY + - deferrable: 0 + expression: '' + fields: + - owner + match_type: '' + name: bug_fk_owner + on_delete: NO ACTION + on_update: NO ACTION + options: [] + reference_fields: + - id + reference_table: correspondent + type: FOREIGN KEY + - deferrable: 0 + expression: '' + fields: + - severity + match_type: '' + name: bug_fk_severity + on_delete: NO ACTION + on_update: NO ACTION + options: [] + reference_fields: + - id + reference_table: severity + type: FOREIGN KEY + - deferrable: 0 + expression: '' + fields: + - submitter + match_type: '' + name: bug_fk_submitter + on_delete: NO ACTION + on_update: NO ACTION + options: [] + reference_fields: + - id + reference_table: correspondent + type: FOREIGN KEY + fields: + archived: + data_type: boolean + default_value: !!perl/ref + =: false + is_nullable: 0 + is_primary_key: 0 + is_unique: 0 + name: archived + order: 5 + size: + - 0 + creation: + data_type: timestamp with time zone + default_value: !!perl/ref + =: current_timestamp + is_nullable: 0 + is_primary_key: 0 + is_unique: 0 + name: creation + order: 2 + size: + - 0 + done: + data_type: integer + default_value: ~ + is_nullable: 1 + is_primary_key: 0 + is_unique: 0 + name: done + order: 12 + size: + - 0 + done_full: + data_type: text + default_value: '' + is_nullable: 0 + is_primary_key: 0 + is_unique: 0 + name: done_full + order: 13 + size: + - 0 + forwarded: + data_type: text + default_value: '' + is_nullable: 0 + is_primary_key: 0 + is_unique: 0 + name: forwarded + order: 7 + size: + - 0 + id: + data_type: integer + default_value: ~ + is_nullable: 0 + is_primary_key: 1 + is_unique: 0 + name: id + order: 1 + size: + - 0 + last_modified: + data_type: timestamp with time zone + default_value: !!perl/ref + =: current_timestamp + is_nullable: 0 + is_primary_key: 0 + is_unique: 0 + name: last_modified + order: 4 + size: + - 0 + log_modified: + data_type: timestamp with time zone + default_value: !!perl/ref + =: current_timestamp + is_nullable: 0 + is_primary_key: 0 + is_unique: 0 + name: log_modified + order: 3 + size: + - 0 + outlook: + data_type: text + default_value: '' + is_nullable: 0 + is_primary_key: 0 + is_unique: 0 + name: outlook + order: 9 + size: + - 0 + owner: + data_type: integer + default_value: ~ + is_nullable: 1 + is_primary_key: 0 + is_unique: 0 + name: owner + order: 14 + size: + - 0 + owner_full: + data_type: text + default_value: '' + is_nullable: 0 + is_primary_key: 0 + is_unique: 0 + name: owner_full + order: 15 + size: + - 0 + severity: + data_type: integer + default_value: ~ + is_nullable: 0 + is_primary_key: 0 + is_unique: 0 + name: severity + order: 11 + size: + - 0 + subject: + data_type: text + default_value: ~ + is_nullable: 0 + is_primary_key: 0 + is_unique: 0 + name: subject + order: 10 + size: + - 0 + submitter: + data_type: integer + default_value: ~ + is_nullable: 1 + is_primary_key: 0 + is_unique: 0 + name: submitter + order: 16 + size: + - 0 + submitter_full: + data_type: text + default_value: '' + is_nullable: 0 + is_primary_key: 0 + is_unique: 0 + name: submitter_full + order: 17 + size: + - 0 + summary: + data_type: text + default_value: '' + is_nullable: 0 + is_primary_key: 0 + is_unique: 0 + name: summary + order: 8 + size: + - 0 + unarchived: + data_type: timestamp with time zone + default_value: ~ + is_nullable: 1 + is_primary_key: 0 + is_unique: 0 + name: unarchived + order: 6 + size: + - 0 + unknown_packages: + data_type: text + default_value: '' + is_nullable: 0 + is_primary_key: 0 + is_unique: 0 + name: unknown_packages + order: 18 + size: + - 0 + indices: + - fields: + - done + name: bug_idx_done + options: [] + type: NORMAL + - fields: + - owner + name: bug_idx_owner + options: [] + type: NORMAL + - fields: + - severity + name: bug_idx_severity + options: [] + type: NORMAL + - fields: + - submitter + name: bug_idx_submitter + options: [] + type: NORMAL + name: bug + options: [] + order: 17 + bug_binpackage: + 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: + - bug + - bin_pkg + match_type: '' + name: bug_binpackage_id_pkg + on_delete: '' + on_update: '' + options: [] + reference_fields: [] + reference_table: '' + type: UNIQUE + - deferrable: 0 + expression: '' + fields: + - bin_pkg + match_type: '' + name: bug_binpackage_fk_bin_pkg + on_delete: NO ACTION + on_update: NO ACTION + options: [] + reference_fields: + - id + reference_table: bin_pkg + type: FOREIGN KEY + - deferrable: 0 + expression: '' + fields: + - bug + match_type: '' + name: bug_binpackage_fk_bug + on_delete: NO ACTION + on_update: NO ACTION + options: [] + reference_fields: + - id + reference_table: bug + type: FOREIGN KEY + fields: + bin_pkg: + data_type: integer + default_value: ~ + is_nullable: 0 + is_primary_key: 0 + is_unique: 1 + name: bin_pkg + order: 3 + size: + - 0 + bug: + data_type: integer + default_value: ~ + is_nullable: 0 + is_primary_key: 0 + is_unique: 1 + name: bug + order: 2 + size: + - 0 + id: + data_type: integer + default_value: ~ + is_auto_increment: 1 + is_nullable: 0 + is_primary_key: 1 + is_unique: 0 + name: id + order: 1 + size: + - 0 + indices: + - fields: + - bin_pkg + name: bug_binpackage_idx_bin_pkg + options: [] + type: NORMAL + - fields: + - bug + name: bug_binpackage_idx_bug + options: [] + type: NORMAL + name: bug_binpackage + options: [] + order: 22 + bug_blocks: + 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: + - bug + - blocks + match_type: '' + name: bug_blocks_bug_id_blocks_idx + on_delete: '' + on_update: '' + options: [] + reference_fields: [] + reference_table: '' + type: UNIQUE + - deferrable: 0 + expression: '' + fields: + - blocks + match_type: '' + name: bug_blocks_fk_blocks + on_delete: NO ACTION + on_update: NO ACTION + options: [] + reference_fields: + - id + reference_table: bug + type: FOREIGN KEY + - deferrable: 0 + expression: '' + fields: + - bug + match_type: '' + name: bug_blocks_fk_bug + on_delete: NO ACTION + on_update: NO ACTION + options: [] + reference_fields: + - id + reference_table: bug + type: FOREIGN KEY + fields: + blocks: + data_type: integer + default_value: ~ + is_nullable: 0 + is_primary_key: 0 + is_unique: 1 + name: blocks + order: 3 + size: + - 0 + bug: + data_type: integer + default_value: ~ + is_nullable: 0 + is_primary_key: 0 + is_unique: 1 + name: bug + order: 2 + size: + - 0 + id: + data_type: integer + default_value: ~ + is_auto_increment: 1 + is_nullable: 0 + is_primary_key: 1 + is_unique: 0 + name: id + order: 1 + size: + - 0 + indices: + - fields: + - blocks + name: bug_blocks_idx_blocks + options: [] + type: NORMAL + - fields: + - bug + name: bug_blocks_idx_bug + options: [] + type: NORMAL + name: bug_blocks + options: [] + order: 19 + bug_merged: + 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: + - bug + - merged + match_type: '' + name: bug_merged_bug_id_merged_idx + on_delete: '' + on_update: '' + options: [] + reference_fields: [] + reference_table: '' + type: UNIQUE + - deferrable: 0 + expression: '' + fields: + - bug + match_type: '' + name: bug_merged_fk_bug + on_delete: NO ACTION + on_update: NO ACTION + options: [] + reference_fields: + - id + reference_table: bug + type: FOREIGN KEY + - deferrable: 0 + expression: '' + fields: + - merged + match_type: '' + name: bug_merged_fk_merged + on_delete: NO ACTION + on_update: NO ACTION + options: [] + reference_fields: + - id + reference_table: bug + type: FOREIGN KEY + fields: + bug: + data_type: integer + default_value: ~ + is_nullable: 0 + is_primary_key: 0 + is_unique: 1 + name: bug + order: 2 + size: + - 0 + id: + data_type: integer + default_value: ~ + is_auto_increment: 1 + is_nullable: 0 + is_primary_key: 1 + is_unique: 0 + name: id + order: 1 + size: + - 0 + merged: + data_type: integer + default_value: ~ + is_nullable: 0 + is_primary_key: 0 + is_unique: 1 + name: merged + order: 3 + size: + - 0 + indices: + - fields: + - bug + name: bug_merged_idx_bug + options: [] + type: NORMAL + - fields: + - merged + name: bug_merged_idx_merged + options: [] + type: NORMAL + name: bug_merged + options: [] + order: 20 + bug_message: + 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: + - bug + - message + match_type: '' + name: bug_message_bug_message_idx + on_delete: '' + on_update: '' + options: [] + reference_fields: [] + reference_table: '' + type: UNIQUE + - deferrable: 0 + expression: '' + fields: + - bug + match_type: '' + name: bug_message_fk_bug + on_delete: CASCADE + on_update: CASCADE + options: [] + reference_fields: + - id + reference_table: bug + type: FOREIGN KEY + - deferrable: 0 + expression: '' + fields: + - message + match_type: '' + name: bug_message_fk_message + on_delete: CASCADE + on_update: CASCADE + options: [] + reference_fields: + - id + reference_table: message + type: FOREIGN KEY + fields: + bug: + data_type: integer + default_value: ~ + is_nullable: 0 + is_primary_key: 0 + is_unique: 1 + name: bug + order: 2 + size: + - 0 + bug_log_offset: + data_type: integer + default_value: ~ + is_nullable: 1 + is_primary_key: 0 + is_unique: 0 + name: bug_log_offset + order: 5 + size: + - 0 + id: + data_type: integer + default_value: ~ + is_auto_increment: 1 + is_nullable: 0 + is_primary_key: 1 + is_unique: 0 + name: id + order: 1 + size: + - 0 + message: + data_type: integer + default_value: ~ + is_nullable: 0 + is_primary_key: 0 + is_unique: 1 + name: message + order: 3 + size: + - 0 + message_number: + data_type: integer + default_value: ~ + is_nullable: 0 + is_primary_key: 0 + is_unique: 0 + name: message_number + order: 4 + size: + - 0 + offset_valid: + data_type: timestamp with time zone + default_value: ~ + is_nullable: 1 + is_primary_key: 0 + is_unique: 0 + name: offset_valid + order: 6 + size: + - 0 + indices: + - fields: + - bug + name: bug_message_idx_bug + options: [] + type: NORMAL + - fields: + - message + name: bug_message_idx_message + options: [] + type: NORMAL + name: bug_message + options: [] + order: 23 + bug_package: + constraints: [] + fields: + bug: + data_type: integer + default_value: ~ + is_nullable: 1 + is_primary_key: 0 + is_unique: 0 + name: bug + order: 1 + size: + - 0 + package: + data_type: text + default_value: ~ + is_nullable: 1 + is_primary_key: 0 + is_unique: 0 + name: package + order: 4 + size: + - 0 + pkg_id: + data_type: integer + default_value: ~ + is_nullable: 1 + is_primary_key: 0 + is_unique: 0 + name: pkg_id + order: 2 + size: + - 0 + pkg_type: + data_type: text + default_value: ~ + is_nullable: 1 + is_primary_key: 0 + is_unique: 0 + name: pkg_type + order: 3 + size: + - 0 + indices: [] + name: bug_package + options: [] + order: 4 + bug_srcpackage: + 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: + - bug + - src_pkg + match_type: '' + name: bug_srcpackage_id_pkg + on_delete: '' + on_update: '' + options: [] + reference_fields: [] + reference_table: '' + type: UNIQUE + - deferrable: 0 + expression: '' + fields: + - bug + match_type: '' + name: bug_srcpackage_fk_bug + on_delete: NO ACTION + on_update: NO ACTION + options: [] + reference_fields: + - id + reference_table: bug + type: FOREIGN KEY + - deferrable: 0 + expression: '' + fields: + - src_pkg + match_type: '' + name: bug_srcpackage_fk_src_pkg + on_delete: CASCADE + on_update: CASCADE + options: [] + reference_fields: + - id + reference_table: src_pkg + type: FOREIGN KEY + fields: + bug: + data_type: integer + default_value: ~ + is_nullable: 0 + is_primary_key: 0 + is_unique: 1 + name: bug + order: 2 + size: + - 0 + id: + data_type: integer + default_value: ~ + is_auto_increment: 1 + is_nullable: 0 + is_primary_key: 1 + is_unique: 0 + name: id + order: 1 + size: + - 0 + src_pkg: + data_type: integer + default_value: ~ + is_nullable: 0 + is_primary_key: 0 + is_unique: 1 + name: src_pkg + order: 3 + size: + - 0 + indices: + - fields: + - bug + name: bug_srcpackage_idx_bug + options: [] + type: NORMAL + - fields: + - src_pkg + name: bug_srcpackage_idx_src_pkg + options: [] + type: NORMAL + name: bug_srcpackage + options: [] + order: 24 + bug_status_cache: + 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: + - bug + - suite + - arch + match_type: '' + name: bug_status_cache_bug_suite_arch_idx + on_delete: '' + on_update: '' + options: [] + reference_fields: [] + reference_table: '' + type: UNIQUE + - deferrable: 0 + expression: '' + fields: + - arch + match_type: '' + name: bug_status_cache_fk_arch + on_delete: CASCADE + on_update: CASCADE + options: [] + reference_fields: + - id + reference_table: arch + type: FOREIGN KEY + - deferrable: 0 + expression: '' + fields: + - bug + match_type: '' + name: bug_status_cache_fk_bug + on_delete: CASCADE + on_update: CASCADE + options: [] + reference_fields: + - id + reference_table: bug + type: FOREIGN KEY + - deferrable: 0 + expression: '' + fields: + - suite + match_type: '' + name: bug_status_cache_fk_suite + on_delete: CASCADE + on_update: CASCADE + options: [] + reference_fields: + - id + reference_table: suite + type: FOREIGN KEY + fields: + arch: + data_type: integer + default_value: ~ + is_nullable: 1 + is_primary_key: 0 + is_unique: 1 + name: arch + order: 4 + size: + - 0 + asof: + data_type: timestamp with time zone + default_value: !!perl/ref + =: current_timestamp + is_nullable: 0 + is_primary_key: 0 + is_unique: 0 + name: asof + order: 7 + size: + - 0 + bug: + data_type: integer + default_value: ~ + is_nullable: 0 + is_primary_key: 0 + is_unique: 1 + name: bug + order: 2 + size: + - 0 + id: + data_type: integer + default_value: ~ + is_auto_increment: 1 + is_nullable: 0 + is_primary_key: 1 + is_unique: 0 + name: id + order: 1 + size: + - 0 + modified: + data_type: timestamp with time zone + default_value: !!perl/ref + =: current_timestamp + is_nullable: 0 + is_primary_key: 0 + is_unique: 0 + name: modified + order: 6 + size: + - 0 + status: + data_type: enum + default_value: ~ + extra: + custom_type_name: bug_status_type + list: + - pending + - forwarded + - pending-fixed + - fixed + - absent + - done + is_nullable: 0 + is_primary_key: 0 + is_unique: 0 + name: status + order: 5 + size: + - 0 + suite: + data_type: integer + default_value: ~ + is_nullable: 1 + is_primary_key: 0 + is_unique: 1 + name: suite + order: 3 + size: + - 0 + indices: + - fields: + - arch + name: bug_status_cache_idx_arch + options: [] + type: NORMAL + - fields: + - bug + name: bug_status_cache_idx_bug + options: [] + type: NORMAL + - fields: + - suite + name: bug_status_cache_idx_suite + options: [] + type: NORMAL + name: bug_status_cache + options: [] + order: 26 + bug_tag: + 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: + - bug + - tag + match_type: '' + name: bug_tag_bug_tag + on_delete: '' + on_update: '' + options: [] + reference_fields: [] + reference_table: '' + type: UNIQUE + - deferrable: 0 + expression: '' + fields: + - bug + match_type: '' + name: bug_tag_fk_bug + on_delete: NO ACTION + on_update: NO ACTION + options: [] + reference_fields: + - id + reference_table: bug + type: FOREIGN KEY + - deferrable: 0 + expression: '' + fields: + - tag + match_type: '' + name: bug_tag_fk_tag + on_delete: NO ACTION + on_update: NO ACTION + options: [] + reference_fields: + - id + reference_table: tag + type: FOREIGN KEY + fields: + bug: + data_type: integer + default_value: ~ + is_nullable: 0 + is_primary_key: 0 + is_unique: 1 + name: bug + order: 2 + size: + - 0 + id: + data_type: integer + default_value: ~ + is_auto_increment: 1 + is_nullable: 0 + is_primary_key: 1 + is_unique: 0 + name: id + order: 1 + size: + - 0 + tag: + data_type: integer + default_value: ~ + is_nullable: 0 + is_primary_key: 0 + is_unique: 1 + name: tag + order: 3 + size: + - 0 + indices: + - fields: + - bug + name: bug_tag_idx_bug + options: [] + type: NORMAL + - fields: + - tag + name: bug_tag_idx_tag + options: [] + type: NORMAL + name: bug_tag + options: [] + order: 25 + bug_ver: + 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: + - bug + - ver_string + - found + match_type: '' + name: bug_ver_bug_ver_string_found_idx + on_delete: '' + on_update: '' + options: [] + reference_fields: [] + reference_table: '' + type: UNIQUE + - deferrable: 0 + expression: '' + fields: + - bug + match_type: '' + name: bug_ver_fk_bug + on_delete: RESTRICT + on_update: CASCADE + options: [] + reference_fields: + - id + reference_table: bug + type: FOREIGN KEY + - deferrable: 0 + expression: '' + fields: + - src_pkg + match_type: '' + name: bug_ver_fk_src_pkg + on_delete: SET NULL + on_update: CASCADE + options: [] + reference_fields: + - id + reference_table: src_pkg + type: FOREIGN KEY + - deferrable: 0 + expression: '' + fields: + - src_ver + match_type: '' + name: bug_ver_fk_src_ver + on_delete: SET NULL + on_update: CASCADE + options: [] + reference_fields: + - id + reference_table: src_ver + type: FOREIGN KEY + fields: + bug: + data_type: integer + default_value: ~ + is_nullable: 0 + is_primary_key: 0 + is_unique: 1 + name: bug + order: 2 + size: + - 0 + creation: + data_type: timestamp with time zone + default_value: !!perl/ref + =: current_timestamp + is_nullable: 0 + is_primary_key: 0 + is_unique: 0 + name: creation + order: 7 + size: + - 0 + found: + data_type: boolean + default_value: !!perl/ref + =: true + is_nullable: 0 + is_primary_key: 0 + is_unique: 1 + name: found + order: 6 + size: + - 0 + id: + data_type: integer + default_value: ~ + is_auto_increment: 1 + is_nullable: 0 + is_primary_key: 1 + is_unique: 0 + name: id + order: 1 + size: + - 0 + last_modified: + data_type: timestamp with time zone + default_value: !!perl/ref + =: current_timestamp + is_nullable: 0 + is_primary_key: 0 + is_unique: 0 + name: last_modified + order: 8 + size: + - 0 + src_pkg: + data_type: integer + default_value: ~ + is_nullable: 1 + is_primary_key: 0 + is_unique: 0 + name: src_pkg + order: 4 + size: + - 0 + src_ver: + data_type: integer + default_value: ~ + is_nullable: 1 + is_primary_key: 0 + is_unique: 0 + name: src_ver + order: 5 + size: + - 0 + ver_string: + data_type: text + default_value: ~ + is_nullable: 1 + is_primary_key: 0 + is_unique: 1 + name: ver_string + order: 3 + size: + - 0 + indices: + - fields: + - bug + name: bug_ver_idx_bug + options: [] + type: NORMAL + - fields: + - src_pkg + name: bug_ver_idx_src_pkg + options: [] + type: NORMAL + - fields: + - src_ver + name: bug_ver_idx_src_ver + options: [] + type: NORMAL + name: bug_ver + options: [] + order: 29 + column_comments: + constraints: + - deferrable: 1 + expression: '' + fields: + - table_name + - column_name + match_type: '' + name: column_comments_table_name_column_name_idx + on_delete: '' + on_update: '' + options: [] + reference_fields: [] + reference_table: '' + type: UNIQUE + fields: + column_name: + data_type: text + default_value: ~ + is_nullable: 0 + is_primary_key: 0 + is_unique: 1 + name: column_name + order: 2 + size: + - 0 + comment_text: + data_type: text + default_value: ~ + is_nullable: 0 + is_primary_key: 0 + is_unique: 0 + name: comment_text + order: 3 + size: + - 0 + table_name: + data_type: text + default_value: ~ + is_nullable: 0 + is_primary_key: 0 + is_unique: 1 + name: table_name + order: 1 + size: + - 0 + indices: [] + name: column_comments + options: [] + order: 5 + correspondent: + 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: + - addr + match_type: '' + name: correspondent_addr_idx + on_delete: '' + on_update: '' + options: [] + reference_fields: [] + reference_table: '' + type: UNIQUE + fields: + addr: + data_type: text + default_value: ~ + is_nullable: 0 + is_primary_key: 0 + is_unique: 1 + name: addr + order: 2 + size: + - 0 + id: + data_type: integer + default_value: ~ + is_auto_increment: 1 + is_nullable: 0 + is_primary_key: 1 + is_unique: 0 + name: id + order: 1 + size: + - 0 + indices: [] + name: correspondent + options: [] + order: 6 + correspondent_full_name: + 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: + - correspondent + - full_name + match_type: '' + name: correspondent_full_name_correspondent_full_name_idx + on_delete: '' + on_update: '' + options: [] + reference_fields: [] + reference_table: '' + type: UNIQUE + - deferrable: 0 + expression: '' + fields: + - correspondent + match_type: '' + name: correspondent_full_name_fk_correspondent + on_delete: CASCADE + on_update: CASCADE + options: [] + reference_fields: + - id + reference_table: correspondent + type: FOREIGN KEY + fields: + correspondent: + data_type: integer + default_value: ~ + is_nullable: 0 + is_primary_key: 0 + is_unique: 1 + name: correspondent + order: 2 + size: + - 0 + full_name: + data_type: text + default_value: ~ + is_nullable: 0 + is_primary_key: 0 + is_unique: 1 + name: full_name + order: 3 + size: + - 0 + id: + data_type: integer + default_value: ~ + is_auto_increment: 1 + is_nullable: 0 + is_primary_key: 1 + is_unique: 0 + name: id + order: 1 + size: + - 0 + last_seen: + data_type: timestamp + default_value: !!perl/ref + =: current_timestamp + is_nullable: 0 + is_primary_key: 0 + is_unique: 0 + name: last_seen + order: 4 + size: + - 0 + indices: + - fields: + - correspondent + name: correspondent_full_name_idx_correspondent + options: [] + type: NORMAL + name: correspondent_full_name + options: [] + order: 14 + 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: integer + 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: 7 + maintainer: + 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: maintainer_name_idx + on_delete: '' + on_update: '' + options: [] + reference_fields: [] + reference_table: '' + type: UNIQUE + - deferrable: 0 + expression: '' + fields: + - correspondent + match_type: '' + name: maintainer_fk_correspondent + on_delete: NO ACTION + on_update: NO ACTION + options: [] + reference_fields: + - id + reference_table: correspondent + type: FOREIGN KEY + fields: + correspondent: + data_type: integer + default_value: ~ + is_nullable: 0 + is_primary_key: 0 + is_unique: 0 + name: correspondent + order: 3 + size: + - 0 + created: + data_type: timestamp with time zone + default_value: !!perl/ref + =: current_timestamp + is_nullable: 0 + is_primary_key: 0 + is_unique: 0 + name: created + order: 4 + size: + - 0 + id: + data_type: integer + default_value: ~ + is_auto_increment: 1 + is_nullable: 0 + is_primary_key: 1 + is_unique: 0 + name: id + order: 1 + size: + - 0 + modified: + data_type: timestamp with time zone + default_value: !!perl/ref + =: current_timestamp + is_nullable: 0 + is_primary_key: 0 + is_unique: 0 + name: modified + order: 5 + size: + - 0 + name: + data_type: text + default_value: ~ + is_nullable: 0 + is_primary_key: 0 + is_unique: 1 + name: name + order: 2 + size: + - 0 + indices: + - fields: + - correspondent + name: maintainer_idx_correspondent + options: [] + type: NORMAL + name: maintainer + options: [] + order: 15 + message: + constraints: + - deferrable: 1 + expression: '' + fields: + - id + match_type: '' + name: '' + on_delete: '' + on_update: '' + options: [] + reference_fields: [] + reference_table: '' + type: PRIMARY KEY + fields: + from_addr: + data_type: text + default_value: ~ + is_nullable: 1 + is_primary_key: 0 + is_unique: 0 + name: from_addr + order: 4 + size: + - 0 + from_complete: + data_type: text + default_value: ~ + is_nullable: 1 + is_primary_key: 0 + is_unique: 0 + name: from_complete + order: 3 + size: + - 0 + id: + data_type: integer + default_value: ~ + is_auto_increment: 1 + is_nullable: 0 + is_primary_key: 1 + is_unique: 0 + name: id + order: 1 + size: + - 0 + is_spam: + data_type: boolean + default_value: !!perl/ref + =: false + is_nullable: 1 + is_primary_key: 0 + is_unique: 0 + name: is_spam + order: 11 + size: + - 0 + msgid: + data_type: text + default_value: ~ + is_nullable: 1 + is_primary_key: 0 + is_unique: 0 + name: msgid + order: 2 + size: + - 0 + refs: + data_type: text + default_value: '' + is_nullable: 0 + is_primary_key: 0 + is_unique: 0 + name: refs + order: 9 + size: + - 0 + sent_date: + data_type: timestamp with time zone + default_value: ~ + is_nullable: 1 + is_primary_key: 0 + is_unique: 0 + name: sent_date + order: 8 + size: + - 0 + spam_score: + data_type: double precision + default_value: ~ + is_nullable: 1 + is_primary_key: 0 + is_unique: 0 + name: spam_score + order: 10 + size: + - 0 + subject: + data_type: text + default_value: '' + is_nullable: 0 + is_primary_key: 0 + is_unique: 0 + name: subject + order: 7 + size: + - 0 + to_addr: + data_type: text + default_value: ~ + is_nullable: 1 + is_primary_key: 0 + is_unique: 0 + name: to_addr + order: 6 + size: + - 0 + to_complete: + data_type: text + default_value: ~ + is_nullable: 1 + is_primary_key: 0 + is_unique: 0 + name: to_complete + order: 5 + size: + - 0 + indices: [] + name: message + options: [] + order: 8 + message_correspondent: + 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: + - message + - correspondent + - correspondent_type + match_type: '' + name: message_correspondent_message_correspondent_correspondent_t_idx + on_delete: '' + on_update: '' + options: [] + reference_fields: [] + reference_table: '' + type: UNIQUE + - deferrable: 0 + expression: '' + fields: + - correspondent + match_type: '' + name: message_correspondent_fk_correspondent + on_delete: CASCADE + on_update: CASCADE + options: [] + reference_fields: + - id + reference_table: correspondent + type: FOREIGN KEY + - deferrable: 0 + expression: '' + fields: + - message + match_type: '' + name: message_correspondent_fk_message + on_delete: CASCADE + on_update: CASCADE + options: [] + reference_fields: + - id + reference_table: message + type: FOREIGN KEY + fields: + correspondent: + data_type: integer + default_value: ~ + is_nullable: 0 + is_primary_key: 0 + is_unique: 1 + name: correspondent + order: 3 + size: + - 0 + correspondent_type: + data_type: enum + default_value: to + extra: + custom_type_name: message_correspondent_type + list: + - to + - from + - envfrom + - cc + is_nullable: 0 + is_primary_key: 0 + is_unique: 1 + name: correspondent_type + order: 4 + size: + - 0 + id: + data_type: integer + default_value: ~ + is_auto_increment: 1 + is_nullable: 0 + is_primary_key: 1 + is_unique: 0 + name: id + order: 1 + size: + - 0 + message: + data_type: integer + default_value: ~ + is_nullable: 0 + is_primary_key: 0 + is_unique: 1 + name: message + order: 2 + size: + - 0 + indices: + - fields: + - correspondent + name: message_correspondent_idx_correspondent + options: [] + type: NORMAL + - fields: + - message + name: message_correspondent_idx_message + options: [] + type: NORMAL + name: message_correspondent + options: [] + order: 18 + message_refs: + 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: + - message + - refs + match_type: '' + name: message_refs_message_refs_idx + on_delete: '' + on_update: '' + options: [] + reference_fields: [] + reference_table: '' + type: UNIQUE + - deferrable: 0 + expression: '' + fields: + - message + match_type: '' + name: message_refs_fk_message + on_delete: CASCADE + on_update: CASCADE + options: [] + reference_fields: + - id + reference_table: message + type: FOREIGN KEY + - deferrable: 0 + expression: '' + fields: + - refs + match_type: '' + name: message_refs_fk_refs + on_delete: CASCADE + on_update: CASCADE + options: [] + reference_fields: + - id + reference_table: message + type: FOREIGN KEY + fields: + id: + data_type: integer + default_value: ~ + is_auto_increment: 1 + is_nullable: 0 + is_primary_key: 1 + is_unique: 0 + name: id + order: 1 + size: + - 0 + inferred: + data_type: boolean + default_value: !!perl/ref + =: false + is_nullable: 1 + is_primary_key: 0 + is_unique: 0 + name: inferred + order: 4 + size: + - 0 + message: + data_type: integer + default_value: ~ + is_nullable: 0 + is_primary_key: 0 + is_unique: 1 + name: message + order: 2 + size: + - 0 + primary_ref: + data_type: boolean + default_value: !!perl/ref + =: false + is_nullable: 1 + is_primary_key: 0 + is_unique: 0 + name: primary_ref + order: 5 + size: + - 0 + refs: + data_type: integer + default_value: ~ + is_nullable: 0 + is_primary_key: 0 + is_unique: 1 + name: refs + order: 3 + size: + - 0 + indices: + - fields: + - message + name: message_refs_idx_message + options: [] + type: NORMAL + - fields: + - refs + name: message_refs_idx_refs + options: [] + type: NORMAL + name: message_refs + options: [] + order: 16 + severity: + 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: + - severity + match_type: '' + name: severity_severity_idx + on_delete: '' + on_update: '' + options: [] + reference_fields: [] + reference_table: '' + type: UNIQUE + fields: + id: + data_type: integer + default_value: ~ + is_auto_increment: 1 + is_nullable: 0 + is_primary_key: 1 + is_unique: 0 + name: id + order: 1 + size: + - 0 + obsolete: + data_type: boolean + default_value: !!perl/ref + =: false + is_nullable: 1 + is_primary_key: 0 + is_unique: 0 + name: obsolete + order: 5 + size: + - 0 + ordering: + data_type: integer + default_value: 5 + is_nullable: 0 + is_primary_key: 0 + is_unique: 0 + name: ordering + order: 3 + size: + - 0 + severity: + data_type: text + default_value: ~ + is_nullable: 0 + is_primary_key: 0 + is_unique: 1 + name: severity + order: 2 + size: + - 0 + strong: + data_type: boolean + default_value: !!perl/ref + =: false + is_nullable: 1 + is_primary_key: 0 + is_unique: 0 + name: strong + order: 4 + size: + - 0 + indices: [] + name: severity + options: [] + order: 9 + src_associations: + constraints: + - deferrable: 1 + expression: '' + fields: + - id + match_type: '' + name: '' + on_delete: '' + on_update: '' + options: [] + reference_fields: [] + reference_table: '' + type: PRIMARY KEY + - deferrable: 0 + expression: '' + fields: + - source + match_type: '' + name: src_associations_fk_source + on_delete: CASCADE + on_update: CASCADE + options: [] + reference_fields: + - id + reference_table: src_ver + type: FOREIGN KEY + - deferrable: 0 + expression: '' + fields: + - suite + match_type: '' + name: src_associations_fk_suite + on_delete: CASCADE + on_update: CASCADE + options: [] + reference_fields: + - id + reference_table: suite + type: FOREIGN KEY + fields: + created: + data_type: timestamp with time zone + default_value: !!perl/ref + =: current_timestamp + is_nullable: 0 + is_primary_key: 0 + is_unique: 0 + name: created + order: 4 + size: + - 0 + id: + data_type: integer + default_value: ~ + is_auto_increment: 1 + is_nullable: 0 + is_primary_key: 1 + is_unique: 0 + name: id + order: 1 + size: + - 0 + modified: + data_type: timestamp with time zone + default_value: !!perl/ref + =: current_timestamp + is_nullable: 0 + is_primary_key: 0 + is_unique: 0 + name: modified + order: 5 + size: + - 0 + source: + data_type: integer + default_value: ~ + is_nullable: 0 + is_primary_key: 0 + is_unique: 0 + name: source + order: 3 + size: + - 0 + suite: + data_type: integer + default_value: ~ + is_nullable: 0 + is_primary_key: 0 + is_unique: 0 + name: suite + order: 2 + size: + - 0 + indices: + - fields: + - source + name: src_associations_idx_source + options: [] + type: NORMAL + - fields: + - suite + name: src_associations_idx_suite + options: [] + type: NORMAL + name: src_associations + options: [] + order: 27 + src_pkg: + 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: + - pkg + - disabled + match_type: '' + name: src_pkg_pkg_disabled + on_delete: '' + on_update: '' + options: [] + reference_fields: [] + reference_table: '' + type: UNIQUE + - deferrable: 0 + expression: '' + fields: + - alias_of + match_type: '' + name: src_pkg_fk_alias_of + on_delete: CASCADE + on_update: CASCADE + options: [] + reference_fields: + - id + reference_table: src_pkg + type: FOREIGN KEY + fields: + alias_of: + data_type: integer + default_value: ~ + is_nullable: 1 + is_primary_key: 0 + is_unique: 0 + name: alias_of + order: 4 + size: + - 0 + creation: + data_type: timestamp with time zone + default_value: !!perl/ref + =: current_timestamp + is_nullable: 1 + is_primary_key: 0 + is_unique: 0 + name: creation + order: 5 + size: + - 0 + disabled: + data_type: timestamp with time zone + default_value: ~ + is_nullable: 1 + is_primary_key: 0 + is_unique: 1 + name: disabled + order: 6 + size: + - 0 + id: + data_type: integer + default_value: ~ + is_auto_increment: 1 + is_nullable: 0 + is_primary_key: 1 + is_unique: 0 + name: id + order: 1 + size: + - 0 + last_modified: + data_type: timestamp with time zone + default_value: !!perl/ref + =: current_timestamp + is_nullable: 1 + is_primary_key: 0 + is_unique: 0 + name: last_modified + order: 7 + size: + - 0 + obsolete: + data_type: boolean + default_value: !!perl/ref + =: false + is_nullable: 1 + is_primary_key: 0 + is_unique: 0 + name: obsolete + order: 8 + size: + - 0 + pkg: + data_type: text + default_value: ~ + is_nullable: 0 + is_primary_key: 0 + is_unique: 1 + name: pkg + order: 2 + size: + - 0 + pseduopkg: + data_type: boolean + default_value: !!perl/ref + =: false + is_nullable: 1 + is_primary_key: 0 + is_unique: 0 + name: pseduopkg + order: 3 + size: + - 0 + indices: + - fields: + - alias_of + name: src_pkg_idx_alias_of + options: [] + type: NORMAL + name: src_pkg + options: [] + order: 10 + src_ver: + 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: + - src_pkg + - ver + match_type: '' + name: src_ver_src_pkg_id_ver + on_delete: '' + on_update: '' + options: [] + reference_fields: [] + reference_table: '' + type: UNIQUE + - deferrable: 0 + expression: '' + fields: + - based_on + match_type: '' + name: src_ver_fk_based_on + on_delete: CASCADE + on_update: CASCADE + options: [] + reference_fields: + - id + reference_table: src_ver + type: FOREIGN KEY + - deferrable: 0 + expression: '' + fields: + - maintainer + match_type: '' + name: src_ver_fk_maintainer + on_delete: SET NULL + on_update: CASCADE + options: [] + reference_fields: + - id + reference_table: maintainer + type: FOREIGN KEY + - deferrable: 0 + expression: '' + fields: + - src_pkg + match_type: '' + name: src_ver_fk_src_pkg + on_delete: CASCADE + on_update: CASCADE + options: [] + reference_fields: + - id + reference_table: src_pkg + type: FOREIGN KEY + fields: + based_on: + data_type: integer + default_value: ~ + is_nullable: 1 + is_primary_key: 0 + is_unique: 0 + name: based_on + order: 6 + size: + - 0 + id: + data_type: integer + default_value: ~ + is_auto_increment: 1 + is_nullable: 0 + is_primary_key: 1 + is_unique: 0 + name: id + order: 1 + size: + - 0 + maintainer: + data_type: integer + default_value: ~ + is_nullable: 1 + is_primary_key: 0 + is_unique: 0 + name: maintainer + order: 4 + size: + - 0 + src_pkg: + data_type: integer + default_value: ~ + is_nullable: 0 + is_primary_key: 0 + is_unique: 1 + name: src_pkg + order: 2 + size: + - 0 + upload_date: + data_type: timestamp with time zone + default_value: !!perl/ref + =: current_timestamp + is_nullable: 0 + is_primary_key: 0 + is_unique: 0 + name: upload_date + order: 5 + size: + - 0 + ver: + data_type: debversion + default_value: ~ + is_nullable: 0 + is_primary_key: 0 + is_unique: 1 + name: ver + order: 3 + size: + - 0 + indices: + - fields: + - based_on + name: src_ver_idx_based_on + options: [] + type: NORMAL + - fields: + - maintainer + name: src_ver_idx_maintainer + options: [] + type: NORMAL + - fields: + - src_pkg + name: src_ver_idx_src_pkg + options: [] + type: NORMAL + name: src_ver + options: [] + order: 21 + suite: + 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: + - suite_name + match_type: '' + name: suite_suite_name_key + on_delete: '' + on_update: '' + options: [] + reference_fields: [] + reference_table: '' + type: UNIQUE + fields: + active: + data_type: boolean + default_value: !!perl/ref + =: true + is_nullable: 1 + is_primary_key: 0 + is_unique: 0 + name: active + order: 5 + size: + - 0 + codename: + data_type: text + default_value: ~ + is_nullable: 1 + is_primary_key: 0 + is_unique: 0 + name: codename + order: 4 + size: + - 0 + id: + data_type: integer + default_value: ~ + is_auto_increment: 1 + is_nullable: 0 + is_primary_key: 1 + is_unique: 0 + name: id + order: 1 + size: + - 0 + suite_name: + data_type: text + default_value: ~ + is_nullable: 0 + is_primary_key: 0 + is_unique: 1 + name: suite_name + order: 2 + size: + - 0 + version: + data_type: text + default_value: ~ + is_nullable: 1 + is_primary_key: 0 + is_unique: 0 + name: version + order: 3 + size: + - 0 + indices: [] + name: suite + options: [] + order: 11 + table_comments: + constraints: + - deferrable: 1 + expression: '' + fields: + - table_name + match_type: '' + name: table_comments_table_name_key + on_delete: '' + on_update: '' + options: [] + reference_fields: [] + reference_table: '' + type: UNIQUE + fields: + comment_text: + data_type: text + default_value: ~ + is_nullable: 0 + is_primary_key: 0 + is_unique: 0 + name: comment_text + order: 2 + size: + - 0 + table_name: + data_type: text + default_value: ~ + is_nullable: 0 + is_primary_key: 0 + is_unique: 1 + name: table_name + order: 1 + size: + - 0 + indices: [] + name: table_comments + options: [] + order: 12 + tag: + 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: + - tag + match_type: '' + name: tag_tag_key + on_delete: '' + on_update: '' + options: [] + reference_fields: [] + reference_table: '' + type: UNIQUE + fields: + id: + data_type: integer + default_value: ~ + is_auto_increment: 1 + is_nullable: 0 + is_primary_key: 1 + is_unique: 0 + name: id + order: 1 + size: + - 0 + obsolete: + data_type: boolean + default_value: !!perl/ref + =: false + is_nullable: 1 + is_primary_key: 0 + is_unique: 0 + name: obsolete + order: 3 + size: + - 0 + tag: + data_type: text + default_value: ~ + is_nullable: 0 + is_primary_key: 0 + is_unique: 1 + name: tag + order: 2 + size: + - 0 + indices: [] + name: tag + options: [] + order: 13 + triggers: {} + views: {} +translator: + add_drop_table: 0 + filename: ~ + no_comments: 0 + parser_args: + sources: + - Arch + - BinAssociation + - BinPkg + - BinVer + - BinaryVersion + - Bug + - BugBinpackage + - BugBlock + - BugMerged + - BugMessage + - BugPackage + - BugSrcpackage + - BugStatusCache + - BugTag + - BugVer + - ColumnComment + - Correspondent + - CorrespondentFullName + - DbixClassDeploymenthandlerVersion + - Maintainer + - Message + - MessageCorrespondent + - MessageRef + - Severity + - SrcAssociation + - SrcPkg + - SrcVer + - Suite + - TableComment + - Tag + parser_type: SQL::Translator::Parser::DBIx::Class + producer_args: {} + producer_type: SQL::Translator::Producer::YAML + show_warnings: 0 + trace: 0 + version: 0.11018