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
@@ -0,0 +1,48 @@
1
+ /*
2
+ **** BEGIN LICENSE BLOCK *****
3
+ * Copyright (c) 2006-2010 Nick Sieger <nick@nicksieger.com>
4
+ * Copyright (c) 2006-2007 Ola Bini <ola.bini@gmail.com>
5
+ * Copyright (c) 2008-2009 Thomas E Enebo <enebo@acm.org>
6
+ *
7
+ * Permission is hereby granted, free of charge, to any person obtaining
8
+ * a copy of this software and associated documentation files (the
9
+ * "Software"), to deal in the Software without restriction, including
10
+ * without limitation the rights to use, copy, modify, merge, publish,
11
+ * distribute, sublicense, and/or sell copies of the Software, and to
12
+ * permit persons to whom the Software is furnished to do so, subject to
13
+ * the following conditions:
14
+ *
15
+ * The above copyright notice and this permission notice shall be
16
+ * included in all copies or substantial portions of the Software.
17
+ *
18
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
19
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
20
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
21
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
22
+ * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
23
+ * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
24
+ * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
25
+ ***** END LICENSE BLOCK *****/
26
+
27
+ package arjdbc.jdbc;
28
+
29
+ import java.sql.Connection;
30
+ import java.sql.ResultSet;
31
+ import java.sql.SQLException;
32
+ import java.sql.Statement;
33
+
34
+ /**
35
+ *
36
+ * @author nicksieger
37
+ */
38
+ public abstract class SQLBlock {
39
+ abstract Object call(Connection c) throws SQLException;
40
+
41
+ public void close(Statement statement) {
42
+ RubyJdbcConnection.close(statement);
43
+ }
44
+
45
+ public void close(ResultSet resultSet) {
46
+ RubyJdbcConnection.close(resultSet);
47
+ }
48
+ }
@@ -1,6 +1,6 @@
1
1
  /*
2
2
  **** BEGIN LICENSE BLOCK *****
3
- * Copyright (c) 2006-2009 Nick Sieger <nick@nicksieger.com>
3
+ * Copyright (c) 2006-2010 Nick Sieger <nick@nicksieger.com>
4
4
  * Copyright (c) 2006-2007 Ola Bini <ola.bini@gmail.com>
5
5
  * Copyright (c) 2008-2009 Thomas E Enebo <enebo@acm.org>
6
6
  *
@@ -23,11 +23,14 @@
23
23
  * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
24
24
  * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
25
25
  ***** END LICENSE BLOCK *****/
26
- package jdbc_adapter;
26
+ package arjdbc.mssql;
27
27
 
28
28
  import java.sql.ResultSet;
29
29
  import java.sql.SQLException;
30
30
  import java.sql.Types;
31
+
32
+ import arjdbc.jdbc.RubyJdbcConnection;
33
+
31
34
  import org.jruby.Ruby;
32
35
  import org.jruby.RubyClass;
33
36
  import org.jruby.runtime.ObjectAllocator;
@@ -1,7 +1,7 @@
1
1
  /***** BEGIN LICENSE BLOCK *****
2
- * Copyright (c) 2006-2009 Nick Sieger <nick@nicksieger.com>
2
+ * Copyright (c) 2006-2010 Nick Sieger <nick@nicksieger.com>
3
3
  * Copyright (c) 2006-2007 Ola Bini <ola.bini@gmail.com>
4
- *
4
+ *
5
5
  * Permission is hereby granted, free of charge, to any person obtaining
6
6
  * a copy of this software and associated documentation files (the
7
7
  * "Software"), to deal in the Software without restriction, including
@@ -9,10 +9,10 @@
9
9
  * distribute, sublicense, and/or sell copies of the Software, and to
10
10
  * permit persons to whom the Software is furnished to do so, subject to
11
11
  * the following conditions:
12
- *
12
+ *
13
13
  * The above copyright notice and this permission notice shall be
14
14
  * included in all copies or substantial portions of the Software.
15
- *
15
+ *
16
16
  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
17
  * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
18
  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
@@ -22,7 +22,7 @@
22
22
  * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23
23
  ***** END LICENSE BLOCK *****/
24
24
 
25
- package jdbc_adapter;
25
+ package arjdbc.mysql;
26
26
 
27
27
  import java.sql.Connection;
28
28
 
@@ -35,10 +35,10 @@ import org.jruby.runtime.builtin.IRubyObject;
35
35
 
36
36
  import org.jruby.util.ByteList;
37
37
 
38
- public class JdbcMySQLSpec {
39
- public static void load(RubyModule jdbcSpec) {
40
- RubyModule mysql = jdbcSpec.defineModuleUnder("MySQL");
41
- mysql.defineAnnotatedMethods(JdbcMySQLSpec.class);
38
+ public class MySQLModule {
39
+ public static void load(RubyModule arJdbc) {
40
+ RubyModule mysql = arJdbc.defineModuleUnder("MySQL");
41
+ mysql.defineAnnotatedMethods(MySQLModule.class);
42
42
  }
43
43
 
44
44
  private final static byte BACKQUOTE = '`';
@@ -56,9 +56,9 @@ public class JdbcMySQLSpec {
56
56
  public static IRubyObject quote_string(ThreadContext context, IRubyObject recv, IRubyObject string) {
57
57
  ByteList bytes = ((RubyString) string).getByteList();
58
58
  ByteList newBytes = new ByteList();
59
-
59
+
60
60
  newBytes.append(bytes);
61
-
61
+
62
62
  for(int i = newBytes.begin; i < newBytes.begin + newBytes.realSize; i++) {
63
63
  byte[] rep = null;
64
64
  switch (newBytes.bytes[i]) {
@@ -94,7 +94,7 @@ public class JdbcMySQLSpec {
94
94
 
95
95
  return context.getRuntime().newString(newBytes);
96
96
  }
97
-
97
+
98
98
  @JRubyMethod(name = "quote_table_name", frame=false)
99
99
  public static IRubyObject quote_table_name(ThreadContext context, IRubyObject recv, IRubyObject arg) {
100
100
  ByteList bytes = arg.asString().getByteList();
@@ -1,6 +1,6 @@
1
1
  /*
2
2
  **** BEGIN LICENSE BLOCK *****
3
- * Copyright (c) 2006-2009 Nick Sieger <nick@nicksieger.com>
3
+ * Copyright (c) 2006-2010 Nick Sieger <nick@nicksieger.com>
4
4
  * Copyright (c) 2006-2007 Ola Bini <ola.bini@gmail.com>
5
5
  * Copyright (c) 2008-2009 Thomas E Enebo <enebo@acm.org>
6
6
  *
@@ -23,7 +23,9 @@
23
23
  * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
24
24
  * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
25
25
  ***** END LICENSE BLOCK *****/
26
- package jdbc_adapter;
26
+ package arjdbc.postgresql;
27
+
28
+ import arjdbc.jdbc.RubyJdbcConnection;
27
29
 
28
30
  import org.jruby.Ruby;
29
31
  import org.jruby.RubyClass;
@@ -34,22 +36,22 @@ import org.jruby.runtime.builtin.IRubyObject;
34
36
  *
35
37
  * @author enebo
36
38
  */
37
- public class PostgresRubyJdbcConnection extends RubyJdbcConnection {
38
- protected PostgresRubyJdbcConnection(Ruby runtime, RubyClass metaClass) {
39
+ public class PostgresqlRubyJdbcConnection extends RubyJdbcConnection {
40
+ protected PostgresqlRubyJdbcConnection(Ruby runtime, RubyClass metaClass) {
39
41
  super(runtime, metaClass);
40
42
  }
41
43
 
42
- public static RubyClass createPostgresJdbcConnectionClass(Ruby runtime, RubyClass jdbcConnection) {
44
+ public static RubyClass createPostgresqlJdbcConnectionClass(Ruby runtime, RubyClass jdbcConnection) {
43
45
  RubyClass clazz = RubyJdbcConnection.getConnectionAdapters(runtime).defineClassUnder("PostgresJdbcConnection",
44
- jdbcConnection, POSTGRES_JDBCCONNECTION_ALLOCATOR);
45
- clazz.defineAnnotatedMethods(PostgresRubyJdbcConnection.class);
46
+ jdbcConnection, POSTGRESQL_JDBCCONNECTION_ALLOCATOR);
47
+ clazz.defineAnnotatedMethods(PostgresqlRubyJdbcConnection.class);
46
48
 
47
49
  return clazz;
48
50
  }
49
51
 
50
- private static ObjectAllocator POSTGRES_JDBCCONNECTION_ALLOCATOR = new ObjectAllocator() {
52
+ private static ObjectAllocator POSTGRESQL_JDBCCONNECTION_ALLOCATOR = new ObjectAllocator() {
51
53
  public IRubyObject allocate(Ruby runtime, RubyClass klass) {
52
- return new PostgresRubyJdbcConnection(runtime, klass);
54
+ return new PostgresqlRubyJdbcConnection(runtime, klass);
53
55
  }
54
56
  };
55
57
  }
@@ -0,0 +1,64 @@
1
+ /*
2
+ **** BEGIN LICENSE BLOCK *****
3
+ * Copyright (c) 2006-2010 Nick Sieger <nick@nicksieger.com>
4
+ * Copyright (c) 2006-2007 Ola Bini <ola.bini@gmail.com>
5
+ * Copyright (c) 2008-2009 Thomas E Enebo <enebo@acm.org>
6
+ *
7
+ * Permission is hereby granted, free of charge, to any person obtaining
8
+ * a copy of this software and associated documentation files (the
9
+ * "Software"), to deal in the Software without restriction, including
10
+ * without limitation the rights to use, copy, modify, merge, publish,
11
+ * distribute, sublicense, and/or sell copies of the Software, and to
12
+ * permit persons to whom the Software is furnished to do so, subject to
13
+ * the following conditions:
14
+ *
15
+ * The above copyright notice and this permission notice shall be
16
+ * included in all copies or substantial portions of the Software.
17
+ *
18
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
19
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
20
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
21
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
22
+ * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
23
+ * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
24
+ * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
25
+ ***** END LICENSE BLOCK *****/
26
+
27
+ package arjdbc.sqlite3;
28
+
29
+ import arjdbc.jdbc.RubyJdbcConnection;
30
+
31
+ import org.jruby.Ruby;
32
+ import org.jruby.RubyClass;
33
+ import org.jruby.runtime.ObjectAllocator;
34
+ import org.jruby.runtime.ThreadContext;
35
+ import org.jruby.runtime.builtin.IRubyObject;
36
+
37
+ /**
38
+ *
39
+ * @author enebo
40
+ */
41
+ public class Sqlite3RubyJdbcConnection extends RubyJdbcConnection {
42
+ protected Sqlite3RubyJdbcConnection(Ruby runtime, RubyClass metaClass) {
43
+ super(runtime, metaClass);
44
+ }
45
+
46
+ public static RubyClass createSqlite3JdbcConnectionClass(Ruby runtime, RubyClass jdbcConnection) {
47
+ RubyClass clazz = RubyJdbcConnection.getConnectionAdapters(runtime).defineClassUnder("Sqlite3JdbcConnection",
48
+ jdbcConnection, SQLITE3_JDBCCONNECTION_ALLOCATOR);
49
+ clazz.defineAnnotatedMethods(Sqlite3RubyJdbcConnection.class);
50
+
51
+ return clazz;
52
+ }
53
+
54
+ private static ObjectAllocator SQLITE3_JDBCCONNECTION_ALLOCATOR = new ObjectAllocator() {
55
+ public IRubyObject allocate(Ruby runtime, RubyClass klass) {
56
+ return new Sqlite3RubyJdbcConnection(runtime, klass);
57
+ }
58
+ };
59
+
60
+ @Override
61
+ protected IRubyObject tables(ThreadContext context, String catalog, String schemaPattern, String tablePattern, String[] types) {
62
+ return (IRubyObject) withConnectionAndRetry(context, tableLookupBlock(context.getRuntime(), catalog, schemaPattern, tablePattern, types, true));
63
+ }
64
+ }
@@ -9,6 +9,9 @@ module Rails
9
9
  @config ||= Object.new
10
10
  end
11
11
  end
12
+ def self.application
13
+ Rails::Application
14
+ end
12
15
  end
13
16
 
14
17
  module AbstractDbCreate
@@ -22,7 +25,7 @@ module AbstractDbCreate
22
25
  setup_rails
23
26
  set_rails_constant("env", "unittest")
24
27
  set_rails_constant("root", ".")
25
- load File.dirname(__FILE__) + '/../lib/jdbc_adapter/jdbc.rake' if jruby?
28
+ load File.dirname(__FILE__) + '/../lib/arjdbc/jdbc/jdbc.rake' if jruby?
26
29
  task :environment do
27
30
  ActiveRecord::Base.configurations = configurations
28
31
  end
@@ -1,6 +1,6 @@
1
1
  require 'java'
2
2
  require 'models/data_types'
3
- require 'active_record/connection_adapters/jdbc_adapter'
3
+ require 'arjdbc'
4
4
  require 'db/derby'
5
5
  require 'test/unit'
6
6
 
File without changes
@@ -1,14 +1,12 @@
1
- require 'logger'
2
-
3
- config = {
4
- :adapter => 'derby',
5
- :database => "derby-testdb"
6
- }
7
-
8
- ActiveRecord::Base.establish_connection(config)
9
-
10
- at_exit {
11
- # Clean up derby files
12
- require 'fileutils'
13
- FileUtils.rm_rf('derby-testdb')
14
- }
1
+ config = {
2
+ :adapter => 'derby',
3
+ :database => "derby-testdb"
4
+ }
5
+
6
+ ActiveRecord::Base.establish_connection(config)
7
+
8
+ at_exit {
9
+ # Clean up derby files
10
+ require 'fileutils'
11
+ FileUtils.rm_rf('derby-testdb')
12
+ }
@@ -7,6 +7,7 @@ ActiveRecord::Base.establish_connection(config)
7
7
 
8
8
  at_exit {
9
9
  # Clean up hsqldb when done
10
- Dir['test.db*'].each {|f| File.delete(f)}
11
- File.delete('hsqldb-testdb.log') rescue nil #can't delete on windows
10
+ require "fileutils"
11
+ Dir['test.db*'].each {|f| FileUtils.rm_rf(f)}
12
+ FileUtils.rm_rf('hsqldb-testdb.log') rescue nil #can't delete on windows
12
13
  }
@@ -1,12 +1,12 @@
1
1
  require 'fileutils'
2
- require 'active_record/connection_adapters/jdbc_adapter'
2
+ require 'arjdbc'
3
3
 
4
4
  System = java.lang.System
5
5
  Context = javax.naming.Context
6
6
  InitialContext = javax.naming.InitialContext
7
7
  Reference = javax.naming.Reference
8
8
  StringRefAddr = javax.naming.StringRefAddr
9
-
9
+
10
10
  System.set_property(Context::INITIAL_CONTEXT_FACTORY,
11
11
  'com.sun.jndi.fscontext.RefFSContextFactory')
12
12
  project_path = File.expand_path(File.dirname(__FILE__) + '/../..')
@@ -18,9 +18,9 @@ System.set_property(Context::PROVIDER_URL, "file://#{jndi_dir}")
18
18
  derby_ref = Reference.new('javax.sql.DataSource',
19
19
  'org.apache.commons.dbcp.BasicDataSourceFactory',
20
20
  nil)
21
- derby_ref.add StringRefAddr.new('driverClassName',
21
+ derby_ref.add StringRefAddr.new('driverClassName',
22
22
  'org.apache.derby.jdbc.EmbeddedDriver')
23
- derby_ref.add StringRefAddr.new('url',
23
+ derby_ref.add StringRefAddr.new('url',
24
24
  'jdbc:derby:derby-testdb;create=true')
25
25
  derby_ref.add StringRefAddr.new('username', 'sa')
26
26
  derby_ref.add StringRefAddr.new('password', '')
@@ -1,10 +1,6 @@
1
- require 'jdbc/sqlite3' if jruby?
2
-
3
1
  config = {
4
- :adapter => jruby? ? 'jdbcsqlite3' : 'sqlite3',
5
- :dbfile => 'test.sqlite3.db'
6
- # :url => 'jdbc:sqlite:test.sqlite3.db',
7
- # :driver => 'org.sqlite.JDBC'
2
+ :adapter => 'sqlite3',
3
+ :database => 'test.sqlite3.db'
8
4
  }
9
5
 
10
6
  ActiveRecord::Base.establish_connection(config)
@@ -8,3 +8,26 @@ end
8
8
  class DB2HasManyThroughTest < Test::Unit::TestCase
9
9
  include HasManyThroughMethods
10
10
  end
11
+
12
+ class DB2Test < Test::Unit::TestCase
13
+ def setup
14
+ @inst = Object.new
15
+ @inst.extend ArJdbc::DB2
16
+ @column = Object.new
17
+ class << @column
18
+ attr_accessor :type
19
+ end
20
+ end
21
+
22
+ def test_quote_decimal
23
+ assert_equal %q{'123.45'}, @inst.quote("123.45")
24
+ @column.type = :decimal
25
+ assert_equal %q{123.45}, @inst.quote("123.45", @column), "decimal columns should not have quotes"
26
+ end
27
+
28
+ def test_primary_key_generation
29
+ @column.type = :primary_key
30
+ assert_equal 'int not null generated by default as identity (start with 1) primary key', @inst.modify_types({:string => {}, :integer => {}, :boolean => {}})[:primary_key]
31
+ end
32
+
33
+ end
@@ -8,14 +8,61 @@ class CreateDummies < ActiveRecord::Migration
8
8
  end
9
9
  add_index :dummies, :year, :unique => true
10
10
  end
11
-
11
+
12
+ end
13
+
14
+ class ChangeColumn < ActiveRecord::Migration
15
+ def self.up
16
+ create_table :people, :id => false, :force => true do |t|
17
+ t.string :id, :limit => 22, :null => false
18
+ t.string :name, :null => false
19
+ end
20
+ change_column(:people, :name, :string, {:limit=>22})
21
+ execute("SELECT id FROM people WHERE id = 'some string'")
22
+ end
23
+
24
+ def self.down
25
+ end
26
+
27
+ end
28
+
29
+ class CreateIndex < ActiveRecord::Migration
30
+ def self.up
31
+ create_table :people, :id => false, :force => true do |t|
32
+ t.string :id, :limit => 22, :null => false
33
+ t.string :first_name, :null => false
34
+ t.string :last_name, :null => false
35
+ t.string :nickname, :null => false
36
+ t.string :long_name, :null => false
37
+ t.string :very_long_name, :null => false
38
+ t.string :extremely_long_name, :null => false
39
+ end
40
+
41
+ add_index(:people, [:first_name, :last_name, :nickname, :long_name, :very_long_name, :extremely_long_name], :unique => true)
42
+
43
+ remove_index(:people, [:first_name, :last_name, :nickname, :long_name, :very_long_name, :extremely_long_name])
44
+ end
45
+
46
+ def self.down
47
+ end
48
+
12
49
  end
13
50
 
14
- class DerbyQuotingTest < Test::Unit::TestCase
51
+ class DerbyMigrationTest < Test::Unit::TestCase
15
52
  include FixtureSetup
16
53
 
17
54
  def test_create_table_column_quoting_vs_keywords
18
55
  CreateDummies.up
19
56
  end
20
-
57
+
58
+ def test_migrate_change_column_for_non_standard_id
59
+ ChangeColumn.up
60
+ ChangeColumn.down
61
+ end
62
+
63
+ def test_migrate_create_index
64
+ CreateIndex.up
65
+ CreateIndex.down
66
+ end
67
+
21
68
  end