activerecord-jdbc-adapter 0.9.7-java → 1.0.0.beta1-java

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (123) hide show
  1. data/History.txt +11 -0
  2. data/Manifest.txt +71 -38
  3. data/lib/active_record/connection_adapters/cachedb_adapter.rb +1 -1
  4. data/lib/active_record/connection_adapters/derby_adapter.rb +1 -13
  5. data/lib/active_record/connection_adapters/h2_adapter.rb +1 -13
  6. data/lib/active_record/connection_adapters/hsqldb_adapter.rb +1 -13
  7. data/lib/active_record/connection_adapters/informix_adapter.rb +1 -1
  8. data/lib/active_record/connection_adapters/jdbc_adapter.rb +1 -661
  9. data/lib/active_record/connection_adapters/jndi_adapter.rb +1 -1
  10. data/lib/active_record/connection_adapters/mssql_adapter.rb +1 -13
  11. data/lib/active_record/connection_adapters/mysql_adapter.rb +1 -13
  12. data/lib/active_record/connection_adapters/oracle_adapter.rb +1 -1
  13. data/lib/active_record/connection_adapters/postgresql_adapter.rb +1 -13
  14. data/lib/active_record/connection_adapters/sqlite3_adapter.rb +1 -13
  15. data/lib/activerecord-jdbc-adapter.rb +2 -2
  16. data/lib/arjdbc.rb +29 -0
  17. data/lib/arjdbc/cachedb.rb +3 -0
  18. data/lib/arjdbc/cachedb/adapter.rb +20 -0
  19. data/lib/arjdbc/cachedb/connection_methods.rb +10 -0
  20. data/lib/arjdbc/db2.rb +2 -0
  21. data/lib/{jdbc_adapter/jdbc_db2.rb → arjdbc/db2/adapter.rb} +1 -17
  22. data/lib/arjdbc/derby.rb +7 -0
  23. data/lib/{jdbc_adapter/jdbc_derby.rb → arjdbc/derby/adapter.rb} +8 -26
  24. data/lib/arjdbc/derby/connection_methods.rb +18 -0
  25. data/lib/arjdbc/discover.rb +99 -0
  26. data/lib/arjdbc/firebird.rb +2 -0
  27. data/lib/{jdbc_adapter/jdbc_firebird.rb → arjdbc/firebird/adapter.rb} +12 -16
  28. data/lib/arjdbc/h2.rb +4 -0
  29. data/lib/arjdbc/h2/adapter.rb +15 -0
  30. data/lib/arjdbc/h2/connection_methods.rb +12 -0
  31. data/lib/arjdbc/hsqldb.rb +4 -0
  32. data/lib/{jdbc_adapter/jdbc_hsqldb.rb → arjdbc/hsqldb/adapter.rb} +6 -58
  33. data/lib/arjdbc/hsqldb/connection_methods.rb +14 -0
  34. data/lib/arjdbc/informix.rb +3 -0
  35. data/lib/{jdbc_adapter/jdbc_informix.rb → arjdbc/informix/adapter.rb} +6 -19
  36. data/lib/arjdbc/informix/connection_methods.rb +10 -0
  37. data/lib/arjdbc/jdbc.rb +2 -0
  38. data/lib/arjdbc/jdbc/adapter.rb +235 -0
  39. data/lib/arjdbc/jdbc/adapter_java.jar +0 -0
  40. data/lib/arjdbc/jdbc/callbacks.rb +44 -0
  41. data/lib/arjdbc/jdbc/column.rb +38 -0
  42. data/lib/arjdbc/jdbc/compatibility.rb +51 -0
  43. data/lib/arjdbc/jdbc/connection.rb +97 -0
  44. data/lib/arjdbc/jdbc/connection_methods.rb +16 -0
  45. data/lib/arjdbc/jdbc/core_ext.rb +24 -0
  46. data/lib/arjdbc/jdbc/discover.rb +18 -0
  47. data/lib/arjdbc/jdbc/driver.rb +44 -0
  48. data/lib/arjdbc/jdbc/extension.rb +47 -0
  49. data/lib/arjdbc/jdbc/java.rb +14 -0
  50. data/lib/{jdbc_adapter → arjdbc/jdbc}/jdbc.rake +0 -0
  51. data/lib/{jdbc_adapter → arjdbc/jdbc}/missing_functionality_helper.rb +5 -5
  52. data/lib/arjdbc/jdbc/quoted_primary_key.rb +28 -0
  53. data/lib/{jdbc_adapter → arjdbc/jdbc}/railtie.rb +1 -1
  54. data/lib/{jdbc_adapter → arjdbc/jdbc}/rake_tasks.rb +0 -0
  55. data/lib/arjdbc/jdbc/require_driver.rb +16 -0
  56. data/lib/arjdbc/jdbc/type_converter.rb +119 -0
  57. data/lib/arjdbc/mimer.rb +2 -0
  58. data/lib/{jdbc_adapter/jdbc_mimer.rb → arjdbc/mimer/adapter.rb} +16 -19
  59. data/lib/arjdbc/mssql.rb +4 -0
  60. data/lib/{jdbc_adapter/jdbc_mssql.rb → arjdbc/mssql/adapter.rb} +19 -31
  61. data/lib/arjdbc/mssql/connection_methods.rb +13 -0
  62. data/lib/{jdbc_adapter → arjdbc/mssql}/tsql_helper.rb +1 -1
  63. data/lib/arjdbc/mysql.rb +4 -0
  64. data/lib/arjdbc/mysql/adapter.rb +388 -0
  65. data/lib/arjdbc/mysql/connection_methods.rb +26 -0
  66. data/lib/arjdbc/oracle.rb +3 -0
  67. data/lib/{jdbc_adapter/jdbc_oracle.rb → arjdbc/oracle/adapter.rb} +9 -17
  68. data/lib/arjdbc/oracle/connection_methods.rb +11 -0
  69. data/lib/arjdbc/postgresql.rb +4 -0
  70. data/lib/{jdbc_adapter/jdbc_postgre.rb → arjdbc/postgresql/adapter.rb} +7 -36
  71. data/lib/arjdbc/postgresql/connection_methods.rb +21 -0
  72. data/lib/arjdbc/sqlite3.rb +4 -0
  73. data/lib/{jdbc_adapter/jdbc_sqlite3.rb → arjdbc/sqlite3/adapter.rb} +106 -104
  74. data/lib/arjdbc/sqlite3/connection_methods.rb +33 -0
  75. data/lib/arjdbc/sybase.rb +2 -0
  76. data/lib/arjdbc/sybase/adapter.rb +46 -0
  77. data/lib/arjdbc/version.rb +8 -0
  78. data/lib/jdbc_adapter.rb +2 -27
  79. data/lib/jdbc_adapter/version.rb +3 -5
  80. data/rails_generators/templates/config/initializers/jdbc.rb +1 -1
  81. data/rakelib/compile.rake +3 -2
  82. data/rakelib/package.rake +3 -3
  83. data/src/java/{jdbc_adapter/JdbcDerbySpec.java → arjdbc/derby/DerbyModule.java} +32 -32
  84. data/src/java/{jdbc_adapter/JdbcAdapterInternalService.java → arjdbc/jdbc/AdapterJavaService.java} +13 -7
  85. data/src/java/{jdbc_adapter → arjdbc/jdbc}/JdbcConnectionFactory.java +6 -6
  86. data/src/java/{jdbc_adapter → arjdbc/jdbc}/RubyJdbcConnection.java +91 -16
  87. data/src/java/arjdbc/jdbc/SQLBlock.java +48 -0
  88. data/src/java/{jdbc_adapter → arjdbc/mssql}/MssqlRubyJdbcConnection.java +5 -2
  89. data/src/java/{jdbc_adapter/JdbcMySQLSpec.java → arjdbc/mysql/MySQLModule.java} +12 -12
  90. data/src/java/{jdbc_adapter/PostgresRubyJdbcConnection.java → arjdbc/postgresql/PostgresqlRubyJdbcConnection.java} +11 -9
  91. data/src/java/arjdbc/sqlite3/Sqlite3RubyJdbcConnection.java +64 -0
  92. data/test/abstract_db_create.rb +4 -1
  93. data/test/activerecord/connection_adapters/type_conversion_test.rb +1 -1
  94. data/test/db/cachedb.rb +0 -0
  95. data/test/db/derby.rb +12 -14
  96. data/test/db/hsqldb.rb +3 -2
  97. data/test/db/jndi_config.rb +4 -4
  98. data/test/db/sqlite3.rb +2 -6
  99. data/test/db2_simple_test.rb +23 -0
  100. data/test/derby_migration_test.rb +50 -3
  101. data/test/jdbc_common.rb +1 -1
  102. data/test/jndi_callbacks_test.rb +1 -0
  103. data/test/postgres_nonseq_pkey_test.rb +0 -2
  104. data/test/postgres_schema_search_path_test.rb +0 -2
  105. data/test/simple.rb +3 -3
  106. data/test/sybase_jtds_simple_test.rb +22 -0
  107. metadata +82 -46
  108. data/lib/active_record/connection_adapters/jdbc_adapter_spec.rb +0 -26
  109. data/lib/jdbc_adapter/jdbc_adapter_internal.jar +0 -0
  110. data/lib/jdbc_adapter/jdbc_cachedb.rb +0 -33
  111. data/lib/jdbc_adapter/jdbc_mysql.rb +0 -260
  112. data/lib/jdbc_adapter/jdbc_sybase.rb +0 -50
  113. data/src/java/jdbc_adapter/SQLBlock.java +0 -27
  114. data/src/java/jdbc_adapter/Sqlite3RubyJdbcConnection.java +0 -41
  115. data/test/jdbc_adapter/jdbc_db2_test.rb +0 -26
  116. data/test/jdbc_adapter/jdbc_sybase_test.rb +0 -33
  117. data/test/minirunit.rb +0 -109
  118. data/test/minirunit/testConnect.rb +0 -14
  119. data/test/minirunit/testH2.rb +0 -73
  120. data/test/minirunit/testHsqldb.rb +0 -73
  121. data/test/minirunit/testLoadActiveRecord.rb +0 -3
  122. data/test/minirunit/testMysql.rb +0 -83
  123. data/test/minirunit/testRawSelect.rb +0 -24
