Commit 2e865375 authored by Max Kanat-Alexander's avatar Max Kanat-Alexander

Bug 619581: Make contrib/bzdbcopy.pl work again, and also make it work with

SQLite. r=mkanat, a=mkanat
parent 7b48d43d
......@@ -235,9 +235,23 @@ sub sql_string_until {
return "SUBSTR($string, 1, $position - 1)"
}
###############
# bz_ methods #
###############
# XXX This needs to be implemented.
sub bz_explain { }
sub bz_table_list_real {
my $self = shift;
my @tables = $self->SUPER::bz_table_list_real(@_);
# SQLite includes a sqlite_sequence table in every database that isn't
# one of our real tables. We exclude any table that starts with sqlite_,
# just to be safe.
@tables = grep { $_ !~ /^sqlite_/ } @tables;
return @tables;
}
1;
__END__
......@@ -252,4 +266,4 @@ This module overrides methods of the Bugzilla::DB module with a
SQLite-specific implementation. It is instantiated by the Bugzilla::DB module
and should never be used directly.
For interface details see L<Bugzilla::DB> and L<DBI>.
\ No newline at end of file
For interface details see L<Bugzilla::DB> and L<DBI>.
......@@ -32,14 +32,14 @@ use Bugzilla::Util;
# Settings for the 'Source' DB that you are copying from.
use constant SOURCE_DB_TYPE => 'Mysql';
use constant SOURCE_DB_NAME => 'bugs';
use constant SOURCE_DB_NAME => 'bugs_tip';
use constant SOURCE_DB_USER => 'bugs';
use constant SOURCE_DB_PASSWORD => '';
use constant SOURCE_DB_PASSWORD => 'buGmElateR';
use constant SOURCE_DB_HOST => 'localhost';
# Settings for the 'Target' DB that you are copying to.
use constant TARGET_DB_TYPE => 'Pg';
use constant TARGET_DB_NAME => 'bugs';
use constant TARGET_DB_TYPE => 'Sqlite';
use constant TARGET_DB_NAME => 'bugs_tip';
use constant TARGET_DB_USER => 'bugs';
use constant TARGET_DB_PASSWORD => '';
use constant TARGET_DB_HOST => 'localhost';
......@@ -50,11 +50,16 @@ use constant TARGET_DB_HOST => 'localhost';
print "Connecting to the '" . SOURCE_DB_NAME . "' source database on "
. SOURCE_DB_TYPE . "...\n";
my $source_db = Bugzilla::DB::_connect(SOURCE_DB_TYPE, SOURCE_DB_HOST,
SOURCE_DB_NAME, undef, undef, SOURCE_DB_USER, SOURCE_DB_PASSWORD);
my $source_db = Bugzilla::DB::_connect({
db_driver => SOURCE_DB_TYPE,
db_host => SOURCE_DB_HOST,
db_name => SOURCE_DB_NAME,
db_user => SOURCE_DB_USER,
db_pass => SOURCE_DB_PASSWORD,
});
# Don't read entire tables into memory.
if (SOURCE_DB_TYPE eq 'Mysql') {
$source_db->{'mysql_use_result'}=1;
$source_db->{'mysql_use_result'} = 1;
# MySQL cannot have two queries running at the same time. Ensure the schema
# is loaded from the database so bz_column_info will not execute a query
......@@ -63,8 +68,13 @@ if (SOURCE_DB_TYPE eq 'Mysql') {
print "Connecting to the '" . TARGET_DB_NAME . "' target database on "
. TARGET_DB_TYPE . "...\n";
my $target_db = Bugzilla::DB::_connect(TARGET_DB_TYPE, TARGET_DB_HOST,
TARGET_DB_NAME, undef, undef, TARGET_DB_USER, TARGET_DB_PASSWORD);
my $target_db = Bugzilla::DB::_connect({
db_driver => TARGET_DB_TYPE,
db_host => TARGET_DB_HOST,
db_name => TARGET_DB_NAME,
db_user => TARGET_DB_USER,
db_pass => TARGET_DB_PASSWORD,
});
my $ident_char = $target_db->get_info( 29 ); # SQL_IDENTIFIER_QUOTE_CHAR
# We use the table list from the target DB, because if somebody
......
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