зеркало из https://github.com/mozilla/gecko-dev.git
Bug 278017: Eliminate use of deprecated Bugzilla::DB routines (SendSQL, etc.) - Patch by Fr�d�ric Buclin <LpSolit@gmail.com> r=mkanat a=myk
This commit is contained in:
Родитель
466ff3b3da
Коммит
4433df7eec
|
@ -315,17 +315,6 @@ sub _cleanup {
|
|||
undef $_cgi;
|
||||
undef $_user;
|
||||
|
||||
# See bug 192531. If we don't clear the possibly active statement handles,
|
||||
# then when this is called from the END block, it happens _before_ the
|
||||
# destructors in Bugzilla::DB have happened.
|
||||
# See http://rt.perl.org/rt2/Ticket/Display.html?id=17450#38810
|
||||
# Without disconnecting explicitly here, noone notices, because DBI::END
|
||||
# ends up calling DBD::mysql's $drh->disconnect_all, which is a noop.
|
||||
# This code is evil, but it needs to be done, at least until SendSQL and
|
||||
# friends can be removed
|
||||
@Bugzilla::DB::SQLStateStack = ();
|
||||
undef $Bugzilla::DB::_current_sth;
|
||||
|
||||
# When we support transactions, need to ->rollback here
|
||||
$_dbh_main->disconnect if $_dbh_main;
|
||||
$_dbh_shadow->disconnect if $_dbh_shadow && Bugzilla->params->{"shadowdb"};
|
||||
|
|
|
@ -32,20 +32,8 @@ use strict;
|
|||
|
||||
use DBI;
|
||||
|
||||
# Inherit the DB class from DBI::db and Exporter
|
||||
# Note that we inherit from Exporter just to allow the old, deprecated
|
||||
# interface to work. If it gets removed, the Exporter class can be removed
|
||||
# from this list.
|
||||
use base qw(Exporter DBI::db);
|
||||
|
||||
%Bugzilla::DB::EXPORT_TAGS =
|
||||
(
|
||||
deprecated => [qw(SendSQL SqlQuote
|
||||
MoreSQLData FetchSQLData FetchOneColumn
|
||||
PushGlobalSQLState PopGlobalSQLState)
|
||||
],
|
||||
);
|
||||
Exporter::export_ok_tags('deprecated');
|
||||
# Inherit the DB class from DBI::db.
|
||||
use base qw(DBI::db);
|
||||
|
||||
use Bugzilla::Config qw(:DEFAULT :db);
|
||||
use Bugzilla::Constants;
|
||||
|
@ -59,89 +47,6 @@ use Bugzilla::DB::Schema;
|
|||
|
||||
use constant BLOB_TYPE => DBI::SQL_BLOB;
|
||||
|
||||
#####################################################################
|
||||
# Deprecated Functions
|
||||
#####################################################################
|
||||
|
||||
# All this code is backwards compat fu. As such, its a bit ugly. Note the
|
||||
# circular dependencies on Bugzilla.pm
|
||||
# This is old cruft which will be removed, so there's not much use in
|
||||
# having a separate package for it, or otherwise trying to avoid the circular
|
||||
# dependency
|
||||
|
||||
# XXX - mod_perl
|
||||
# These use |our| instead of |my| because they need to be cleared from
|
||||
# Bugzilla.pm. See bug 192531 for details.
|
||||
our $_current_sth;
|
||||
our @SQLStateStack = ();
|
||||
|
||||
my $_fetchahead;
|
||||
|
||||
sub SendSQL {
|
||||
my ($str) = @_;
|
||||
|
||||
$_current_sth = Bugzilla->dbh->prepare($str);
|
||||
|
||||
$_current_sth->execute;
|
||||
|
||||
# This is really really ugly, but its what we get for not doing
|
||||
# error checking for 5 years. See bug 189446 and bug 192531
|
||||
$_current_sth->{RaiseError} = 0;
|
||||
|
||||
undef $_fetchahead;
|
||||
}
|
||||
|
||||
# Its much much better to use bound params instead of this
|
||||
sub SqlQuote {
|
||||
my ($str) = @_;
|
||||
|
||||
# Backwards compat code
|
||||
return "''" if not defined $str;
|
||||
|
||||
my $res = Bugzilla->dbh->quote($str);
|
||||
|
||||
trick_taint($res);
|
||||
|
||||
return $res;
|
||||
}
|
||||
|
||||
sub MoreSQLData {
|
||||
return 1 if defined $_fetchahead;
|
||||
|
||||
if ($_fetchahead = $_current_sth->fetchrow_arrayref()) {
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
sub FetchSQLData {
|
||||
if (defined $_fetchahead) {
|
||||
my @result = @$_fetchahead;
|
||||
undef $_fetchahead;
|
||||
return @result;
|
||||
}
|
||||
|
||||
return $_current_sth->fetchrow_array;
|
||||
}
|
||||
|
||||
sub FetchOneColumn {
|
||||
my @row = FetchSQLData();
|
||||
return $row[0];
|
||||
}
|
||||
|
||||
sub PushGlobalSQLState {
|
||||
push @SQLStateStack, $_current_sth;
|
||||
push @SQLStateStack, $_fetchahead;
|
||||
}
|
||||
|
||||
sub PopGlobalSQLState {
|
||||
die ("PopGlobalSQLState: stack underflow") if ( scalar(@SQLStateStack) < 1 );
|
||||
$_fetchahead = pop @SQLStateStack;
|
||||
$_current_sth = pop @SQLStateStack;
|
||||
}
|
||||
|
||||
# MODERN CODE BELOW
|
||||
|
||||
#####################################################################
|
||||
# Connection Methods
|
||||
#####################################################################
|
||||
|
@ -972,10 +877,6 @@ functionality which is different between databases allowing for easy
|
|||
customization for particular database via inheritance. These methods
|
||||
should be always preffered over hard-coding SQL commands.
|
||||
|
||||
Access to the old SendSQL-based database routines are also provided by
|
||||
importing the C<:deprecated> tag. These routines should not be used in new
|
||||
code.
|
||||
|
||||
=head1 CONSTANTS
|
||||
|
||||
Subclasses of Bugzilla::DB are required to define certain constants. These
|
||||
|
@ -1494,44 +1395,6 @@ with their functions.
|
|||
=back
|
||||
|
||||
|
||||
=head1 DEPRECATED ROUTINES
|
||||
|
||||
Several database routines are deprecated. They should not be used in new code,
|
||||
and so are not documented.
|
||||
|
||||
=over 4
|
||||
|
||||
=item *
|
||||
|
||||
SendSQL
|
||||
|
||||
=item *
|
||||
|
||||
SqlQuote
|
||||
|
||||
=item *
|
||||
|
||||
MoreSQLData
|
||||
|
||||
=item *
|
||||
|
||||
FetchSQLData
|
||||
|
||||
=item *
|
||||
|
||||
FetchOneColumn
|
||||
|
||||
=item *
|
||||
|
||||
PushGlobalSQLState
|
||||
|
||||
=item *
|
||||
|
||||
PopGlobalSQLState
|
||||
|
||||
=back
|
||||
|
||||
|
||||
=head1 SEE ALSO
|
||||
|
||||
L<DBI>
|
||||
|
|
|
@ -31,7 +31,6 @@
|
|||
|
||||
use strict;
|
||||
|
||||
use Bugzilla::DB qw(:DEFAULT :deprecated);
|
||||
use Bugzilla::Constants;
|
||||
use Bugzilla::Util;
|
||||
# Bring ChmodDataFile in until this is all moved to the module
|
||||
|
|
Загрузка…
Ссылка в новой задаче