Commit 5ffe3d31 authored by lpsolit%gmail.com's avatar lpsolit%gmail.com

Bug 278017: Eliminate use of deprecated Bugzilla::DB routines (SendSQL, etc.) -…

Bug 278017: Eliminate use of deprecated Bugzilla::DB routines (SendSQL, etc.) - Patch by Frédéric Buclin <LpSolit@gmail.com> r=mkanat a=myk
parent 9eb55706
...@@ -315,17 +315,6 @@ sub _cleanup { ...@@ -315,17 +315,6 @@ sub _cleanup {
undef $_cgi; undef $_cgi;
undef $_user; 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 # When we support transactions, need to ->rollback here
$_dbh_main->disconnect if $_dbh_main; $_dbh_main->disconnect if $_dbh_main;
$_dbh_shadow->disconnect if $_dbh_shadow && Bugzilla->params->{"shadowdb"}; $_dbh_shadow->disconnect if $_dbh_shadow && Bugzilla->params->{"shadowdb"};
......
...@@ -32,20 +32,8 @@ use strict; ...@@ -32,20 +32,8 @@ use strict;
use DBI; use DBI;
# Inherit the DB class from DBI::db and Exporter # Inherit the DB class from DBI::db.
# Note that we inherit from Exporter just to allow the old, deprecated use base qw(DBI::db);
# 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');
use Bugzilla::Config qw(:DEFAULT :db); use Bugzilla::Config qw(:DEFAULT :db);
use Bugzilla::Constants; use Bugzilla::Constants;
...@@ -60,89 +48,6 @@ use Bugzilla::DB::Schema; ...@@ -60,89 +48,6 @@ use Bugzilla::DB::Schema;
use constant BLOB_TYPE => DBI::SQL_BLOB; 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 # Connection Methods
##################################################################### #####################################################################
...@@ -972,10 +877,6 @@ functionality which is different between databases allowing for easy ...@@ -972,10 +877,6 @@ functionality which is different between databases allowing for easy
customization for particular database via inheritance. These methods customization for particular database via inheritance. These methods
should be always preffered over hard-coding SQL commands. 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 =head1 CONSTANTS
Subclasses of Bugzilla::DB are required to define certain constants. These Subclasses of Bugzilla::DB are required to define certain constants. These
...@@ -1494,44 +1395,6 @@ with their functions. ...@@ -1494,44 +1395,6 @@ with their functions.
=back =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 =head1 SEE ALSO
L<DBI> L<DBI>
......
...@@ -31,7 +31,6 @@ ...@@ -31,7 +31,6 @@
use strict; use strict;
use Bugzilla::DB qw(:DEFAULT :deprecated);
use Bugzilla::Constants; use Bugzilla::Constants;
use Bugzilla::Util; use Bugzilla::Util;
# Bring ChmodDataFile in until this is all moved to the module # Bring ChmodDataFile in until this is all moved to the module
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment