]> git.ipfire.org Git - thirdparty/bugzilla.git/commitdiff
Bug 619581: Make contrib/bzdbcopy.pl work again, and also make it work with
authorMax Kanat-Alexander <mkanat@bugzilla.org>
Thu, 16 Dec 2010 01:42:37 +0000 (17:42 -0800)
committerMax Kanat-Alexander <mkanat@bugzilla.org>
Thu, 16 Dec 2010 01:42:37 +0000 (17:42 -0800)
SQLite.
r=mkanat, a=mkanat

Bugzilla/DB/Sqlite.pm
contrib/bzdbcopy.pl

index c518486ae052e93075114b3406fbb089d6dff5d5..2c3448acf3a4adf20ffc83ca245dd3ecdd3f4a1d 100644 (file)
@@ -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>.
index 8491238b5a73c7446fbb613d0ef008e64673e808..11bd341f40d95fcd912a39176aebbb52e7fcaa7d 100755 (executable)
@@ -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