pg_data_encoder 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
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([25].pack("N")) # I think is used to determine string data type
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 dimention array for now
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 dimention array for now
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")
@@ -1,3 +1,3 @@
1
1
  module PgDataEncoder
2
- VERSION = "0.0.3"
2
+ VERSION = "0.0.4"
3
3
  end
@@ -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 [1, "hello", ["hi", "jim"]]
32
+ encoder.add [["hi", "jim"]]
33
33
  encoder.close
34
34
  io = encoder.get_io
35
- existing_data = filedata("array_with_two.dat")
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 from tempfile correctly' do
43
- encoder = PgDataEncoder::EncodeForCopy.new(:use_tempfile => true)
44
- encoder.add [1, "hi", ["hi", "there", "rubyist"]]
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("3_column_array.dat")
47
+ existing_data = filedata("big_str_array.dat")
48
48
  str = io.read
49
- io.class.name.should == "Tempfile"
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.3
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-04 00:00:00.000000000 Z
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