diff options
author | mkanat%kerio.com <> | 2005-03-09 09:46:29 +0000 |
---|---|---|
committer | mkanat%kerio.com <> | 2005-03-09 09:46:29 +0000 |
commit | b8793ea28e3e03b2452bac119f2adcd3758e7260 (patch) | |
tree | 59f43fa33e757e912ce34f3d41b201b4eb13c8f4 /Bugzilla/DB/Schema/Mysql.pm | |
parent | Bug 284975: Any code after Throw*Error is a dead code. (diff) | |
download | bugzilla-b8793ea28e3e03b2452bac119f2adcd3758e7260.tar.gz bugzilla-b8793ea28e3e03b2452bac119f2adcd3758e7260.tar.bz2 bugzilla-b8793ea28e3e03b2452bac119f2adcd3758e7260.zip |
Bug 146679: Reusable, structured, database-independent schema
Patch By Ed Sabol <edwardjsabol@iname.com> r=mkanat, a=myk, a=justdave
Diffstat (limited to 'Bugzilla/DB/Schema/Mysql.pm')
-rw-r--r-- | Bugzilla/DB/Schema/Mysql.pm | 100 |
1 files changed, 100 insertions, 0 deletions
diff --git a/Bugzilla/DB/Schema/Mysql.pm b/Bugzilla/DB/Schema/Mysql.pm new file mode 100644 index 000000000..641b9756e --- /dev/null +++ b/Bugzilla/DB/Schema/Mysql.pm @@ -0,0 +1,100 @@ +# -*- Mode: perl; indent-tabs-mode: nil -*- +# +# The contents of this file are subject to the Mozilla Public +# License Version 1.1 (the "License"); you may not use this file +# except in compliance with the License. You may obtain a copy of +# the License at http://www.mozilla.org/MPL/ +# +# Software distributed under the License is distributed on an "AS +# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or +# implied. See the License for the specific language governing +# rights and limitations under the License. +# +# The Original Code is the Bugzilla Bug Tracking System. +# +# The Initial Developer of the Original Code is Netscape Communications +# Corporation. Portions created by Netscape are +# Copyright (C) 1998 Netscape Communications Corporation. All +# Rights Reserved. +# +# Contributor(s): Andrew Dunstan <andrew@dunslane.net>, +# Edward J. Sabol <edwardjsabol@iname.com> + +package Bugzilla::DB::Schema::Mysql; + +############################################################################### +# +# DB::Schema implementation for MySQL +# +############################################################################### + +use strict; +use Bugzilla::Error; + +use base qw(Bugzilla::DB::Schema); + +#------------------------------------------------------------------------------ +sub _initialize { + + my $self = shift; + + $self = $self->SUPER::_initialize; + + $self->{db_specific} = { + + BOOLEAN => 'tinyint', + FALSE => '0', + TRUE => '1', + + INT1 => 'tinyint', + INT2 => 'smallint', + INT3 => 'mediumint', + INT4 => 'integer', + + SMALLSERIAL => 'smallint auto_increment', + MEDIUMSERIAL => 'mediumint auto_increment', + INTSERIAL => 'integer auto_increment', + + TINYTEXT => 'tinytext', + MEDIUMTEXT => 'mediumtext', + TEXT => 'text', + + LONGBLOB => 'longblob', + + DATETIME => 'datetime', + + }; + + $self->_adjust_schema; + + return $self; + +} #eosub--_initialize +#------------------------------------------------------------------------------ +sub _get_create_table_ddl { + # Extend superclass method to specify the MYISAM storage engine. + # Returns a "create table" SQL statement. + + my($self, $table) = @_; + + return($self->SUPER::_get_create_table_ddl($table) . ' TYPE = MYISAM'); + +} #eosub--_get_create_table_ddl +#------------------------------------------------------------------------------ +sub _get_create_index_ddl { + # Extend superclass method to create FULLTEXT indexes on text fields. + # Returns a "create index" SQL statement. + + my($self, $table_name, $index_name, $index_fields, $index_type) = @_; + + my $sql = "CREATE "; + $sql .= "$index_type " if ($index_type eq 'UNIQUE' + || $index_type eq 'FULLTEXT'); + $sql .= "INDEX $index_name ON $table_name \(" . + join(", ", @$index_fields) . "\)"; + + return($sql); + +} #eosub--_get_create_index_ddl +#------------------------------------------------------------------------------ +1; |