@@ -1,50 +0,0 @@
1
- module JdbcSpec
2
- module Sybase
3
- def self.adapter_matcher(name, *)
4
- name =~ /sybase|tds/i ? self : false
5
- end
6
-
7
- def add_limit_offset!(sql, options) # :nodoc:
8
- @limit = options[:limit]
9
- @offset = options[:offset]
10
- if use_temp_table?
11
- # Use temp table to hack offset with Sybase
12
- sql.sub!(/ FROM /i, ' INTO #artemp FROM ')
13
- elsif zero_limit?
14
- # "SET ROWCOUNT 0" turns off limits, so we havesy
15
- # to use a cheap trick.
16
- if sql =~ /WHERE/i
17
- sql.sub!(/WHERE/i, 'WHERE 1 = 2 AND ')
18
- elsif sql =~ /ORDER\s+BY/i
19
- sql.sub!(/ORDER\s+BY/i, 'WHERE 1 = 2 ORDER BY')
20
- else
21
- sql << 'WHERE 1 = 2'
22
- end
23
- end
24
- end
25
-
26
- # If limit is not set at all, we can ignore offset;
27
- # if limit *is* set but offset is zero, use normal select
28
- # with simple SET ROWCOUNT. Thus, only use the temp table
29
- # if limit is set and offset > 0.
30
- def use_temp_table?
31
- !@limit.nil? && !@offset.nil? && @offset > 0
32
- end
33
-
34
- def zero_limit?
35
- !@limit.nil? && @limit == 0
36
- end
37
-
38
- def modify_types(tp) #:nodoc:
39
- tp[:primary_key] = "NUMERIC(22,0) IDENTITY PRIMARY KEY"
40
- tp[:integer][:limit] = nil
41
- tp[:boolean] = {:name => "bit"}
42
- tp[:binary] = {:name => "image"}
43
- tp
44
- end
45
-
46
- def remove_index(table_name, options = {})
47
- execute "DROP INDEX #{table_name}.#{index_name(table_name, options)}"
48
- end
49
- end
50
- end
@@ -1,27 +0,0 @@
1
- /*
2
- * To change this template, choose Tools | Templates
3
- * and open the template in the editor.
4
- */
5
-
6
- package jdbc_adapter;
7
-
8
- import java.sql.Connection;
9
- import java.sql.ResultSet;
10
- import java.sql.SQLException;
11
- import java.sql.Statement;
12
-
13
- /**
14
- *
15
- * @author nicksieger
16
- */
17
- public abstract class SQLBlock {
18
- abstract Object call(Connection c) throws SQLException;
19
-
20
- public void close(Statement statement) {
21
- RubyJdbcConnection.close(statement);
22
- }
23
-
24
- public void close(ResultSet resultSet) {
25
- RubyJdbcConnection.close(resultSet);
26
- }
27
- }
@@ -1,41 +0,0 @@
1
- /*
2
- * To change this template, choose Tools | Templates
3
- * and open the template in the editor.
4
- */
5
-
6
- package jdbc_adapter;
7
-
8
- import org.jruby.Ruby;
9
- import org.jruby.RubyClass;
10
- import org.jruby.runtime.ObjectAllocator;
11
- import org.jruby.runtime.ThreadContext;
12
- import org.jruby.runtime.builtin.IRubyObject;
13
-
14
- /**
15
- *
16
- * @author enebo
17
- */
18
- public class Sqlite3RubyJdbcConnection extends RubyJdbcConnection {
19
- protected Sqlite3RubyJdbcConnection(Ruby runtime, RubyClass metaClass) {
20
- super(runtime, metaClass);
21
- }
22
-
23
- public static RubyClass createSqlite3JdbcConnectionClass(Ruby runtime, RubyClass jdbcConnection) {
24
- RubyClass clazz = RubyJdbcConnection.getConnectionAdapters(runtime).defineClassUnder("Sqlite3JdbcConnection",
25
- jdbcConnection, SQLITE3_JDBCCONNECTION_ALLOCATOR);
26
- clazz.defineAnnotatedMethods(Sqlite3RubyJdbcConnection.class);
27
-
28
- return clazz;
29
- }
30
-
31
- private static ObjectAllocator SQLITE3_JDBCCONNECTION_ALLOCATOR = new ObjectAllocator() {
32
- public IRubyObject allocate(Ruby runtime, RubyClass klass) {
33
- return new Sqlite3RubyJdbcConnection(runtime, klass);
34
- }
35
- };
36
-
37
- @Override
38
- protected IRubyObject tables(ThreadContext context, String catalog, String schemaPattern, String tablePattern, String[] types) {
39
- return (IRubyObject) withConnectionAndRetry(context, tableLookupBlock(context.getRuntime(), catalog, schemaPattern, tablePattern, types, true));
40
- }
41
- }
@@ -1,26 +0,0 @@
1
- require 'java'
2
- require 'lib/jdbc_adapter/jdbc_db2'
3
- require 'test/unit'
4
-
5
- class JdbcSpec::DB2Test < Test::Unit::TestCase
6
- def setup
7
- @inst = Object.new
8
- @inst.extend JdbcSpec::DB2
9
- @column = Object.new
10
- class <<@column
11
- attr_accessor :type
12
- end
13
- end
14
-
15
- def test_quote_decimal
16
- assert_equal %q{'123.45'}, @inst.quote("123.45")
17
- @column.type = :decimal
18
- assert_equal %q{123.45}, @inst.quote("123.45", @column), "decimal columns should not have quotes"
19
- end
20
-
21
- def test_primary_key_generation
22
- @column.type = :primary_key
23
- assert_equal 'int not null generated by default as identity (start with 1) primary key', @inst.modify_types({:string => {}, :integer => {}, :boolean => {}})[:primary_key]
24
- end
25
-
26
- end
@@ -1,33 +0,0 @@
1
- require 'jdbc_common'
2
- require 'jdbc_adapter'
3
-
4
- class MockConnection
5
-
6
- def adapter=( adapt )
7
- end
8
-
9
- end
10
-
11
- module ActiveRecord
12
- module ConnectionAdapters
13
-
14
- class SybaseAdapterSelectionTest < Test::Unit::TestCase
15
-
16
- def testJtdsSelectionUsingDialect()
17
- config = {
18
- :driver => 'net.sourceforge.jtds.Driver',
19
- :dialect => 'sybase'
20
- }
21
- adapt = JdbcAdapter.new(MockConnection.new, nil, config)
22
- assert adapt.kind_of?(JdbcSpec::Sybase), "Should be a sybase adapter"
23
- end
24
-
25
- def testJtdsSelectionNotUsingDialect
26
- config = { :driver => 'net.sourceforge.jtds.Driver' }
27
- adapt = JdbcAdapter.new(MockConnection.new, nil, config)
28
- assert adapt.kind_of?(JdbcSpec::MsSQL), "Should be a MsSQL apdater"
29
- end
30
-
31
- end
32
- end
33
- end
@@ -1,109 +0,0 @@
1
-
2
- $silentTests = false
3
- $testnum=0
4
- $ntest=0
5
- $failed = []
6
- $curtestOK=true
7
-
8
- module MiniRUnit
9
- class Failure
10
- def initialize(what, testnum, msg, where)
11
- @what, @testnum, @msg, @where = what, testnum, msg, where
12
- end
13
-
14
- def to_s
15
- sprintf("FAILED %s %d %s-- %s\n", @what, @testnum, @msg, @where)
16
- end
17
- end
18
-
19
- class Error
20
- def initialize(what, testnum, boom)
21
- @what, @testnum, @boom = what, testnum, boom
22
- end
23
-
24
- def to_s
25
- sprintf("EXCEPTION raised %s %d -- \n\tException: %s\n\t%s",
26
- @what, @testnum, @boom.to_s, @boom.backtrace.join("\n\t"))
27
- end
28
- end
29
- end
30
-
31
-
32
- def test_check(what)
33
- printf "%s : ", what unless $silentTests
34
- $what = what
35
- $testnum = 0
36
- end
37
-
38
- def test_ok(cond, msg="")
39
- $testnum+=1
40
- $ntest+=1
41
- if cond
42
- print "." unless $silentTests
43
- else
44
- where = caller.reject {|where| where =~ /minirunit/}[0]
45
- $failed.push(MiniRUnit::Failure.new($what, $testnum, msg, where))
46
- print "F" unless $silentTests
47
- $curtestOK=false
48
- end
49
- end
50
-
51
- def test_fail(msg="")
52
- test_ok(false, msg)
53
- end
54
-
55
- def test_equal(a,b)
56
- test_ok(a == b, "expected #{a.inspect}, found #{b.inspect}")
57
- end
58
-
59
- def test_no_exception(&proc)
60
- raised = false
61
- begin
62
- proc.call
63
- rescue exception
64
- raised = x
65
- end
66
- test_ok(!raised, "unexpected exception #{raised}")
67
- end
68
-
69
- def test_exception(type=Exception, &proc)
70
- raised = false
71
- begin
72
- proc.call
73
- rescue type=>e
74
- raised = true
75
- end
76
- test_ok(raised, "#{type} expected")
77
- e
78
- end
79
-
80
- def test_get_last_failed
81
- if $failed.empty?
82
- return nil
83
- end
84
- return $failed.last
85
- end
86
-
87
- def test_print_report
88
- puts
89
- puts "-" * 80
90
- $failed.each { |error| puts error }
91
- puts "-" * 80
92
- puts "Tests: #$ntest. (Ok: #{$ntest - $failed.size}; Failed: #{$failed.size})"
93
- end
94
-
95
- def test_load(test)
96
- begin
97
- $curtestOK=true
98
- load(test)
99
- rescue Exception => boom
100
- puts 'ERROR' unless $silentTests
101
- $failed.push(MiniRUnit::Error.new($what, $testnum, boom))
102
- else
103
- if $curtestOK
104
- puts 'OK' unless $silentTests
105
- else
106
- puts 'FAILED' unless $silentTests
107
- end
108
- end
109
- end
@@ -1,14 +0,0 @@
1
- require 'test/minirunit'
2
- RAILS_CONNECTION_ADAPTERS = ['abstract', 'jdbc']
3
- require 'active_record'
4
-
5
- connspec = ActiveRecord::Base.establish_connection(
6
- :adapter => 'jdbc',
7
- :driver => 'com.mysql.jdbc.Driver',
8
- :url => 'jdbc:mysql://localhost:3306/test',
9
- :username => 'rlsmgr',
10
- :password => ''
11
- )
12
-
13
- puts "#{connspec}"
14
- puts "#{ActiveRecord::Base.connection}"
@@ -1,73 +0,0 @@
1
-
2
- require 'minirunit'
3
-
4
- config = {
5
- :adapter => 'jdbc',
6
- :username => 'sa',
7
- :password => '',
8
- :driver => 'org.h2.Driver',
9
- :url => 'jdbc:h2:test.db'
10
- }
11
- RAILS_CONNECTION_ADAPTERS = ['abstract', 'jdbc']
12
-
13
- require 'active_record'
14
-
15
- ActiveRecord::Base.establish_connection(config)
16
- require 'logger'
17
- ActiveRecord::Base.logger = Logger.new($stdout)
18
- ActiveRecord::Base.logger.level = Logger::DEBUG
19
-
20
- class CreateEntries < ActiveRecord::Migration
21
- def self.up
22
- create_table "entries", :force => true do |t|
23
- t.column :title, :string, :limit => 100
24
- t.column :updated_on, :datetime
25
- t.column :content, :text
26
- end
27
- end
28
-
29
- def self.down
30
- drop_table "entries"
31
- end
32
- end
33
-
34
- CreateEntries.up
35
-
36
- test_ok ActiveRecord::Base.connection.tables.include?('entries')
37
-
38
- class Entry < ActiveRecord::Base
39
- end
40
-
41
- Entry.delete_all
42
-
43
- test_equal 0, Entry.count
44
-
45
- TITLE = "First post!"
46
- CONTENT = "Hello from JRuby on Rails!"
47
- NEW_TITLE = "First post updated title"
48
-
49
- post = Entry.new
50
- post.title = TITLE
51
- post.content = CONTENT
52
- post.save
53
-
54
- test_equal 1, Entry.count
55
-
56
- post = Entry.find(:first)
57
- test_equal TITLE, post.title
58
- test_equal CONTENT, post.content
59
-
60
- post.title = NEW_TITLE
61
- post.save
62
-
63
- post = Entry.find(:first)
64
- test_equal NEW_TITLE, post.title
65
-
66
- post.destroy
67
-
68
- test_equal 0, Entry.count
69
-
70
- CreateEntries.down
71
-
72
- # Clean up hsqldb when done
73
- Dir['test.db*'].each {|f| File.delete(f)}
@@ -1,73 +0,0 @@
1
-
2
- require 'minirunit'
3
-
4
- config = {
5
- :adapter => 'jdbc',
6
- :username => 'sa',
7
- :password => '',
8
- :driver => 'org.hsqldb.jdbcDriver',
9
- :url => 'jdbc:hsqldb:test.db'
10
- }
11
- RAILS_CONNECTION_ADAPTERS = ['abstract', 'jdbc']
12
-
13
- require 'active_record'
14
-
15
- ActiveRecord::Base.establish_connection(config)
16
- require 'logger'
17
- ActiveRecord::Base.logger = Logger.new($stdout)
18
- ActiveRecord::Base.logger.level = Logger::DEBUG
19
-
20
- class CreateEntries < ActiveRecord::Migration
21
- def self.up
22
- create_table "entries", :force => true do |t|
23
- t.column :title, :string, :limit => 100
24
- t.column :updated_on, :datetime
25
- t.column :content, :text
26
- end
27
- end
28
-
29
- def self.down
30
- drop_table "entries"
31
- end
32
- end
33
-
34
- CreateEntries.up
35
-
36
- test_ok ActiveRecord::Base.connection.tables.include?('entries')
37
-
38
- class Entry < ActiveRecord::Base
39
- end
40
-
41
- Entry.delete_all
42
-
43
- test_equal 0, Entry.count
44
-
45
- TITLE = "First post!"
46
- CONTENT = "Hello from JRuby on Rails!"
47
- NEW_TITLE = "First post updated title"
48
-
49
- post = Entry.new
50
- post.title = TITLE
51
- post.content = CONTENT
52
- post.save
53
-
54
- test_equal 1, Entry.count
55
-
56
- post = Entry.find(:first)
57
- test_equal TITLE, post.title
58
- test_equal CONTENT, post.content
59
-
60
- post.title = NEW_TITLE
61
- post.save
62
-
63
- post = Entry.find(:first)
64
- test_equal NEW_TITLE, post.title
65
-
66
- post.destroy
67
-
68
- test_equal 0, Entry.count
69
-
70
- CreateEntries.down
71
-
72
- # Clean up hsqldb when done
73
- Dir['test.db*'].each {|f| File.delete(f)}