odbc_adapter 4.2.1 → 4.2.2
Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fbd0b6dc4aa68cca8d175e4d4ea3aac029c78300
|
4
|
+
data.tar.gz: fd5089faad806cd2413071a0949e8f7ad2400d65
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5d93be6a23fadd321da4f2ccab7a2ee975ae0416c2b0f0a15cf4158984f3f4ef527cbc1b39efe58a3aee3297a0a7c16b2ee33510346f62e61f84365e675dcab7
|
7
|
+
data.tar.gz: 6174627985dc8a96bc62492a9c7f94b7851e2f51714781d015f22483e939343ed8f07b3cf664b72eb91c73b34105bcc1194453a16ff95de88fa50cb3230c6d1d
|
data/bin/console
CHANGED
@@ -2,60 +2,6 @@
|
|
2
2
|
|
3
3
|
require 'bundler/setup'
|
4
4
|
require 'odbc_adapter'
|
5
|
-
require 'pry'
|
6
5
|
|
7
|
-
require '
|
8
|
-
|
9
|
-
# Here until we upgrade the ODBC driver
|
10
|
-
class DecimalCaster
|
11
|
-
attr_reader :column
|
12
|
-
|
13
|
-
def initialize(column)
|
14
|
-
@column = column
|
15
|
-
end
|
16
|
-
|
17
|
-
def cast(value)
|
18
|
-
return if value.nil?
|
19
|
-
column.scale.zero? ? value.to_i : value.to_f
|
20
|
-
end
|
21
|
-
end
|
22
|
-
|
23
|
-
# Handles strings that aren't utf-8 encoded
|
24
|
-
class StringEncodingCaster
|
25
|
-
def cast(value)
|
26
|
-
value.is_a?(String) ? value.force_encoding('UTF-8') : value
|
27
|
-
end
|
28
|
-
end
|
29
|
-
|
30
|
-
def quote_column_name(name)
|
31
|
-
name.to_s
|
32
|
-
end
|
33
|
-
|
34
|
-
private
|
35
|
-
|
36
|
-
# Monkey-patch the type casting for SQL_DECIMAL columns until we upgrade the ODBC driver
|
37
|
-
def dbms_type_cast(columns, values)
|
38
|
-
casters = Hash.new { |h, k| h[k] = [StringEncodingCaster.new] }
|
39
|
-
|
40
|
-
columns.each_with_index do |column, idx|
|
41
|
-
casters[idx] << DecimalCaster.new(column) if column.type == ODBC::SQL_DECIMAL
|
42
|
-
end
|
43
|
-
|
44
|
-
values.each do |row|
|
45
|
-
row.each_index do |idx|
|
46
|
-
casters[idx].each { |caster| row[idx] = caster.cast(row[idx]) }
|
47
|
-
end
|
48
|
-
end
|
49
|
-
|
50
|
-
values
|
51
|
-
end
|
52
|
-
end
|
53
|
-
|
54
|
-
ActiveRecord::Base.establish_connection(adapter: 'odbc', dsn: 'LocalyticsProductionSnowflake')
|
55
|
-
|
56
|
-
binding.pry
|
57
|
-
|
58
|
-
# class FactSession < ActiveRecord::Base
|
59
|
-
# end
|
60
|
-
#
|
61
|
-
# puts FactSession.where(device_new: true).to_sql
|
6
|
+
require 'irb'
|
7
|
+
IRB.start
|
@@ -7,7 +7,7 @@ module ODBCAdapter
|
|
7
7
|
include Arel::Visitors::BindVisitor
|
8
8
|
end
|
9
9
|
|
10
|
-
PRIMARY_KEY = 'INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY'
|
10
|
+
PRIMARY_KEY = 'INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY'.freeze
|
11
11
|
|
12
12
|
def truncate(table_name, name = nil)
|
13
13
|
execute("TRUNCATE TABLE #{quote_table_name(table_name)}", name)
|
@@ -7,7 +7,13 @@ module ODBCAdapter
|
|
7
7
|
include Arel::Visitors::BindVisitor
|
8
8
|
end
|
9
9
|
|
10
|
-
|
10
|
+
BOOLEAN_TYPE = 'bool'.freeze
|
11
|
+
PRIMARY_KEY = 'SERIAL PRIMARY KEY'.freeze
|
12
|
+
|
13
|
+
# Override to handle booleans appropriately
|
14
|
+
def native_database_types
|
15
|
+
@native_database_types ||= super.merge(boolean: { name: 'bool' })
|
16
|
+
end
|
11
17
|
|
12
18
|
# Filter for ODBCAdapter#tables
|
13
19
|
# Omits table from #tables if table_filter returns true
|
data/lib/odbc_adapter/version.rb
CHANGED