Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
bugzilla
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
etersoft
bugzilla
Commits
8231d98d
Commit
8231d98d
authored
Apr 17, 2005
by
mkanat%kerio.com
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Bug 290403: Slight cleanup of Bugzilla::DB index code
Patch By Max Kanat-Alexander <mkanat@bugzilla.org> r=Tomas.Kopal, a=justdave
parent
77691d57
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
56 additions
and
33 deletions
+56
-33
DB.pm
Bugzilla/DB.pm
+50
-12
Mysql.pm
Bugzilla/DB/Mysql.pm
+6
-21
No files found.
Bugzilla/DB.pm
View file @
8231d98d
...
...
@@ -414,17 +414,36 @@ sub bz_add_index {
my
$index_exists
=
$self
->
bz_index_info
(
$table
,
$name
);
if
(
!
$index_exists
)
{
my
@statements
=
$self
->
_bz_real_schema
->
get_add_index_ddl
(
$table
,
$name
,
$definition
);
print
"Adding new index '$name' to the $table table ...\n"
;
foreach
my
$sql
(
@statements
)
{
$self
->
do
(
$sql
);
}
$self
->
_bz_add_index_raw
(
$table
,
$name
,
$definition
);
$self
->
_bz_real_schema
->
set_index
(
$table
,
$name
,
$definition
);
$self
->
_bz_store_real_schema
;
}
}
# bz_add_index_raw($table, $name, $silent)
#
# Description: A helper function for bz_add_index.
# Adds an index to the database
# without updating any Schema object. Generally
# should only be called by bz_add_index.
# Used when you don't yet have a Schema
# object but you need to add an index, for some reason.
# Params: $table - The name of the table the index is on.
# $name - The name of the index you're adding.
# $definition - The abstract index definition, in hashref
# or arrayref format.
# $silent - (optional) If specified and true, don't output
# any message about this change.
# Returns: nothing
#
sub
bz_add_index_raw
{
my
(
$self
,
$table
,
$name
,
$definition
,
$silent
)
=
@_
;
my
@statements
=
$self
->
_bz_schema
->
get_add_index_ddl
(
$table
,
$name
,
$definition
);
print
"Adding new index '$name' to the $table table ...\n"
unless
$silent
;
$self
->
do
(
$_
)
foreach
(
@statements
);
}
sub
bz_add_table
{
my
(
$self
,
$name
)
=
@_
;
...
...
@@ -520,17 +539,36 @@ sub bz_drop_index {
my
$index_exists
=
$self
->
bz_index_info
(
$table
,
$name
);
if
(
$index_exists
)
{
my
@statements
=
$self
->
_bz_real_schema
->
get_drop_index_ddl
(
$table
,
$name
);
print
"Removing index '$name' from the $table table...\n"
;
foreach
my
$sql
(
@statements
)
{
$self
->
do
(
$sql
);
}
$self
->
_bz_drop_index_raw
(
$table
,
$name
);
$self
->
_bz_real_schema
->
delete_index
(
$table
,
$name
);
$self
->
_bz_store_real_schema
;
}
}
# bz_drop_index_raw($table, $name, $silent)
#
# Description: A helper function for bz_drop_index.
# Drops an index from the database
# without updating any Schema object. Generally
# should only be called by bz_drop_index.
# Used when either: (1) You don't yet have a Schema
# object but you need to drop an index, for some reason.
# (2) You need to drop an index that somehow got into the
# database but doesn't exist in Schema.
# Params: $table - The name of the table the index is on.
# $name - The name of the index you're dropping.
# $silent - (optional) If specified and true, don't output
# any message about this change.
# Returns: nothing
#
sub
bz_drop_index_raw
{
my
(
$self
,
$table
,
$name
,
$silent
)
=
@_
;
my
@statements
=
$self
->
_bz_schema
->
get_drop_index_ddl
(
$table
,
$name
);
print
"Removing index '$name' from the $table table...\n"
unless
$silent
;
$self
->
do
(
$_
)
foreach
(
@statements
);
}
# XXX - Needs to be made cross-db compatible
sub
bz_drop_table_indexes
($)
{
my
(
$self
,
$table
)
=
@_
;
...
...
Bugzilla/DB/Mysql.pm
View file @
8231d98d
...
...
@@ -304,16 +304,7 @@ sub bz_setup_database {
elsif
(
$self
->
bz_index_info_real
(
'series'
,
'series_creator_idx'
))
{
$dropname
=
'series_creator_idx'
;
}
if
(
$dropname
)
{
print
"Removing the useless index $dropname on the"
.
" series table...\n"
;
my
@drop
=
$self
->
_bz_schema
->
get_drop_index_ddl
(
'series'
,
$dropname
);
foreach
my
$sql
(
@drop
)
{
$self
->
do
(
$sql
);
}
}
$self
->
bz_drop_index_raw
(
'series'
,
$dropname
)
if
$dropname
;
}
# The email_setting table also had the same problem.
...
...
@@ -321,11 +312,8 @@ sub bz_setup_database {
&&
$self
->
bz_index_info_real
(
'email_setting'
,
'email_settings_user_id_idx'
)
)
{
print
"Removing the useless index email_settings_user_id_idx\n"
.
" on the email_setting table...\n"
;
my
@drop
=
$self
->
_bz_schema
->
get_drop_index_ddl
(
'email_setting'
,
'email_settings_user_id_idx'
);
$self
->
do
(
$_
)
foreach
(
@drop
);
$self
->
bz_drop_index_raw
(
'email_setting'
,
'email_settings_user_id_idx'
);
}
# Go through all the tables.
...
...
@@ -361,12 +349,9 @@ sub bz_setup_database {
print
"Renaming index $column to to $new_name...\n"
;
# Unfortunately, MySQL has no way to rename an index. :-(
# So we have to drop and recreate the indexes.
my
@drop
=
$self
->
_bz_schema
->
get_drop_index_ddl
(
$table
,
$column
);
my
@add
=
$self
->
_bz_schema
->
get_add_index_ddl
(
$table
,
$new_name
,
$index
);
$self
->
do
(
$_
)
foreach
(
@drop
);
$self
->
do
(
$_
)
foreach
(
@add
);
$self
->
bz_drop_index_raw
(
$table
,
$column
,
"silent"
);
$self
->
bz_add_index_raw
(
$table
,
$new_name
,
$index
,
"silent"
);
}
# if
}
# foreach column
}
# foreach table
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment