activerecord-jdbc-adapter 1.3.7 → 1.3.8
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +33 -3
- data/Appraisals +11 -5
- data/Gemfile +21 -15
- data/History.md +31 -1
- data/lib/active_record/connection_adapters/mariadb_adapter.rb +1 -0
- data/lib/arel/visitors/firebird.rb +7 -10
- data/lib/arel/visitors/h2.rb +9 -0
- data/lib/arel/visitors/sql_server.rb +21 -2
- data/lib/arjdbc/h2/adapter.rb +31 -2
- data/lib/arjdbc/h2/connection_methods.rb +1 -1
- data/lib/arjdbc/jdbc/adapter_java.jar +0 -0
- data/lib/arjdbc/jdbc/column.rb +2 -1
- data/lib/arjdbc/mssql/adapter.rb +40 -23
- data/lib/arjdbc/mssql/column.rb +4 -4
- data/lib/arjdbc/mysql/adapter.rb +36 -10
- data/lib/arjdbc/mysql/column.rb +12 -7
- data/lib/arjdbc/mysql/connection_methods.rb +53 -21
- data/lib/arjdbc/oracle/adapter.rb +22 -5
- data/lib/arjdbc/postgresql/adapter.rb +54 -18
- data/lib/arjdbc/postgresql/base/array_parser.rb +95 -0
- data/lib/arjdbc/postgresql/base/oid.rb +460 -0
- data/lib/arjdbc/postgresql/column.rb +50 -15
- data/lib/arjdbc/postgresql/oid_types.rb +126 -0
- data/lib/arjdbc/tasks/h2_database_tasks.rb +4 -2
- data/lib/arjdbc/version.rb +1 -1
- data/rakelib/02-test.rake +3 -30
- data/src/java/arjdbc/derby/DerbyModule.java +0 -8
- data/src/java/arjdbc/derby/DerbyRubyJdbcConnection.java +1 -0
- data/src/java/arjdbc/h2/H2RubyJdbcConnection.java +2 -0
- data/src/java/arjdbc/jdbc/RubyJdbcConnection.java +8 -8
- data/src/java/arjdbc/mssql/MSSQLModule.java +50 -19
- data/src/java/arjdbc/mssql/MSSQLRubyJdbcConnection.java +1 -0
- data/src/java/arjdbc/mysql/MySQLRubyJdbcConnection.java +6 -6
- data/src/java/arjdbc/oracle/OracleModule.java +1 -1
- data/src/java/arjdbc/oracle/OracleRubyJdbcConnection.java +66 -2
- data/src/java/arjdbc/postgresql/PostgreSQLRubyJdbcConnection.java +23 -10
- data/src/java/arjdbc/sqlite3/SQLite3RubyJdbcConnection.java +1 -0
- data/src/java/arjdbc/util/CallResultSet.java +826 -0
- data/src/java/arjdbc/util/QuotingUtils.java +14 -7
- metadata +8 -3
- data/lib/arjdbc/postgresql/array_parser.rb +0 -89
@@ -23,7 +23,6 @@
|
|
23
23
|
*/
|
24
24
|
package arjdbc.util;
|
25
25
|
|
26
|
-
import org.jruby.Ruby;
|
27
26
|
import org.jruby.RubyString;
|
28
27
|
import org.jruby.runtime.ThreadContext;
|
29
28
|
import org.jruby.runtime.builtin.IRubyObject;
|
@@ -49,6 +48,15 @@ public abstract class QuotingUtils {
|
|
49
48
|
final ThreadContext context,
|
50
49
|
final RubyString string,
|
51
50
|
final char value, final char quote) {
|
51
|
+
return quoteCharWith(context, string, value, quote, 0, 8);
|
52
|
+
}
|
53
|
+
|
54
|
+
@SuppressWarnings("deprecation")
|
55
|
+
public static RubyString quoteCharWith(
|
56
|
+
final ThreadContext context,
|
57
|
+
final RubyString string,
|
58
|
+
final char value, final char quote,
|
59
|
+
final int newOffset, final int newSizeDiff) {
|
52
60
|
|
53
61
|
final ByteList stringBytes = string.getByteList();
|
54
62
|
final byte[] bytes = stringBytes.unsafeBytes();
|
@@ -60,11 +68,11 @@ public abstract class QuotingUtils {
|
|
60
68
|
if ( bytes[i] == value ) {
|
61
69
|
if ( quotedBytes == null ) {
|
62
70
|
quotedBytes = new ByteList(
|
63
|
-
new byte[realSize +
|
64
|
-
stringBytes.getEncoding()
|
71
|
+
new byte[realSize + newOffset + newSizeDiff],
|
72
|
+
stringBytes.getEncoding(), false
|
65
73
|
);
|
66
|
-
quotedBytes.
|
67
|
-
quotedBytes.
|
74
|
+
quotedBytes.begin = newOffset;
|
75
|
+
quotedBytes.realSize = 0;
|
68
76
|
}
|
69
77
|
quotedBytes.append(bytes, appendFrom, i - appendFrom);
|
70
78
|
quotedBytes.append(quote).append(value); // e.g. "'" => "''"
|
@@ -76,8 +84,7 @@ public abstract class QuotingUtils {
|
|
76
84
|
}
|
77
85
|
else return string; // nothing changed, can return original
|
78
86
|
|
79
|
-
|
80
|
-
return runtime.newString(quotedBytes);
|
87
|
+
return context.getRuntime().newString(quotedBytes);
|
81
88
|
}
|
82
89
|
|
83
90
|
public static final ByteList BYTES_SINGLE_Q = new ByteList(new byte[] { '\'' }, false);
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: activerecord-jdbc-adapter
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.3.
|
4
|
+
version: 1.3.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nick Sieger, Ola Bini, Karol Bucek and JRuby contributors
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-06-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activerecord
|
@@ -60,6 +60,7 @@ files:
|
|
60
60
|
- lib/active_record/connection_adapters/informix_adapter.rb
|
61
61
|
- lib/active_record/connection_adapters/jdbc_adapter.rb
|
62
62
|
- lib/active_record/connection_adapters/jndi_adapter.rb
|
63
|
+
- lib/active_record/connection_adapters/mariadb_adapter.rb
|
63
64
|
- lib/active_record/connection_adapters/mssql_adapter.rb
|
64
65
|
- lib/active_record/connection_adapters/mysql2_adapter.rb
|
65
66
|
- lib/active_record/connection_adapters/mysql_adapter.rb
|
@@ -72,6 +73,7 @@ files:
|
|
72
73
|
- lib/arel/visitors/db2.rb
|
73
74
|
- lib/arel/visitors/derby.rb
|
74
75
|
- lib/arel/visitors/firebird.rb
|
76
|
+
- lib/arel/visitors/h2.rb
|
75
77
|
- lib/arel/visitors/hsqldb.rb
|
76
78
|
- lib/arel/visitors/sql_server.rb
|
77
79
|
- lib/arjdbc.rb
|
@@ -142,10 +144,12 @@ files:
|
|
142
144
|
- lib/arjdbc/oracle/connection_methods.rb
|
143
145
|
- lib/arjdbc/postgresql.rb
|
144
146
|
- lib/arjdbc/postgresql/adapter.rb
|
145
|
-
- lib/arjdbc/postgresql/array_parser.rb
|
147
|
+
- lib/arjdbc/postgresql/base/array_parser.rb
|
148
|
+
- lib/arjdbc/postgresql/base/oid.rb
|
146
149
|
- lib/arjdbc/postgresql/column.rb
|
147
150
|
- lib/arjdbc/postgresql/connection_methods.rb
|
148
151
|
- lib/arjdbc/postgresql/explain_support.rb
|
152
|
+
- lib/arjdbc/postgresql/oid_types.rb
|
149
153
|
- lib/arjdbc/postgresql/schema_creation.rb
|
150
154
|
- lib/arjdbc/railtie.rb
|
151
155
|
- lib/arjdbc/sqlite3.rb
|
@@ -212,6 +216,7 @@ files:
|
|
212
216
|
- src/java/arjdbc/sqlite3/SQLite3Module.java
|
213
217
|
- src/java/arjdbc/sqlite3/SQLite3RubyJdbcConnection.java
|
214
218
|
- src/java/arjdbc/sqlite3/Sqlite3RubyJdbcConnection.java
|
219
|
+
- src/java/arjdbc/util/CallResultSet.java
|
215
220
|
- src/java/arjdbc/util/QuotingUtils.java
|
216
221
|
homepage: https://github.com/jruby/activerecord-jdbc-adapter
|
217
222
|
licenses:
|
@@ -1,89 +0,0 @@
|
|
1
|
-
module ArJdbc
|
2
|
-
module PostgreSQL
|
3
|
-
module ArrayParser
|
4
|
-
|
5
|
-
def parse_pg_array(string)
|
6
|
-
parse_data(string, 0)
|
7
|
-
end
|
8
|
-
|
9
|
-
private
|
10
|
-
|
11
|
-
def parse_data(string, index)
|
12
|
-
local_index = index
|
13
|
-
array = []
|
14
|
-
while(local_index < string.length)
|
15
|
-
case string[local_index]
|
16
|
-
when '{'
|
17
|
-
local_index,array = parse_array_contents(array, string, local_index + 1)
|
18
|
-
when '}'
|
19
|
-
return array
|
20
|
-
end
|
21
|
-
local_index += 1
|
22
|
-
end
|
23
|
-
|
24
|
-
array
|
25
|
-
end
|
26
|
-
|
27
|
-
def parse_array_contents(array, string, index)
|
28
|
-
is_escaping = false
|
29
|
-
is_quoted = false
|
30
|
-
was_quoted = false
|
31
|
-
current_item = ''
|
32
|
-
|
33
|
-
local_index = index
|
34
|
-
while local_index
|
35
|
-
token = string[local_index]
|
36
|
-
if is_escaping
|
37
|
-
current_item << token
|
38
|
-
is_escaping = false
|
39
|
-
else
|
40
|
-
if is_quoted
|
41
|
-
case token
|
42
|
-
when '"'
|
43
|
-
is_quoted = false
|
44
|
-
was_quoted = true
|
45
|
-
when "\\"
|
46
|
-
is_escaping = true
|
47
|
-
else
|
48
|
-
current_item << token
|
49
|
-
end
|
50
|
-
else
|
51
|
-
case token
|
52
|
-
when "\\"
|
53
|
-
is_escaping = true
|
54
|
-
when ','
|
55
|
-
add_item_to_array(array, current_item, was_quoted)
|
56
|
-
current_item = ''
|
57
|
-
was_quoted = false
|
58
|
-
when '"'
|
59
|
-
is_quoted = true
|
60
|
-
when '{'
|
61
|
-
internal_items = []
|
62
|
-
local_index,internal_items = parse_array_contents(internal_items, string, local_index + 1)
|
63
|
-
array.push(internal_items)
|
64
|
-
when '}'
|
65
|
-
add_item_to_array(array, current_item, was_quoted)
|
66
|
-
return local_index,array
|
67
|
-
else
|
68
|
-
current_item << token
|
69
|
-
end
|
70
|
-
end
|
71
|
-
end
|
72
|
-
|
73
|
-
local_index += 1
|
74
|
-
end
|
75
|
-
return local_index,array
|
76
|
-
end
|
77
|
-
|
78
|
-
def add_item_to_array(array, current_item, quoted)
|
79
|
-
if current_item.length == 0
|
80
|
-
elsif !quoted && current_item == 'NULL'
|
81
|
-
array.push nil
|
82
|
-
else
|
83
|
-
array.push current_item
|
84
|
-
end
|
85
|
-
end
|
86
|
-
|
87
|
-
end
|
88
|
-
end
|
89
|
-
end
|