pg_data_encoder 0.0.3 → 0.0.4
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.
- data/README.md +1 -1
- data/lib/pg_data_encoder/encode_for_copy.rb +3 -3
- data/lib/pg_data_encoder/version.rb +1 -1
- data/spec/fixtures/array_with_two2.dat +0 -0
- data/spec/fixtures/big_str_array.dat +0 -0
- data/spec/fixtures/big_str_array2.dat +0 -0
- data/spec/fixtures/just_an_array.dat +0 -0
- data/spec/fixtures/just_an_array2.dat +0 -0
- data/spec/verify_data_formats_spec.rb +43 -7
- metadata +12 -2
data/README.md
CHANGED
@@ -63,7 +63,7 @@ or
|
|
63
63
|
|
64
64
|
## Added type support
|
65
65
|
|
66
|
-
Currently it supports Integers, Strings, Hstore, Floats (double precision), Timestamp
|
66
|
+
Currently it supports Integers, Strings, Hstore, Floats (double precision), Timestamp, Array (integer and string single dimension)
|
67
67
|
|
68
68
|
## Contributing
|
69
69
|
|
@@ -73,9 +73,9 @@ module PgDataEncoder
|
|
73
73
|
array_io.write([1].pack("N")) # unknown
|
74
74
|
array_io.write([0].pack("N")) # unknown
|
75
75
|
|
76
|
-
array_io.write([
|
76
|
+
array_io.write([1043].pack("N")) # I think is used to determine string data type
|
77
77
|
array_io.write([field.size].pack("N"))
|
78
|
-
array_io.write([1].pack("N")) # forcing single
|
78
|
+
array_io.write([1].pack("N")) # forcing single dimension array for now
|
79
79
|
|
80
80
|
field.each_with_index {|val, index|
|
81
81
|
buf = val.to_s.encode("UTF-8")
|
@@ -89,7 +89,7 @@ module PgDataEncoder
|
|
89
89
|
|
90
90
|
array_io.write([23].pack("N")) # I think is used to detemine int data type
|
91
91
|
array_io.write([field.size].pack("N"))
|
92
|
-
array_io.write([1].pack("N")) # forcing single
|
92
|
+
array_io.write([1].pack("N")) # forcing single dimension array for now
|
93
93
|
|
94
94
|
field.each_with_index {|val, index|
|
95
95
|
buf = [val.to_i].pack("N")
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
@@ -29,28 +29,64 @@ describe "generating data" do
|
|
29
29
|
|
30
30
|
it 'should encode array data correctly' do
|
31
31
|
encoder = PgDataEncoder::EncodeForCopy.new
|
32
|
-
encoder.add [
|
32
|
+
encoder.add [["hi", "jim"]]
|
33
33
|
encoder.close
|
34
34
|
io = encoder.get_io
|
35
|
-
existing_data = filedata("
|
35
|
+
existing_data = filedata("array_with_two2.dat")
|
36
36
|
str = io.read
|
37
37
|
io.class.name.should == "StringIO"
|
38
38
|
str.force_encoding("ASCII-8BIT")
|
39
39
|
str.should == existing_data
|
40
40
|
end
|
41
41
|
|
42
|
-
it 'should encode array data
|
43
|
-
encoder = PgDataEncoder::EncodeForCopy.new
|
44
|
-
encoder.add [
|
42
|
+
it 'should encode string array data correctly' do
|
43
|
+
encoder = PgDataEncoder::EncodeForCopy.new
|
44
|
+
encoder.add [['asdfasdfasdfasdf', 'asdfasdfasdfasdfadsfadf', '1123423423423']]
|
45
45
|
encoder.close
|
46
46
|
io = encoder.get_io
|
47
|
-
existing_data = filedata("
|
47
|
+
existing_data = filedata("big_str_array.dat")
|
48
48
|
str = io.read
|
49
|
-
io.class.name.should == "
|
49
|
+
io.class.name.should == "StringIO"
|
50
50
|
str.force_encoding("ASCII-8BIT")
|
51
51
|
str.should == existing_data
|
52
52
|
end
|
53
53
|
|
54
|
+
it 'should encode string array with big string int' do
|
55
|
+
encoder = PgDataEncoder::EncodeForCopy.new
|
56
|
+
encoder.add [["182749082739172"]]
|
57
|
+
encoder.close
|
58
|
+
io = encoder.get_io
|
59
|
+
existing_data = filedata("just_an_array2.dat")
|
60
|
+
str = io.read
|
61
|
+
io.class.name.should == "StringIO"
|
62
|
+
str.force_encoding("ASCII-8BIT")
|
63
|
+
str.should == existing_data
|
64
|
+
end
|
65
|
+
|
66
|
+
it 'should encode string array data correctly' do
|
67
|
+
encoder = PgDataEncoder::EncodeForCopy.new
|
68
|
+
encoder.add [['asdfasdfasdfasdf', 'asdfasdfasdfasdfadsfadf']]
|
69
|
+
encoder.close
|
70
|
+
io = encoder.get_io
|
71
|
+
existing_data = filedata("big_str_array2.dat")
|
72
|
+
str = io.read
|
73
|
+
io.class.name.should == "StringIO"
|
74
|
+
str.force_encoding("ASCII-8BIT")
|
75
|
+
str.should == existing_data
|
76
|
+
end
|
77
|
+
|
78
|
+
#it 'should encode array data from tempfile correctly' do
|
79
|
+
# encoder = PgDataEncoder::EncodeForCopy.new(:use_tempfile => true)
|
80
|
+
# encoder.add [1, "hi", ["hi", "there", "rubyist"]]
|
81
|
+
# encoder.close
|
82
|
+
# io = encoder.get_io
|
83
|
+
# existing_data = filedata("3_column_array.dat")
|
84
|
+
# str = io.read
|
85
|
+
# io.class.name.should == "Tempfile"
|
86
|
+
# str.force_encoding("ASCII-8BIT")
|
87
|
+
# str.should == existing_data
|
88
|
+
#end
|
89
|
+
|
54
90
|
it 'should encode integer array data from tempfile correctly' do
|
55
91
|
encoder = PgDataEncoder::EncodeForCopy.new(:use_tempfile => true)
|
56
92
|
encoder.add [[1,2,3]]
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pg_data_encoder
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.4
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-10-
|
12
|
+
date: 2013-10-08 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rspec
|
@@ -66,8 +66,13 @@ files:
|
|
66
66
|
- spec/fixtures/3_col_hstore.txt
|
67
67
|
- spec/fixtures/3_column_array.dat
|
68
68
|
- spec/fixtures/array_with_two.dat
|
69
|
+
- spec/fixtures/array_with_two2.dat
|
70
|
+
- spec/fixtures/big_str_array.dat
|
71
|
+
- spec/fixtures/big_str_array2.dat
|
69
72
|
- spec/fixtures/float.dat
|
70
73
|
- spec/fixtures/intarray.dat
|
74
|
+
- spec/fixtures/just_an_array.dat
|
75
|
+
- spec/fixtures/just_an_array2.dat
|
71
76
|
- spec/fixtures/output.dat
|
72
77
|
- spec/fixtures/timestamp.dat
|
73
78
|
- spec/spec_helper.rb
|
@@ -103,8 +108,13 @@ test_files:
|
|
103
108
|
- spec/fixtures/3_col_hstore.txt
|
104
109
|
- spec/fixtures/3_column_array.dat
|
105
110
|
- spec/fixtures/array_with_two.dat
|
111
|
+
- spec/fixtures/array_with_two2.dat
|
112
|
+
- spec/fixtures/big_str_array.dat
|
113
|
+
- spec/fixtures/big_str_array2.dat
|
106
114
|
- spec/fixtures/float.dat
|
107
115
|
- spec/fixtures/intarray.dat
|
116
|
+
- spec/fixtures/just_an_array.dat
|
117
|
+
- spec/fixtures/just_an_array2.dat
|
108
118
|
- spec/fixtures/output.dat
|
109
119
|
- spec/fixtures/timestamp.dat
|
110
120
|
- spec/spec_helper.rb
|